diff --git a/Cryptid/Cryptid.lua b/Cryptid/Cryptid.lua index 6094964..c297f2e 100644 --- a/Cryptid/Cryptid.lua +++ b/Cryptid/Cryptid.lua @@ -5,1597 +5,171 @@ --- MOD_AUTHOR: [MathIsFun_, Cryptid and Balatro Discords] --- MOD_DESCRIPTION: Adds unbalanced ideas to Balatro. --- BADGE_COLOUR: 708b91 ---- DEPENDENCIES: [Talisman>=2.0.0-beta8<=2.0.9, Steamodded>=1.0.0~ALPHA-1225a<=1.0.0~ALPHA-1304a] ---- VERSION: 0.5.3c +--- DEPENDENCIES: [Talisman>=2.0.9, Steamodded>=1.0.0~ALPHA-1312c] +--- VERSION: 0.5.4 --- PRIORITY: 2147483647 ---------------------------------------------- ------------MOD CODE ------------------------- --- Currently there's no rhyme or reason to how the contents of this file are organized. It's kind of just an "anything goes" sort of file. --- If you're learning about Cryptid's codebase, the files in the Items folder are generally much more organized. +-- Welcome to the Cryptid source code! +-- This is the main file for the mod, where everything is loaded and initialized. +-- If you're looking for a specific feature, browse the Items folder to see how it is implemented. +-- If you're looking for a specific function, check the lib folder to see if it is there. --- Enables debug features (I think this is currently useless.) ---Cryptid.debug = true - --- Save the mod path permanently. -local mod_path = "" .. SMODS.current_mod.path --- Load Options +-- Initialize some important variables +if not Cryptid then + Cryptid = {} +end +local mod_path = "" .. SMODS.current_mod.path -- this path changes when each mod is loaded, but the local variable will retain Cryptid's path +Cryptid.path = mod_path Cryptid_config = SMODS.current_mod.config -- This will save the current state even when settings are modified Cryptid.enabled = copy_table(Cryptid_config) ---backwards compat moment -cry_enable_jokers = Cryptid.enabled["Misc. Jokers"] -cry_enable_epics = Cryptid.enabled["Epic Jokers"] -cry_enable_exotics = Cryptid.enabled["Exotic Jokers"] -cry_minvasion = Cryptid.enabled["M Jokers"] --- Gradient isn't included since other logic seems to also handle it -SMODS.Rarity{ - key = "exotic", - loc_txt = {}, - badge_colour = HEX('708b91'), -} - -SMODS.Rarity{ - key = "epic", - loc_txt = {}, - badge_colour = HEX('ef0098'), - default_weight = 0.003, - pools = {["Joker"] = true}, - get_weight = function(self, weight, object_type) - -- The game shouldn't try generating Epic Jokers when they are disabled - if Cryptid_config["Epic Jokers"] then - return 0.003 - else - return 0 - end - end, -} - -SMODS.Rarity{ - key = "candy", - loc_txt = {}, - badge_colour = HEX("e275e6"), -} - -SMODS.Rarity{ - key = "cursed", - loc_txt = {}, - badge_colour = HEX("474931"), -} - ---Add Event type - used for events in e.g. Chocolate Dice -SMODS.Events = {} -SMODS.Event = SMODS.GameObject:extend{ - obj_table = SMODS.Events, - obj_buffer = {}, - required_params = { - "key" +-- Enable optional features +SMODS.current_mod.optional_features = { + retrigger_joker = true, + post_trigger = true, + cardareas = { + unscored = true, }, - inject = function() end, - set = "Event", - class_prefix = "ev", - -- This should be called to start an event. - start = function(self) - G.GAME.events[self.key] = true - end, - -- This should be called to finish an event. - finish = function(self) - G.GAME.events[self.key] = nil - end, - -- Runs once before and after jokers, as well as a few special cases - calculate = function(self, context) - end, - -- used for Chocolate Die tooltips, can maybe be repurposed later - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { set = "Other", key = self.key } - end, -} ---Calculate events on cash out -local gfco = G.FUNCS.cash_out -G.FUNCS.cash_out = function(e) - local ret = gfco(e) - for k, v in pairs(SMODS.Events) do - if G.GAME.events[k] then - v:calculate({cash_out = true}) - end - end - return ret -end --- Calculate events on start of shop -local guis = G.UIDEF.shop -G.UIDEF.shop = function(e) - local ret = guis(e) - for k, v in pairs(SMODS.Events) do - if G.GAME.events[k] then - v:calculate({start_shop = true}) - end - end - return ret -end --- Calculations for Please Take One. Incredibly scuffed and should get moved to Spooky file later -local gure = Game.update_round_eval -function Game:update_round_eval(dt) - if G.GAME.events.ev_cry_choco6 and not pack_opened and not G.STATE_COMPLETE then - G.STATE_COMPLETE = true - for k, v in pairs(SMODS.Events) do - if G.GAME.events[k] then - v:calculate({pre_cash = true}) - end - end - return end - if G.GAME.events.ev_cry_choco6 and pack_opened and G.STATE_COMPLETE and not G.round_eval then G.STATE_COMPLETE = false; return end - gure(self, dt) -end ---Add Unique consumable set - used for unique consumables that aren't normally obtained (e.g. Potion) -SMODS.ConsumableType{ - key = "Unique", - primary_colour = G.C.MONEY, - secondary_colour = G.C.MONEY, - collection_rows = { 4, 4 }, - shop_rate = 0.0, - loc_txt = {}, - default = "c_cry_potion", - can_stack = false, - can_divide = false, -} --- Create G.GAME.events when starting a run, so there's no errors -local gigo = Game.init_game_object -function Game:init_game_object() - local g = gigo(self) - g.events = {} - return g -end - ---Changes main menu colors and stuff -if Cryptid.enabled["Menu"] then - local oldfunc = Game.main_menu - Game.main_menu = function(change_context) - local ret = oldfunc(change_context) - -- adds a Cryptid spectral to the main menu - local newcard = create_card('Spectral',G.title_top, nil, nil, nil, nil, 'c_cryptid', 'elial1') - -- recenter the title - G.title_top.T.w = G.title_top.T.w*1.7675 - G.title_top.T.x = G.title_top.T.x - 0.8 - G.title_top:emplace(newcard) - -- make the card look the same way as the title screen Ace of Spades - newcard.T.w = newcard.T.w * 1.1*1.2 - newcard.T.h = newcard.T.h *1.1*1.2 - newcard.no_ui = true - - -- make the title screen use different background colors - G.SPLASH_BACK:define_draw_steps({{ - shader = 'splash', - send = { - {name = 'time', ref_table = G.TIMERS, ref_value = 'REAL_SHADER'}, - {name = 'vort_speed', val = 0.4}, - {name = 'colour_1', ref_table = G.C, ref_value = 'CRY_EXOTIC'}, - {name = 'colour_2', ref_table = G.C, ref_value = 'DARK_EDITION'}, - }}}) - return ret - end -end - ---Localization colors -local lc = loc_colour -function loc_colour(_c, _default) - if not G.ARGS.LOC_COLOURS then - lc() - end - G.ARGS.LOC_COLOURS.cry_code = G.C.SET.Code - G.ARGS.LOC_COLOURS.heart = G.C.SUITS.Hearts - G.ARGS.LOC_COLOURS.diamond = G.C.SUITS.Diamonds - G.ARGS.LOC_COLOURS.spade = G.C.SUITS.Spades - G.ARGS.LOC_COLOURS.club = G.C.SUITS.Clubs - for k, v in pairs(G.C) do - if string.len(k) > 4 and string.sub(k, 1, 4) == 'CRY_' then - G.ARGS.LOC_COLOURS[string.lower(k)] = v - end - end - return lc(_c, _default) -end - --- Midground sprites - used for Exotic Jokers and Gateway --- don't really feel like explaining this deeply, it's based on code for The Soul and Legendary Jokers -local set_spritesref = Card.set_sprites -function Card:set_sprites(_center, _front) - set_spritesref(self, _center, _front) - if _center and _center.name == "cry-Gateway" then - self.children.floating_sprite = Sprite( - self.T.x, - self.T.y, - self.T.w, - self.T.h, - G.ASSET_ATLAS[_center.atlas or _center.set], - { x = 2, y = 0 } - ) - self.children.floating_sprite.role.draw_major = self - self.children.floating_sprite.states.hover.can = false - self.children.floating_sprite.states.click.can = false - self.children.floating_sprite2 = Sprite( - self.T.x, - self.T.y, - self.T.w, - self.T.h, - G.ASSET_ATLAS[_center.atlas or _center.set], - { x = 1, y = 0 } - ) - self.children.floating_sprite2.role.draw_major = self - self.children.floating_sprite2.states.hover.can = false - self.children.floating_sprite2.states.click.can = false - end - if _center and _center.soul_pos and _center.soul_pos.extra then - self.children.floating_sprite2 = Sprite( - self.T.x, - self.T.y, - self.T.w, - self.T.h, - G.ASSET_ATLAS[_center.atlas or _center.set], - _center.soul_pos.extra - ) - self.children.floating_sprite2.role.draw_major = self - self.children.floating_sprite2.states.hover.can = false - self.children.floating_sprite2.states.click.can = false - end -end ---this is where the code starts to get really scuffed... I'd recommend closing your eyes ---anyway this function basically hardcodes unredeeming a voucher -function cry_debuff_voucher(center) -- sorry for all the mess here... - local new_center = G.GAME.cry_voucher_centers[center] - local center_table = { - name = new_center and new_center.name, - extra = new_center and new_center.config.extra, - } - if center_table.name == "Overstock" or center_table.name == "Overstock Plus" then - G.E_MANAGER:add_event(Event({ - func = function() - change_shop_size(-center_table.extra) - return true - end, - })) - end - if center_table.name == "Tarot Merchant" or center_table.name == "Tarot Tycoon" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.tarot_rate = G.GAME.tarot_rate / center_table.extra - return true - end, - })) - end - if center_table.name == "Planet Merchant" or center_table.name == "Planet Tycoon" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.planet_rate = G.GAME.planet_rate / center_table.extra - return true - end, - })) - end - if center_table.name == "Hone" or center_table.name == "Glow Up" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.edition_rate = G.GAME.edition_rate / center_table.extra - return true - end, - })) - end - if center_table.name == "Magic Trick" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.playing_card_rate = 0 - return true - end, - })) - end - if center_table.name == "Crystal Ball" then - G.E_MANAGER:add_event(Event({ - func = function() - G.consumeables.config.card_limit = G.consumeables.config.card_limit - center_table.extra - return true - end, - })) - end - if center_table.name == "Clearance Sale" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.discount_percent = 0 - for k, v in pairs(G.I.CARD) do - if v.set_cost then - v:set_cost() - end - end - return true - end, - })) - end - if center_table.name == "Liquidation" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.discount_percent = 25 - for k, v in pairs(G.I.CARD) do - if v.set_cost then - v:set_cost() - end - end - return true - end, - })) - end - if center_table.name == "Reroll Surplus" or center_table.name == "Reroll Glut" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost + center_table.extra - G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost + center_table.extra) - return true - end, - })) - end - if center_table.name == "Seed Money" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.interest_cap = 25 --note: does not account for potential deck effects - return true - end, - })) - end - if center_table.name == "Money Tree" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.interest_cap = G.P_CENTERS.v_seed_money.extra - return true - end, - })) - end - if center_table.name == "Grabber" or center_table.name == "Nacho Tong" then - G.GAME.round_resets.hands = G.GAME.round_resets.hands - center_table.extra - ease_hands_played(-center_table.extra) - end - if center_table.name == "Paint Brush" or center_table.name == "Palette" then - G.hand:change_size(-center_table.extra) - end - if center_table.name == "Wasteful" or center_table.name == "Recyclomancy" then - G.GAME.round_resets.discards = G.GAME.round_resets.discards - center_table.extra - ease_discard(-center_table.extra) - end - if center_table.name == "Antimatter" then - G.E_MANAGER:add_event(Event({ - func = function() - if G.jokers then - G.jokers.config.card_limit = G.jokers.config.card_limit - center_table.extra - end - return true - end, - })) - end - if center_table.name == "Hieroglyph" or center_table.name == "Petroglyph" then - ease_ante(center_table.extra) - G.GAME.round_resets.blind_ante = G.GAME.round_resets.blind_ante or G.GAME.round_resets.ante - G.GAME.round_resets.blind_ante = G.GAME.round_resets.blind_ante + center_table.extra - - if center_table.name == "Hieroglyph" then - G.GAME.round_resets.hands = G.GAME.round_resets.hands + center_table.extra - ease_hands_played(center_table.extra) - end - if center_table.name == "Petroglyph" then - G.GAME.round_resets.discards = G.GAME.round_resets.discards + center_table.extra - ease_discard(center_table.extra) - end - end -end - -function cry_edition_to_table(edition) -- look mom i figured it out (this does NOT need to be a function) - if edition then - return { [edition] = true } - end -end - --- just dumping this garbage here --- this just ensures that extra voucher slots work as expected -function cry_bonusvouchermod(mod) - if not G.GAME.shop then return end - G.GAME.cry_bonusvouchercount = G.GAME.cry_bonusvouchercount + mod - if G.shop_jokers and G.shop_jokers.cards then - G.shop:recalculate() - if mod > 0 then -- not doing minus mod because it'd be janky and who really cares - for i = 1, G.GAME.cry_bonusvouchercount+1 - #G.shop_vouchers.cards do - local curr_bonus = G.GAME.current_round.cry_bonusvouchers - curr_bonus[#curr_bonus+1] = get_next_voucher_key() - - - -- this could be a function but it's done like what... 3 times? it doesn't matter rn - - local card = Card(G.shop_vouchers.T.x + G.shop_vouchers.T.w/2, - G.shop_vouchers.T.y, G.CARD_W, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS[curr_bonus[#curr_bonus]],{bypass_discovery_center = true, bypass_discovery_ui = true}) - card.shop_cry_bonusvoucher = #curr_bonus - cry_misprintize(card) - if G.GAME.events.ev_cry_choco2 then - card.misprint_cost_fac = (card.misprint_cost_fac or 1) * 2 - card:set_cost() - end - if G.GAME.modifiers.cry_enable_flipped_in_shop and pseudorandom('cry_flip_vouch'..G.GAME.round_resets.ante) > 0.7 then - card.cry_flipped = true - end - create_shop_card_ui(card, 'Voucher', G.shop_vouchers) - card:start_materialize() - if G.GAME.current_round.cry_voucher_edition then - card:set_edition(G.GAME.current_round.cry_voucher_edition, true, true) - end - G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1 - G.shop_vouchers:emplace(card) - end - end - end -end - --- check if Director's Cut or Retcon offers a cheaper reroll price -function cry_cheapest_boss_reroll() - local dcut = G.GAME.cry_voucher_centers["v_directors_cut"].config.extra or 1e308 - local retc = G.GAME.cry_voucher_centers["v_retcon"].config.extra or 1e308 - if dcut < retc then - return dcut - else - return retc - end -end - --- generate a random edition (e.g. Antimatter Deck) -function cry_poll_random_edition() - local random_edition = pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_ant_edition")) - while random_edition.key == "e_base" do - random_edition = pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_ant_edition")) - end - ed_table = { [random_edition.key:sub(3)] = true } - return ed_table -end - -function cry_voucher_debuffed(name) -- simple function but idk - if G.GAME.voucher_sticker_index and G.GAME.voucher_sticker_index.perishable[name] then - if G.GAME.voucher_sticker_index.perishable[name] == 0 then - return true - end - end - return false -end - -function cry_voucher_pinned(name) - if G.GAME.voucher_sticker_index then - if G.GAME.voucher_sticker_index.pinned[name] then - return true - end - end - return false -end - --- gets a random, valid consumeable (used for Hammerspace, CCD Deck, Blessing, etc.) -function get_random_consumable(seed, excluded_flags, banned_card, pool, no_undiscovered) - -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating - excluded_flags = excluded_flags or { "hidden", "no_doe", "no_grc" } - local selection = "n/a" - local passes = 0 - local tries = 500 - while true do - tries = tries - 1 - passes = 0 - -- create a random consumable naively - local key = pseudorandom_element(pool or G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key - selection = G.P_CENTERS[key] - -- check if it is valid - if selection.discovered or not no_undiscovered then - for k, v in pairs(excluded_flags) do - if not center_no(selection, v, key, true) then - --Makes the consumable invalid if it's a specific card unless it's set to - --I use this so cards don't create copies of themselves (eg potential inf Blessing chain, Hammerspace from Hammerspace...) - if not banned_card or (banned_card and banned_card ~= key) then - passes = passes + 1 - end - end - end - end - -- use it if it's valid or we've run out of attempts - if passes >= #excluded_flags or tries <= 0 then - if tries <= 0 and no_undiscovered then - return G.P_CENTERS["c_strength"] - else - return selection - end - end - end -end - -function cry_get_next_voucher_edition() -- currently only for editions + sticker decks, can be modified if voucher stickering/editioning becomes more important - if G.GAME.modifiers.cry_force_edition then - return cry_edition_to_table(G.GAME.modifiers.cry_force_edition) - elseif G.GAME.modifiers.cry_force_random_edition then - return cry_poll_random_edition() - end -end --- code to generate Stickers for Vouchers, based on that for Jokers -function cry_get_next_voucher_stickers() - local eternal_perishable_poll = pseudorandom("cry_vet" .. (key_append or "") .. G.GAME.round_resets.ante) - local ret = { eternal = false, perishable = false, rental = false, pinned = false, banana = false } - if - (G.GAME.modifiers.cry_force_sticker == "eternal") - or G.GAME.modifiers.cry_sticker_sheet_plus - or ( - G.GAME.modifiers.cry_any_stickers - and (G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.8) - ) - then - ret.eternal = true - end - if G.GAME.modifiers.enable_perishables_in_shop and G.GAME.modifiers.cry_any_stickers then -- bloated as shit - if - not G.GAME.modifiers.cry_eternal_perishable_compat - and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) - then - ret.perishable = true - end - if - G.GAME.modifiers.cry_eternal_perishable_compat - and pseudorandom("cry_vper" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - then - ret.perishable = true - end - end - if (G.GAME.modifiers.cry_force_sticker == "perishable") or G.GAME.modifiers.cry_sticker_sheet_plus then - ret.perishable = true - end - if - G.GAME.modifiers.cry_force_sticker == "rental" - or G.GAME.modifiers.cry_sticker_sheet_plus - or ( - G.GAME.modifiers.cry_any_stickers - and ( - G.GAME.modifiers.enable_rentals_in_shop - and pseudorandom("cry_vssjr" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - ) - ) - then - ret.rental = true - end - if - G.GAME.modifiers.cry_force_sticker == "pinned" - or G.GAME.modifiers.cry_sticker_sheet_plus - or ( - G.GAME.modifiers.cry_any_stickers - and ( - G.GAME.modifiers.cry_enable_pinned_in_shop - and pseudorandom("cry_vpin" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - ) - ) - then - ret.pinned = true - end - if G.GAME.modifiers.cry_force_sticker == "banana" or G.GAME.modifiers.cry_sticker_sheet_plus then - ret.banana = true - end - if - not G.GAME.modifiers.cry_eternal_perishable_compat - and G.GAME.modifiers.enable_banana - and G.GAME.modifiers.cry_any_stickers - and (pseudorandom("cry_bpbanana" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7) - and (eternal_perishable_poll <= 0.7) - then - ret.banana = true - end - if - G.GAME.modifiers.cry_eternal_perishable_compat - and G.GAME.modifiers.enable_banana - and G.GAME.modifiers.cry_any_stickers - and (pseudorandom("cry_bpbanana" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7) - then - ret.banana = true - end - return ret -end - --- Calculates Rental sticker for Consumables -function Card:cry_calculate_consumeable_rental() - if self.ability.rental then - ease_dollars(-G.GAME.cry_consumeable_rental_rate) - card_eval_status_text(self, "dollars", -G.GAME.cry_consumeable_rental_rate) - end -end - --- Calculates Perishable sticker for Consumables -function Card:cry_calculate_consumeable_perishable() - if not self.ability.perish_tally then - self.ability.perish_tally = 1 - end - if self.ability.perishable and self.ability.perish_tally > 0 then - self.ability.perish_tally = 0 - card_eval_status_text( - self, - "extra", - nil, - nil, - nil, - { message = localize("k_disabled_ex"), colour = G.C.FILTER, delay = 0.45 } - ) - self:set_debuff() - end -end - --- Update the Cryptid member count using HTTPS -function update_cry_member_count() - if Cryptid.enabled["HTTPS Module"] == true then - if not GLOBAL_cry_member_update_thread then - -- start up the HTTPS thread if needed - local file_data = assert(NFS.newFileData(mod_path .. "https/thread.lua")) - GLOBAL_cry_member_update_thread = love.thread.newThread(file_data) - GLOBAL_cry_member_update_thread:start() - end - local old = GLOBAL_cry_member_count or 8830 - -- get the HTTPS thread's value for Cryptid members - local ret = love.thread.getChannel("member_count"):pop() - if ret then - GLOBAL_cry_member_count = string.match(ret, '"approximate_member_count"%s*:%s*(%d+)') -- string matching a json is odd but should be fine? - end - if not GLOBAL_cry_member_count then - GLOBAL_cry_member_count = old - -- Something failed, print the error - local error = love.thread.getChannel("member_error"):pop() - if error then - sendDebugMessage(error) - end - end - else - -- Use a fallback value if HTTPS is disabled (you all are awesome) - GLOBAL_cry_member_count = 8830 - end -end --- deal with Rigged and Fragile when scoring a playing card -local ec = eval_card -function eval_card(card, context) - if not card or card.will_shatter then - return - end - -- Store old probability for later reference - local ggpn = G.GAME.probabilities.normal - if card.ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local ret = ec(card, context) - if card.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - return ret -end --- deal wirh Rigged on Consumables -local uc = Card.use_consumeable -function Card:use_consumeable(area, copier) - local ggpn = G.GAME.probabilities.normal - if self.ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local ret = uc(self, area, copier) - if self.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - return ret -end - ---some functions to minimize the load on calculate_joker itself -function Card:cry_copy_ability() - local orig_ability = {} - if self.ability then - for i, j in pairs(self.ability) do - if (type(j) == "table") and is_number(j) then - orig_ability[i] = to_big(j) - elseif type(j) == "table" then - orig_ability[i] = {} - for i2, j2 in pairs(j) do - orig_ability[i][i2] = j2 - end - else - orig_ability[i] = j - end - end - end - return orig_ability -end -local cj = Card.calculate_joker - -function Card:cry_double_scale_calc(orig_ability, in_context_scaling) - if - self.ability.name ~= "cry-happyhouse" - and self.ability.name ~= "Acrobat" - and self.ability.name ~= "cry-sapling" - and self.ability.name ~= "cry-mstack" - and self.ability.name ~= "cry-notebook" - and self.ability.name ~= "Invisible Joker" - and self.ability.name ~= "cry-Old Invisible Joker" - then - local jkr = self - if jkr.ability and type(jkr.ability) == "table" then - if not G.GAME.cry_double_scale[jkr.sort_id] or not G.GAME.cry_double_scale[jkr.sort_id].ability then - if not G.GAME.cry_double_scale[jkr.sort_id] then - G.GAME.cry_double_scale[jkr.sort_id] = { ability = { double_scale = true } } - end - for k, v in pairs(jkr.ability) do - if type(jkr.ability[k]) ~= "table" then - G.GAME.cry_double_scale[jkr.sort_id].ability[k] = v - else - G.GAME.cry_double_scale[jkr.sort_id].ability[k] = {} - for _k, _v in pairs(jkr.ability[k]) do - G.GAME.cry_double_scale[jkr.sort_id].ability[k][_k] = _v - end - end - end - end - if G.GAME.cry_double_scale[jkr.sort_id] and not G.GAME.cry_double_scale[jkr.sort_id].scaler then - local dbl_info = G.GAME.cry_double_scale[jkr.sort_id] - if jkr.ability.name == "cry-Number Blocks" then - dbl_info.base = { "extra", "money" } - dbl_info.scaler = { "extra", "money_mod" } - dbl_info.scaler_base = jkr.ability.extra.money_mod - dbl_info.offset = 1 - end - if jkr.ability.name == "cry-Exponentia" then - dbl_info.base = { "extra", "Emult" } - dbl_info.scaler = { "extra", "Emult_mod" } - dbl_info.scaler_base = jkr.ability.extra.Emult_mod - dbl_info.offset = 1 - end - if jkr.ability.name == "cry-Redeo" then - dbl_info.base = { "extra", "money_req" } - dbl_info.scaler = { "extra", "money_mod" } - dbl_info.scaler_base = jkr.ability.extra.money_mod - dbl_info.offset = 1 - end - if jkr.ability.name == "cry-Chili Pepper" then - dbl_info.base = { "extra", "Xmult" } - dbl_info.scaler = { "extra", "Xmult_mod" } - dbl_info.scaler_base = jkr.ability.extra.Xmult_mod - dbl_info.offset = 1 - end - if jkr.ability.name == "cry-Scalae" then - dbl_info.base = { "extra", "shadow_scale" } - dbl_info.scaler = { "extra", "shadow_scale_mod" } - dbl_info.scaler_base = jkr.ability.extra.scale_mod - dbl_info.offset = 1 - end - if jkr.ability.name == "cry-mprime" then - dbl_info.base = { "extra", "mult" } - dbl_info.scaler = { "extra", "bonus" } - dbl_info.scaler_base = jkr.ability.extra.bonus - dbl_info.offset = 1 - end - if jkr.ability.name == "Yorick" then - dbl_info.base = { "x_mult" } - dbl_info.scaler = { "extra", "xmult" } --not kidding - dbl_info.scaler_base = 1 - dbl_info.offset = 1 - end - if jkr.ability.name == "Hologram" then - dbl_info.base = { "x_mult" } - dbl_info.scaler = { "extra" } - dbl_info.scaler_base = jkr.ability.extra - dbl_info.offset = 1 - end - if jkr.ability.name == "Gift Card" then - dbl_info.base = { "extra_value" } - dbl_info.scaler = { "extra" } - dbl_info.scaler_base = jkr.ability.extra - dbl_info.offset = 1 - end - if jkr.ability.name == "Throwback" then - dbl_info.base = { "x_mult" } - dbl_info.scaler = { "extra" } - dbl_info.scaler_base = jkr.ability.x_mult or 1 - dbl_info.offset = 1 - end - if jkr.ability.name == "Egg" then - dbl_info.base = { "extra_value" } - dbl_info.scaler = { "extra" } - dbl_info.scaler_base = jkr.ability.extra - dbl_info.offset = 1 - end - local default_modifiers = { - mult = 0, - h_mult = 0, - h_x_mult = 0, - h_dollars = 0, - p_dollars = 0, - t_mult = 0, - t_chips = 0, - x_mult = 1, - h_size = 0, - d_size = 0, - } - for k, v in pairs(jkr.ability) do - --extra_value is ignored because it can be scaled by Gift Card - if - k ~= "extra_value" - and dbl_info.ability[k] ~= v - and is_number(v) - and is_number(dbl_info.ability[k]) - then - dbl_info.base = { k } - local predicted_mod = math.abs(to_number(to_big(v)) - to_number(to_big(dbl_info.ability[k]))) - local best_key = { "" } - local best_coeff = 10 ^ 100 - for l, u in pairs(jkr.ability) do - if not (default_modifiers[l] and default_modifiers[l] == u) then - if l ~= k and is_number(u) then - if - to_number(to_big(predicted_mod / u)) >= 0.999 - and to_number(to_big(predicted_mod / u)) < to_number(to_big(best_coeff)) - then - best_coeff = to_number(to_big(predicted_mod / u)) - best_key = { l } - end - end - if type(jkr.ability[l]) == "table" then - for _l, _u in pairs(jkr.ability[l]) do - if - is_number(_u) - and to_number(to_big(predicted_mod / _u)) >= 0.999 - and to_number(to_big(predicted_mod / _u)) - < to_number(to_big(best_coeff)) - then - best_coeff = to_number(to_big(predicted_mod / _u)) - best_key = { l, _l } - end - end - end - end - end - dbl_info.scaler = best_key - end - if - type(jkr.ability[k]) == "table" - and type(dbl_info.ability) == "table" - and type(dbl_info.ability[k]) == "table" - then - for _k, _v in pairs(jkr.ability[k]) do - if - dbl_info.ability[k][_k] ~= _v - and is_number(_v) - and is_number(dbl_info.ability[k][_k]) - then - dbl_info.base = { k, _k } - local predicted_mod = math.abs(_v - dbl_info.ability[k][_k]) - local best_key = { "" } - local best_coeff = 10 ^ 100 - for l, u in pairs(jkr.ability) do - if is_number(u) and to_number(to_big(predicted_mod / u)) >= 0.999 then - if to_number(to_big(predicted_mod / u)) < to_number(to_big(best_coeff)) then - best_coeff = to_number(to_big(predicted_mod / u)) - best_key = { l } - end - end - if type(jkr.ability[l]) == "table" then - for _l, _u in pairs(jkr.ability[l]) do - if - (l ~= k or _l ~= _k) - and is_number(_u) - and to_number(to_big(predicted_mod / _u)) >= 0.999 - then - if - to_number(to_big(predicted_mod / _u)) - < to_number(to_big(best_coeff)) - then - best_coeff = to_number(to_big(predicted_mod / _u)) - best_key = { l, _l } - end - end - end - end - end - dbl_info.scaler = best_key - end - end - end - end - if dbl_info.scaler then - dbl_info.scaler_base = #dbl_info.scaler == 2 - and orig_ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - or orig_ability[dbl_info.scaler[1]] - dbl_info.offset = 1 - end - end - end - end - local orig_scale_base = nil - local orig_scale_scale = nil - if G.GAME.cry_double_scale[self.sort_id] and G.GAME.cry_double_scale[self.sort_id].scaler then - local jkr = self - local dbl_info = G.GAME.cry_double_scale[self.sort_id] - if #dbl_info.base == 2 then - if - not ( - type(jkr.ability) ~= "table" - or not orig_ability[dbl_info.base[1]] - or type(orig_ability[dbl_info.base[1]]) ~= "table" - or not orig_ability[dbl_info.base[1]][dbl_info.base[2]] - ) - then - orig_scale_base = orig_ability[dbl_info.base[1]][dbl_info.base[2]] - end - else - if jkr.ability[dbl_info.base[1]] then - orig_scale_base = orig_ability[dbl_info.base[1]] - end - end - if #dbl_info.scaler == 2 then - if - not (not orig_ability[dbl_info.scaler[1]] or not orig_ability[dbl_info.scaler[1]][dbl_info.scaler[2]]) - then - orig_scale_scale = orig_ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - end - else - if orig_ability[dbl_info.scaler[1]] then - orig_scale_scale = orig_ability[dbl_info.scaler[1]] - end - end - end - - if orig_scale_base and orig_scale_scale then - local new_scale_base = nil - local true_base = nil - local jkr = self - local dbl_info = G.GAME.cry_double_scale[self.sort_id] - if #dbl_info.base == 2 then - if - not ( - type(jkr.ability) ~= "table" - or not jkr.ability[dbl_info.base[1]] - or type(jkr.ability[dbl_info.base[1]]) ~= "table" - or not jkr.ability[dbl_info.base[1]][dbl_info.base[2]] - ) - then - new_scale_base = jkr.ability[dbl_info.base[1]][dbl_info.base[2]] - end - else - if jkr.ability[dbl_info.base[1]] then - new_scale_base = jkr.ability[dbl_info.base[1]] - end - end - true_base = dbl_info.scaler_base - if - new_scale_base and ((to_big(math.abs(new_scale_base - orig_scale_base)) > to_big(0)) or in_context_scaling) - then - for i = 1, #G.jokers.cards do - local obj = G.jokers.cards[i].config.center - if obj.cry_scale_mod and type(obj.cry_scale_mod) == "function" then - local ggpn = G.GAME.probabilities.normal - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local o = obj:cry_scale_mod( - G.jokers.cards[i], - jkr, - orig_scale_scale, - true_base, - orig_scale_base, - new_scale_base - ) - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if o then - if #dbl_info.scaler == 2 then - if - not ( - not jkr.ability[dbl_info.scaler[1]] - or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - ) - then - jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o - orig_scale_scale = o - end - else - if jkr.ability[dbl_info.scaler[1]] then - jkr.ability[dbl_info.scaler[1]] = o - orig_scale_scale = o - end - end - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - end - local reps = {} - for i2 = 1, #G.jokers.cards do - local _card = G.jokers.cards[i2] - local ggpn = G.GAME.probabilities.normal - if _card.ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local check = - cj(G.jokers.cards[i2], { retrigger_joker_check = true, other_card = G.jokers.cards[i] }) - if _card.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if type(check) == "table" then - reps[i2] = check and check.repetitions and check or 0 - else - reps[i2] = 0 - end - if - G.jokers.cards[i2] == G.jokers.cards[i] - and G.jokers.cards[i].edition - and G.jokers.cards[i].edition.retriggers - then - local old_repetitions = reps[i] ~= 0 and reps[i].repetitions or 0 - local check = false --G.jokers.cards[i]:calculate_retriggers() - if check and check.repetitions then - check.repetitions = check.repetitions + old_repetitions - reps[i] = check - end - end - end - for i0, j in ipairs(reps) do - if (type(j) == "table") and j.repetitions and (j.repetitions > 0) then - for r = 1, j.repetitions do - card_eval_status_text(j.card, "jokers", nil, nil, nil, j) - local ggpn = G.GAME.probabilities.normal - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local o = obj:cry_scale_mod( - G.jokers.cards[i], - jkr, - orig_scale_scale, - true_base, - orig_scale_base, - new_scale_base - ) - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if o then - if #dbl_info.scaler == 2 then - if - not ( - not jkr.ability[dbl_info.scaler[1]] - or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - ) - then - jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o - orig_scale_scale = o - end - else - if jkr.ability[dbl_info.scaler[1]] then - jkr.ability[dbl_info.scaler[1]] = o - orig_scale_scale = o - end - end - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - end - end - end - end - end - end - end - end -end - -function Card:calculate_joker(context) - --Calculate events - if self == G.jokers.cards[1] then - for k, v in pairs(SMODS.Events) do - if G.GAME.events[k] then - context.pre_jokers = true - v:calculate(context) - context.pre_jokers = nil - end - end - end - local active_side = self - if next(find_joker("cry-Flip Side")) and not context.dbl_side and self.edition and self.edition.cry_double_sided then - self:init_dbl_side() - active_side = self.dbl_side - if context.callback then - local m = context.callback - context.callback = function(card,a,b) - m(self,a,b) - end - context.dbl_side = true - end - end - if active_side.will_shatter then - return - end - local ggpn = G.GAME.probabilities.normal - if not G.GAME.cry_double_scale then - G.GAME.cry_double_scale = { double_scale = true } --doesn't really matter what's in here as long as there's something - end - if active_side.ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local orig_ability = active_side:cry_copy_ability() - local in_context_scaling = false - local callback = context.callback - if active_side.ability.cry_possessed then - if not ((context.individual and not context.repetition) or (context.joker_main) or (context.other_joker and not context.post_trigger)) then - return - end - context.callback = nil - end - local ret, trig = cj(active_side, context) - if active_side.ability.cry_possessed and ret then - if ret.mult_mod then ret.mult_mod = ret.mult_mod * -1 end - if ret.Xmult_mod then ret.Xmult_mod = ret.Xmult_mod ^ -1 end - if ret.mult then ret.mult = ret.mult * -1 end - if ret.x_mult then ret.x_mult = ret.x_mult ^ -1 end - ret.e_mult = nil - ret.ee_mult = nil - ret.eee_mult = nil - ret.hyper_mult = nil - ret.Emult_mod = nil - ret.EEmult_mod = nil - ret.EEEmult_mod = nil - ret.hypermult_mod = nil - if ret.chip_mod then ret.chip_mod = ret.chip_mod * -1 end - if ret.Xchip_mod then ret.Xchip_mod = ret.Xchip_mod ^ -1 end - if ret.chips then ret.chips = ret.chips * -1 end - if ret.x_chips then ret.x_chips = ret.x_chips ^ -1 end - ret.e_chips = nil - ret.ee_chips = nil - ret.eee_chips = nil - ret.hyper_chips = nil - ret.Echip_mod = nil - ret.EEchip_mod = nil - ret.EEEchip_mod = nil - ret.hyperchip_mod = nil - if ret.message then - -- TODO - this is a hacky way to do this, but it works for now - if type(ret.message) == "table" then - ret.message = ret.message[1] - end - if ret.message:sub(1,1) == "+" then - ret.message = "-" .. ret.message:sub(2) - elseif ret.message:sub(1,1) == "X" then - ret.message = "/" .. ret.message:sub(2) - else - ret.message = ret.message .. "?" - end - end - callback(context.blueprint_card or self, ret, context.retrigger_joker) - end - if not context.blueprint and (active_side.ability.set == "Joker") and not active_side.debuff then - if ret or trig then - in_context_scaling = true - end - end - if active_side.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - - active_side:cry_double_scale_calc(orig_ability, in_context_scaling) - - --Calculate events - if self == G.jokers.cards[#G.jokers.cards] then - for k, v in pairs(SMODS.Events) do - if G.GAME.events[k] then - context.post_jokers = true - v:calculate(context) - context.post_jokers = nil - end - end - end - return ret, trig -end - -function exponentia_scale_mod(self, orig_scale_scale, orig_scale_base, new_scale_base) - local jkr = self - local dbl_info = G.GAME.cry_double_scale[jkr.sort_id] - if jkr.ability and type(jkr.ability) == "table" then - if not G.GAME.cry_double_scale[jkr.sort_id] or not G.GAME.cry_double_scale[jkr.sort_id].ability then - if not G.GAME.cry_double_scale[jkr.sort_id] then - G.GAME.cry_double_scale[jkr.sort_id] = { ability = { double_scale = true } } - end - for k, v in pairs(jkr.ability) do - if type(jkr.ability[k]) ~= "table" then - G.GAME.cry_double_scale[jkr.sort_id].ability[k] = v - else - G.GAME.cry_double_scale[jkr.sort_id].ability[k] = {} - for _k, _v in pairs(jkr.ability[k]) do - G.GAME.cry_double_scale[jkr.sort_id].ability[k][_k] = _v - end - end - end - end - if G.GAME.cry_double_scale[jkr.sort_id] and not G.GAME.cry_double_scale[jkr.sort_id].scaler then - dbl_info.base = { "extra", "Emult" } - dbl_info.scaler = { "extra", "Emult_mod" } - dbl_info.scaler_base = jkr.ability.extra.Emult_mod - dbl_info.offset = 1 - end - end - local true_base = dbl_info.scaler_base - if true_base then - for i = 1, #G.jokers.cards do - local obj = G.jokers.cards[i].config.center - if obj.cry_scale_mod and type(obj.cry_scale_mod) == "function" then - local ggpn = G.GAME.probabilities.normal - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local o = obj:cry_scale_mod( - G.jokers.cards[i], - jkr, - orig_scale_scale, - true_base, - orig_scale_base, - new_scale_base - ) - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if o then - if #dbl_info.scaler == 2 then - if - not ( - not jkr.ability[dbl_info.scaler[1]] - or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - ) - then - jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o - orig_scale_scale = o - end - else - if jkr.ability[dbl_info.scaler[1]] then - jkr.ability[dbl_info.scaler[1]] = o - orig_scale_scale = o - end - end - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - end - local reps = {} - for i2 = 1, #G.jokers.cards do - local _card = G.jokers.cards[i2] - local ggpn = G.GAME.probabilities.normal - if _card.ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local check = - cj(G.jokers.cards[i2], { retrigger_joker_check = true, other_card = G.jokers.cards[i] }) - if _card.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if type(check) == "table" then - reps[i2] = check and check.repetitions and check or 0 - else - reps[i2] = 0 - end - if - G.jokers.cards[i2] == G.jokers.cards[i] - and G.jokers.cards[i].edition - and G.jokers.cards[i].edition.retriggers - then - local old_repetitions = reps[i] ~= 0 and reps[i].repetitions or 0 - local check = false --G.jokers.cards[i]:calculate_retriggers() - if check and check.repetitions then - check.repetitions = check.repetitions + old_repetitions - reps[i] = check - end - end - end - for i0, j in ipairs(reps) do - if (type(j) == "table") and j.repetitions and (j.repetitions > 0) then - for r = 1, j.repetitions do - card_eval_status_text(j.card, "jokers", nil, nil, nil, j) - local ggpn = G.GAME.probabilities.normal - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local o = obj:cry_scale_mod( - G.jokers.cards[i], - jkr, - orig_scale_scale, - true_base, - orig_scale_base, - new_scale_base - ) - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if o then - if #dbl_info.scaler == 2 then - if - not ( - not jkr.ability[dbl_info.scaler[1]] - or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - ) - then - jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o - orig_scale_scale = o - end - else - if jkr.ability[dbl_info.scaler[1]] then - jkr.ability[dbl_info.scaler[1]] = o - orig_scale_scale = o - end - end - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - end - end - end - end - end - end - end -end - -function compound_interest_scale_mod(self, orig_scale_scale, orig_scale_base, new_scale_base) - local jkr = self - local dbl_info = G.GAME.cry_double_scale[jkr.sort_id] - if jkr.ability and type(jkr.ability) == "table" then - if not G.GAME.cry_double_scale[jkr.sort_id] or not G.GAME.cry_double_scale[jkr.sort_id].ability then - if not G.GAME.cry_double_scale[jkr.sort_id] then - G.GAME.cry_double_scale[jkr.sort_id] = { ability = { double_scale = true } } - end - for k, v in pairs(jkr.ability) do - if type(jkr.ability[k]) ~= "table" then - G.GAME.cry_double_scale[jkr.sort_id].ability[k] = v - else - G.GAME.cry_double_scale[jkr.sort_id].ability[k] = {} - for _k, _v in pairs(jkr.ability[k]) do - G.GAME.cry_double_scale[jkr.sort_id].ability[k][_k] = _v - end - end - end - end - if G.GAME.cry_double_scale[jkr.sort_id] and not G.GAME.cry_double_scale[jkr.sort_id].scaler then - dbl_info.base = { "extra", "percent" } - dbl_info.scaler = { "extra", "percent_mod" } - dbl_info.scaler_base = jkr.ability.extra.percent_mod - dbl_info.offset = 1 - end - end - local true_base = dbl_info.scaler_base - if true_base then - for i = 1, #G.jokers.cards do - local obj = G.jokers.cards[i].config.center - if obj.cry_scale_mod and type(obj.cry_scale_mod) == "function" then - local ggpn = G.GAME.probabilities.normal - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local o = obj:cry_scale_mod( - G.jokers.cards[i], - jkr, - orig_scale_scale, - true_base, - orig_scale_base, - new_scale_base - ) - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if o then - if #dbl_info.scaler == 2 then - if - not ( - not jkr.ability[dbl_info.scaler[1]] - or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - ) - then - jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o - orig_scale_scale = o - end - else - if jkr.ability[dbl_info.scaler[1]] then - jkr.ability[dbl_info.scaler[1]] = o - orig_scale_scale = o - end - end - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - end - local reps = {} - for i2 = 1, #G.jokers.cards do - local _card = G.jokers.cards[i2] - local ggpn = G.GAME.probabilities.normal - if _card.ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local check = - cj(G.jokers.cards[i2], { retrigger_joker_check = true, other_card = G.jokers.cards[i] }) - if _card.ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if type(check) == "table" then - reps[i2] = check and check.repetitions and check or 0 - else - reps[i2] = 0 - end - if - G.jokers.cards[i2] == G.jokers.cards[i] - and G.jokers.cards[i].edition - and G.jokers.cards[i].edition.retriggers - then - local old_repetitions = reps[i] ~= 0 and reps[i].repetitions or 0 - local check = false --G.jokers.cards[i]:calculate_retriggers() - if check and check.repetitions then - check.repetitions = check.repetitions + old_repetitions - reps[i] = check - end - end - end - for i0, j in ipairs(reps) do - if (type(j) == "table") and j.repetitions and (j.repetitions > 0) then - for r = 1, j.repetitions do - card_eval_status_text(j.card, "jokers", nil, nil, nil, j) - local ggpn = G.GAME.probabilities.normal - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = 1e9 - end - local o = obj:cry_scale_mod( - G.jokers.cards[i], - jkr, - orig_scale_scale, - true_base, - orig_scale_base, - new_scale_base - ) - if G.jokers.cards[i].ability.cry_rigged then - G.GAME.probabilities.normal = ggpn - end - if o then - if #dbl_info.scaler == 2 then - if - not ( - not jkr.ability[dbl_info.scaler[1]] - or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] - ) - then - jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o - orig_scale_scale = o - end - else - if jkr.ability[dbl_info.scaler[1]] then - jkr.ability[dbl_info.scaler[1]] = o - orig_scale_scale = o - end - end - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex") } - ) - end - end - end - end - end - end - end -end - -function Card:is_jolly() - local check = false - if self.ability.name == "Jolly Joker" then - check = true - end - if (self.edition and self.edition.key == "e_cry_m") then - check = true - end - + -- Here are some other ones Steamodded has + -- Cryptid doesn't use them YET, but these should be uncommented if Cryptid uses them --[[ - Some scenarios/ examples I used for testing this (These DO work as intended if not commented out) - if next(find_joker("cry-mneon")) then - check = true - end - if G.GAME.blind.boss then - check = true - end - ]]-- - return check -end + quantum_enhancements = true, + -- These ones add new card areas that Steamodded will calculate through + -- Might already be useful for sticker calc + cardareas = { + deck = true, + discard = true, + } + ]] +} -function cry_with_deck_effects(card, func) - if not card.added_to_deck then - return func(card) - else - card:remove_from_deck(true) - local ret = func(card) - card:add_to_deck(true) - return ret - end -end - -function cry_deep_copy(obj, seen) - if type(obj) ~= "table" then - return obj - end - if seen and seen[obj] then - return seen[obj] - end - local s = seen or {} - local res = setmetatable({}, getmetatable(obj)) - s[obj] = res - for k, v in pairs(obj) do - res[cry_deep_copy(k, s)] = cry_deep_copy(v, s) - end - return res -end - -G.C.CRY_JOLLY = { 0, 0, 0, 0 } - --- File loading based on Relic-Jokers -local files = NFS.getDirectoryItems(mod_path .. "Items") -Cryptid.obj_buffer = {} +--Load Library Files +local files = NFS.getDirectoryItems(mod_path .. "lib") for _, file in ipairs(files) do - print("Loading file " .. file) - local f, err = SMODS.load_file("Items/" .. file) + print("[CRYPTID] Loading library file " .. file) + local f, err = SMODS.load_file("lib/" .. file) if err then - print("Error loading file: " .. err) - else - local curr_obj = f() - if curr_obj.name == "HTTPS Module" and Cryptid_config[curr_obj.name] == nil then - Cryptid_config[curr_obj.name] = false + error(err) --Steamodded actually does a really good job of displaying this info! So we don't need to do anything else. + end + f() +end +local function process_items(f, mod) + local ret = f() + if not ret.disabled then + if ret.init then + ret:init() end - if Cryptid_config[curr_obj.name] == nil then - Cryptid_config[curr_obj.name] = true - Cryptid.enabled[curr_obj.name] = true - end - if Cryptid_config[curr_obj.name] then - if curr_obj.init then - curr_obj:init() - end - if not curr_obj.items then - print("Warning: " .. file .. " has no items") - else - for _, item in ipairs(curr_obj.items) do + if ret.items then + for _, item in ipairs(ret.items) do + if mod then + -- make the mod use its own prefixes + item.prefix_config = { + key = false, + atlas = false, + } + if item.key then + item.key = mod.prefix .. "_" .. item.key + end + if item.atlas then + item.atlas = mod.prefix .. "_" .. item.atlas + end + -- this will also display the mod's own badge + if not item.dependencies then + item.dependencies = {} + end + item.dependencies[#item.dependencies + 1] = mod.id + end + if item.init then + item:init() + end + --[[if not item.gameset_config then + -- by default, disable on modest + item.gameset_config = { + modest = {disabled = true}, + } + end--]] + if not Cryptid.object_registry[item.object_type] then + Cryptid.object_registry[item.object_type] = {} + end + if not item.take_ownership then if not item.order then item.order = 0 end - if curr_obj.order then - item.order = item.order + curr_obj.order + if ret.order then + item.order = item.order + ret.order end - if SMODS[item.object_type] then - if not Cryptid.obj_buffer[item.object_type] then - Cryptid.obj_buffer[item.object_type] = {} + if mod then + item.order = item.order + 1e9 + end + item.cry_order = item.order + if not Cryptid.object_buffer[item.object_type] then + Cryptid.object_buffer[item.object_type] = {} + end + Cryptid.object_buffer[item.object_type][#Cryptid.object_buffer[item.object_type] + 1] = item + else + item.key = SMODS[item.object_type].class_prefix .. "_" .. item.key + SMODS[item.object_type].obj_table[item.key].mod = SMODS.Mods.Cryptid + for k, v in pairs(item) do + if k ~= "key" then + SMODS[item.object_type].obj_table[item.key][k] = v end - Cryptid.obj_buffer[item.object_type][#Cryptid.obj_buffer[item.object_type] + 1] = item - else - print("Error loading item " .. item.key .. " of unknown type " .. item.object_type) end end + Cryptid.object_registry[item.object_type][item.key] = item + end + end + end +end + +Cryptid.object_registry = {} +Cryptid.object_buffer = {} +local files = NFS.getDirectoryItems(mod_path .. "items") +for _, file in ipairs(files) do + print("[CRYPTID] Loading file " .. file) + local f, err = SMODS.load_file("items/" .. file) + if err then + error(err) --Steamodded actually does a really good job of displaying this info! So we don't need to do anything else. + end + process_items(f) +end + +-- Check for files in other mods +-- either in [Mod]/Cryptid.lua or [Mod]/Cryptid/*.lua +for _, mod in pairs(SMODS.Mods) do + -- Note: Crashes with lone lua files + if mod.path and mod.id ~= "Cryptid" then + local path = mod.path + local files = NFS.getDirectoryItems(path) + for _, file in ipairs(files) do + if file == "Cryptid.lua" then + print("[CRYPTID] Loading Cryptid.lua from " .. mod.id) + local f, err = SMODS.load_file("Cryptid.lua", mod.id) + if err then + error(err) --Steamodded actually does a really good job of displaying this info! So we don't need to do anything else. + end + process_items(f, mod) + end + if file == "Cryptid" then + local files = NFS.getDirectoryItems(path .. "Cryptid") + for _, file in ipairs(files) do + print("[CRYPTID] Loading file " .. file .. " from " .. mod.id) + local f, err = SMODS.load_file("Cryptid/" .. file, mod.id) + if err then + error(err) --Steamodded actually does a really good job of displaying this info! So we don't need to do anything else. + end + process_items(f, mod) + end end end end end -for set, objs in pairs(Cryptid.obj_buffer) do + +-- Register all items +for set, objs in pairs(Cryptid.object_buffer) do table.sort(objs, function(a, b) return a.order < b.order end) @@ -1603,1819 +177,163 @@ for set, objs in pairs(Cryptid.obj_buffer) do if objs[i].post_process and type(objs[i].post_process) == "function" then objs[i]:post_process() end + Cryptid.post_process(objs[i]) SMODS[set](objs[i]) end end -local cryptidTabs = function() return { - { - label = localize("cry_set_features"), - chosen = true, - tab_definition_function = function() - cry_nodes = { +local inj = SMODS.injectItems +function SMODS.injectItems(...) + inj(...) + cry_update_obj_registry() + for _, t in ipairs({ + G.P_CENTERS, + G.P_BLINDS, + G.P_TAGS, + G.P_SEALS, + }) do + for k, v in pairs(t) do + if v and G.PROFILES[G.SETTINGS.profile].all_unlocked then + v.alerted = true + v.discovered = true + v.unlocked = true + end + end + end +end + +local cryptidConfigTab = function() + cry_nodes = { + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - { - n = G.UIT.O, - config = { - object = DynaText({ - string = localize("cry_set_enable_features"), - colours = { G.C.WHITE }, - shadow = true, - scale = 0.4, - }), - }, - }, + n = G.UIT.O, + config = { + object = DynaText({ + string = localize("cry_set_enable_features"), + colours = { G.C.WHITE }, + shadow = true, + scale = 0.4, + }), }, }, - } - left_settings = { n = G.UIT.C, config = { align = "tl", padding = 0.05 }, nodes = {} } - right_settings = { n = G.UIT.C, config = { align = "tl", padding = 0.05 }, nodes = {} } - --todo: completely redesign this, make it possible to enable/disable individual items - local ordered_config = {} - for k, _ in pairs(Cryptid_config) do - if localize("cry_feat_"..string.lower(k)) ~= "ERROR" and k ~= "JokerDisplay" then - ordered_config[#ordered_config+1] = k - end - end - table.sort(ordered_config) - for _, k in ipairs(ordered_config) do - if #right_settings.nodes < #left_settings.nodes then - right_settings.nodes[#right_settings.nodes + 1] = - create_toggle({ label = localize("cry_feat_"..string.lower(k)), ref_table = Cryptid_config, ref_value = k }) - else - left_settings.nodes[#left_settings.nodes + 1] = - create_toggle({ label = localize("cry_feat_"..string.lower(k)), ref_table = Cryptid_config, ref_value = k }) - end - end - config = { n = G.UIT.R, config = { align = "tm", padding = 0 }, nodes = { left_settings, right_settings } } - cry_nodes[#cry_nodes + 1] = config - return { - n = G.UIT.ROOT, - config = { - emboss = 0.05, - minh = 6, - r = 0.1, - minw = 10, - align = "cm", - padding = 0.2, - colour = G.C.BLACK, - }, - nodes = cry_nodes, - } - end, - }, - { - label = localize("cry_set_music"), - tab_definition_function = function() - -- TODO: Add a button here to reset all Cryptid achievements. - -- If you want to do that now, add this to the SMODS.InjectItems in Steamodded/loader/loader.lua - --[[fetch_achievements() + }, + }, + } + left_settings = { n = G.UIT.C, config = { align = "tl", padding = 0.05 }, nodes = {} } + right_settings = { n = G.UIT.C, config = { align = "tl", padding = 0.05 }, nodes = {} } + config = { n = G.UIT.R, config = { align = "tm", padding = 0 }, nodes = { left_settings, right_settings } } + cry_nodes[#cry_nodes + 1] = config + cry_nodes[#cry_nodes + 1] = UIBox_button({ + button = "your_collection_content_sets", + label = { localize("b_content_sets") }, + count = modsCollectionTally(G.P_CENTER_POOLS["Content Set"]), + minw = 5, + minh = 1.7, + scale = 0.6, + id = "your_collection_jokers", + }) + --Add warning notifications later for family mode + cry_nodes[#cry_nodes + 1] = create_toggle({ + label = localize("cry_family"), + active_colour = G.C.MONEY, + ref_table = Cryptid_config, + ref_value = "family_mode", + callback = reload_cryptid_localization, + }) + cry_nodes[#cry_nodes + 1] = create_toggle({ + label = localize("cry_experimental"), + active_colour = G.C.MONEY, + ref_table = Cryptid_config, + ref_value = "experimental", + }) + cry_nodes[#cry_nodes + 1] = UIBox_button({ + button = "reset_gameset_config", + label = { localize("b_reset_gameset_" .. (G.PROFILES[G.SETTINGS.profile].cry_gameset or "mainline")) }, + minw = 5, + }) + return { + n = G.UIT.ROOT, + config = { + emboss = 0.05, + minh = 6, + r = 0.1, + minw = 10, + align = "cm", + padding = 0.2, + colour = G.C.BLACK, + }, + nodes = cry_nodes, + } +end + +local cryptidTabs = function() + return { + { + label = localize("cry_set_music"), + tab_definition_function = function() + -- TODO: Add a button here to reset all Cryptid achievements. + -- If you want to do that now, add this to the SMODS.InjectItems in Steamodded/loader/loader.lua + --[[fetch_achievements() for k, v in pairs(SMODS.Achievements) do G.SETTINGS.ACHIEVEMENTS_EARNED[k] = nil G.ACHIEVEMENTS[k].earned = nil end fetch_achievements()]] - cry_nodes = { - { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - --{n=G.UIT.O, config={object = DynaText({string = "", colours = {G.C.WHITE}, shadow = true, scale = 0.4})}}, + cry_nodes = { + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + --{n=G.UIT.O, config={object = DynaText({string = "", colours = {G.C.WHITE}, shadow = true, scale = 0.4})}}, + }, }, - }, - } - settings = { n = G.UIT.C, config = { align = "tl", padding = 0.05 }, nodes = {} } - settings.nodes[#settings.nodes + 1] = create_toggle({ - label = localize("cry_mus_jimball"), - ref_table = Cryptid_config.Cryptid, - ref_value = "jimball_music", - }) - settings.nodes[#settings.nodes + 1] = create_toggle({ - label = localize("cry_mus_code"), - ref_table = Cryptid_config.Cryptid, - ref_value = "code_music", - }) - settings.nodes[#settings.nodes + 1] = create_toggle({ - label = localize("cry_mus_exotic"), - ref_table = Cryptid_config.Cryptid, - ref_value = "exotic_music", - }) - settings.nodes[#settings.nodes + 1] = create_toggle({ - label = localize("cry_mus_high_score"), - ref_table = Cryptid_config.Cryptid, - ref_value = "big_music", - }) - config = { n = G.UIT.R, config = { align = "tm", padding = 0 }, nodes = { settings } } - cry_nodes[#cry_nodes + 1] = config - return { - n = G.UIT.ROOT, - config = { - emboss = 0.05, - minh = 6, - r = 0.1, - minw = 10, - align = "cm", - padding = 0.2, - colour = G.C.BLACK, - }, - nodes = cry_nodes, - } - end, - }, -} end -G.FUNCS.cryptidMenu = function(e) - local tabs = create_tabs({ - snap_to_nav = true, - tabs = cryptidTabs(), - }) - G.FUNCS.overlay_menu({ - definition = create_UIBox_generic_options({ - back_func = "options", - contents = { tabs }, - }), - config = { offset = { x = 0, y = 10 } }, - }) + } + settings = { n = G.UIT.C, config = { align = "tl", padding = 0.05 }, nodes = {} } + settings.nodes[#settings.nodes + 1] = create_toggle({ + label = localize("cry_mus_jimball"), + ref_table = Cryptid_config.Cryptid, + ref_value = "jimball_music", + }) + settings.nodes[#settings.nodes + 1] = create_toggle({ + label = localize("cry_mus_code"), + ref_table = Cryptid_config.Cryptid, + ref_value = "code_music", + }) + settings.nodes[#settings.nodes + 1] = create_toggle({ + label = localize("cry_mus_exotic"), + ref_table = Cryptid_config.Cryptid, + ref_value = "exotic_music", + }) + settings.nodes[#settings.nodes + 1] = create_toggle({ + label = localize("cry_mus_high_score"), + ref_table = Cryptid_config.Cryptid, + ref_value = "big_music", + }) + settings.nodes[#settings.nodes + 1] = create_toggle({ + label = localize("cry_mus_alt_bg"), + ref_table = Cryptid_config.Cryptid, + ref_value = "alt_bg_music", + }) + config = { n = G.UIT.R, config = { align = "tm", padding = 0 }, nodes = { settings } } + cry_nodes[#cry_nodes + 1] = config + return { + n = G.UIT.ROOT, + config = { + emboss = 0.05, + minh = 6, + r = 0.1, + minw = 10, + align = "cm", + padding = 0.2, + colour = G.C.BLACK, + }, + nodes = cry_nodes, + } + end, + }, + } end - ---[[SMODS.current_mod.config_tab = function() - return { - n = G.UIT.ROOT, - config = { - emboss = 0.05, - minh = 6, - r = 0.1, - minw = 10, - align = "cm", - padding = 0.2, - colour = G.C.BLACK - }, - nodes = {UIBox_button{ label = {"Open Cryptid Config"}, button = "cryptidMenu", colour = G.C.DARK_EDITION, minw = 5, minh = 0.7, scale = 0.6}} - } -end--]] SMODS.current_mod.extra_tabs = cryptidTabs - --- Modify to display badges for credits -local smcmb = SMODS.create_mod_badges -function SMODS.create_mod_badges(obj, badges) - smcmb(obj, badges) - if obj and obj.cry_credits then - local function calc_scale_fac(text) - local size = 0.9 - local font = G.LANG.font - local max_text_width = 2 - 2 * 0.05 - 4 * 0.03 * size - 2 * 0.03 - local calced_text_width = 0 - -- Math reproduced from DynaText:update_text - for _, c in utf8.chars(text) do - local tx = font.FONT:getWidth(c) * (0.33 * size) * G.TILESCALE * font.FONTSCALE - + 2.7 * 1 * G.TILESCALE * font.FONTSCALE - calced_text_width = calced_text_width + tx / (G.TILESIZE * G.TILESCALE) - end - local scale_fac = calced_text_width > max_text_width and max_text_width / calced_text_width or 1 - return scale_fac - end - if obj.cry_credits.art or obj.cry_credits.code or obj.cry_credits.idea then - local scale_fac = {} - local min_scale_fac = 1 - local strings = {"Cryptid"} - for _, v in ipairs({"idea", "art", "code"}) do - if obj.cry_credits[v] then - for i = 1, #obj.cry_credits[v] do - strings[#strings+1] = localize{type='variable',key='cry_'..v,vars={obj.cry_credits[v][i]}}[1] - end - end - end - for i = 1, #strings do - scale_fac[i] = calc_scale_fac(strings[i]) - min_scale_fac = math.min(min_scale_fac, scale_fac[i]) - end - local ct = {} - for i = 1, #strings do - ct[i] = { - string = strings[i], - } - end - local cry_badge = { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - { - n = G.UIT.R, - config = { - align = "cm", - colour = G.C.CRY_EXOTIC, - r = 0.1, - minw = 2/min_scale_fac, - minh = 0.36, - emboss = 0.05, - padding = 0.03 * 0.9, - }, - nodes = { - { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, - { - n = G.UIT.O, - config = { - object = DynaText({ - string = ct or "ERROR", - colours = { obj.cry_credits and obj.cry_credits.text_colour or G.C.WHITE }, - silent = true, - float = true, - shadow = true, - offset_y = -0.03, - spacing = 1, - scale = 0.33 * 0.9, - }), - }, - }, - { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, - }, - }, - }, - } - local function eq_col(x, y) - for i = 1, 4 do - if x[1] ~= y[1] then - return false - end - end - return true - end - for i = 1, #badges do - if eq_col(badges[i].nodes[1].config.colour,HEX("708b91")) then - badges[i].nodes[1].nodes[2].config.object:remove() - badges[i] = cry_badge - break - end - end - end - if obj.cry_credits.jolly then - local scale_fac = {} - local min_scale_fac = 1 - for i = 1, #obj.cry_credits.jolly do - scale_fac[i] = calc_scale_fac(obj.cry_credits.jolly[i]) - min_scale_fac = math.min(min_scale_fac, scale_fac[i]) - end - local ct = {} - for i = 1, #obj.cry_credits.jolly do - ct[i] = { - string = obj.cry_credits.jolly[i], - } - end - badges[#badges + 1] = { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - { - n = G.UIT.R, - config = { - align = "cm", - colour = G.C.CRY_JOLLY, - r = 0.1, - minw = 2, - minh = 0.36, - emboss = 0.05, - padding = 0.03 * 0.9, - }, - nodes = { - { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, - { - n = G.UIT.O, - config = { - object = DynaText({ - string = ct or "ERROR", - colours = { obj.cry_credits and obj.cry_credits.text_colour_jolly or G.C.WHITE }, - silent = true, - float = true, - shadow = true, - offset_y = -0.03, - spacing = 1, - scale = 0.33 * 0.9, - }), - }, - }, - { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, - }, - }, - }, - } - end - end -end - --- This is short enough that I'm fine overriding it -function calculate_reroll_cost(skip_increment) - if G.GAME.current_round.free_rerolls < 0 then - G.GAME.current_round.free_rerolls = 0 - end - if next(find_joker("cry-crustulum")) - or G.GAME.current_round.free_rerolls > 0 then - G.GAME.current_round.reroll_cost = 0 - return - end - if next(find_joker("cry-candybuttons")) then - G.GAME.current_round.reroll_cost = 1 - return - end - if G.GAME.used_vouchers.v_cry_rerollexchange then - G.GAME.current_round.reroll_cost = 2 - return - end - G.GAME.current_round.reroll_cost_increase = G.GAME.current_round.reroll_cost_increase or 0 - if not skip_increment then - G.GAME.current_round.reroll_cost_increase = G.GAME.current_round.reroll_cost_increase - + (G.GAME.modifiers.cry_reroll_scaling or 1) - end - G.GAME.current_round.reroll_cost = (G.GAME.round_resets.temp_reroll_cost or G.GAME.round_resets.reroll_cost) - + G.GAME.current_round.reroll_cost_increase -end - ---Top Gear from The World End with Jimbo has several conflicts with Cryptid items ---Namely, It overrides the edition that edition jokers spawn with, and doesn't work correctly with edition decks ---I'm taking ownership of this, overiding it, and making an implementaion that is compatible with Cryptid - ---Unrelated but kind of related side note: this prevents top gear from showing up in collection, not sure what's up with that ---Is it due to how TWEWJ is Coded? Is it an issue with Steamodded itself? Might be worth looking into, just sayin - ---Ok it's definitely something with steamodded - -if (SMODS.Mods["TWEWY"] or {}).can_load then - SMODS.Joker:take_ownership('twewy_topGear', { - name = "Cry-topGear", - --Stop Top Gear's Old code from working by overriding these - add_to_deck = function(self, card, from_debuff) - end, - remove_from_deck = function(self, card, from_debuff) - end, - rarity = 3, - loc_txt = { - name = 'Top Gear', - text = { - "All {C:blue}Common{C:attention} Jokers{}", - "are {C:dark_edition}Polychrome{}", - } - }, - }) -end - --- We're modifying so much of this for Brown and Yellow Stake, Equilibrium Deck, etc. that it's fine to override... -function create_card(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append) - local area = area or G.jokers - local pseudo = function(x) - return pseudorandom(pseudoseed(x)) - end - local ps = pseudoseed - if area == "ERROR" then - pseudo = function(x) - return pseudorandom(predict_pseudoseed(x)) - end - ps = predict_pseudoseed - end - local center = G.P_CENTERS.b_red - if (_type == "Joker") and G.GAME and G.GAME.modifiers and G.GAME.modifiers.all_rnj then - forced_key = "j_cry_rnjoker" - end - local function aeqviable(center) - return center.unlocked and not center_no(center, "doe") and not center_no(center, "aeq") and not (center.rarity == 6 or center.rarity == "cry_exotic") - end - if _type == "Joker" and not _rarity then - if not G.GAME.aequilibriumkey then G.GAME.aequilibriumkey = 1 end - local aeqactive = nil - if next(find_joker('Ace Aequilibrium')) and not forced_key then - while not aeqactive or not aeqviable(G.P_CENTER_POOLS.Joker[aeqactive]) do - if math.ceil(G.GAME.aequilibriumkey) > #G.P_CENTER_POOLS["Joker"] then - G.GAME.aequilibriumkey = 1 - end - aeqactive = math.ceil(G.GAME.aequilibriumkey) - G.GAME.aequilibriumkey = math.ceil(G.GAME.aequilibriumkey + 1) - end - end - if aeqactive then - forced_key = G.P_CENTER_POOLS["Joker"][aeqactive].key - end - end - --should pool be skipped with a forced key - if not forced_key and soulable and not G.GAME.banned_keys["c_soul"] then - for _, v in ipairs(SMODS.Consumable.legendaries) do - if - (_type == v.type.key or _type == v.soul_set) - and not (G.GAME.used_jokers[v.key] and not next(find_joker("Showman")) and not v.can_repeat_soul) - then - if pseudo("soul_" .. v.key .. _type .. G.GAME.round_resets.ante) > (1 - v.soul_rate) then - forced_key = v.key - end - end - end - if - (_type == "Tarot" or _type == "Spectral" or _type == "Tarot_Planet") - and not (G.GAME.used_jokers["c_soul"] and not next(find_joker("Showman"))) - then - if pseudo("soul_" .. _type .. G.GAME.round_resets.ante) > 0.997 then - forced_key = "c_soul" - end - end - if - (_type == "Planet" or _type == "Spectral") - and not (G.GAME.used_jokers["c_black_hole"] and not next(find_joker("Showman"))) - then - if pseudo("soul_" .. _type .. G.GAME.round_resets.ante) > 0.997 then - forced_key = "c_black_hole" - end - end - end - - if _type == "Base" then - forced_key = "c_base" - end - - if forced_key then --vanilla behavior change, mainly for M Joker reasons - center = G.P_CENTERS[forced_key] - _type = (center.set ~= "Default" and center.set or _type) - else - gcparea = area - local _pool, _pool_key = get_current_pool(_type, _rarity, legendary, key_append) - gcparea = nil - center = pseudorandom_element(_pool, ps(_pool_key)) - local it = 1 - while center == "UNAVAILABLE" do - it = it + 1 - center = pseudorandom_element(_pool, ps(_pool_key .. "_resample" .. it)) - end - - center = G.P_CENTERS[center] - end - - - - -- handle banned keys for playing cards - -- can cache this if it's too much of a performance hit - local _cardlist = {} - for k, v in pairs(G.P_CARDS) do - local add = true - if G.GAME and G.GAME.cry_banned_pcards and G.GAME.cry_banned_pcards[k] then - add = false - end - if add then _cardlist[#_cardlist+1] = k end - end - if #_cardlist <= 0 then _cardlist[#_cardlist+1] = 'S_A' end - - local front = ( - (_type == "Base" or _type == "Enhanced") - and G.P_CARDS[pseudorandom_element(_cardlist, ps("front" .. (key_append or "") .. G.GAME.round_resets.ante))] - ) or nil - - if area == "ERROR" then - local ret = (front or center) - if not ret.config then - ret.config = {} - end - if not ret.config.center then - ret.config.center = {} - end - if not ret.config.center.key then - ret.config.center.key = "" - end - if not ret.ability then ret.ability = {} end - return ret --the config.center.key stuff prevents a crash with Jen's Almanac hook - end - - local card = Card( - area and (area.T.x + area.T.w / 2) or 0, - area and area.T.y or 0, - G.CARD_W * (center and center.set == "Booster" and 1.27 or 1), - G.CARD_H * (center and center.set == "Booster" and 1.27 or 1), - front, - center, - { - bypass_discovery_center = area == G.shop_jokers - or area == G.pack_cards - or area == G.shop_vouchers - or (G.shop_demo and area == G.shop_demo) - or area == G.jokers - or area == G.consumeables, - bypass_discovery_ui = area == G.shop_jokers - or area == G.pack_cards - or area == G.shop_vouchers - or (G.shop_demo and area == G.shop_demo), - discover = area == G.jokers or area == G.consumeables, - bypass_back = G.GAME.selected_back.pos, - } - ) - if front and G.GAME.modifiers.cry_force_suit then - card:change_suit(G.GAME.modifiers.cry_force_suit) - end - if front and G.GAME.modifiers.cry_force_enhancement then - card:set_ability(G.P_CENTERS[G.GAME.modifiers.cry_force_enhancement]) - end - if front and G.GAME.modifiers.cry_force_edition then - card:set_edition({ [G.GAME.modifiers.cry_force_edition] = true }, true, true) - end - if front and G.GAME.modifiers.cry_force_seal then - card:set_seal(G.GAME.modifiers.cry_force_seal) - end - if card.ability.consumeable and not skip_materialize then - card:start_materialize() - end - for k, v in ipairs(SMODS.Sticker.obj_buffer) do - local sticker = SMODS.Stickers[v] - if - sticker.should_apply - and type(sticker.should_apply) == "function" - and sticker:should_apply(card, center, area) - then - sticker:apply(card, true) - end - end - if - G.GAME.modifiers.cry_force_sticker == "eternal" - or ( - G.GAME.modifiers.cry_sticker_sheet_plus - and not ( - (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) - ) - ) - then -- wow that is long - card:set_eternal(true) - card.ability.eternal = true - end - if - G.GAME.modifiers.cry_force_sticker == "perishable" - or ( - G.GAME.modifiers.cry_sticker_sheet_plus - and not ( - (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) - ) - ) - then - card:set_perishable(true) - card.ability.perish_tally = G.GAME.perishable_rounds -- set_perishable should be doing this? whatever - card.ability.perishable = true - end - if - G.GAME.modifiers.cry_force_sticker == "rental" - or ( - G.GAME.modifiers.cry_sticker_sheet_plus - and not ( - (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) - ) - ) - then - card:set_rental(true) - card.ability.rental = true - end - if - G.GAME.modifiers.cry_force_sticker == "pinned" - or ( - G.GAME.modifiers.cry_sticker_sheet_plus - and not ( - (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) - ) - ) - then - card.pinned = true - end - if - G.GAME.modifiers.cry_force_sticker == "banana" - or ( - G.GAME.modifiers.cry_sticker_sheet_plus - and not ( - (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) - ) - ) - then - card.ability.banana = true - end - if G.GAME.modifiers.cry_sticker_sheet_plus and not (_type == "Base" or _type == "Enhanced") then - for k, v in pairs(SMODS.Stickers) do - if v.apply and not v.no_sticker_sheet then - v:apply(card, true) - end - end - end - - if card.ability.name == "cry-Cube" then - card:set_eternal(true) - end - if _type == "Joker" or (G.GAME.modifiers.cry_any_stickers and not G.GAME.modifiers.cry_sticker_sheet) then - if G.GAME.modifiers.all_eternal then - card:set_eternal(true) - end - if G.GAME.modifiers.cry_all_perishable then - card:set_perishable(true) - end - if G.GAME.modifiers.cry_all_rental then - card:set_rental(true) - end - if G.GAME.modifiers.cry_all_pinned then - card.pinned = true - end - if G.GAME.modifiers.cry_all_banana then - card.ability.banana = true - end - if (area == G.shop_jokers) or (area == G.pack_cards) then - local eternal_perishable_poll = pseudorandom("cry_et" .. (key_append or "") .. G.GAME.round_resets.ante) - if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 then - card:set_eternal(true) - end - if G.GAME.modifiers.enable_perishables_in_shop then - if - not G.GAME.modifiers.cry_eternal_perishable_compat - and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) - then - card:set_perishable(true) - end - if - G.GAME.modifiers.cry_eternal_perishable_compat - and pseudorandom("cry_per" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - then - card:set_perishable(true) - end - end - if - G.GAME.modifiers.enable_rentals_in_shop - and pseudorandom("cry_ssjr" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - then - card:set_rental(true) - end - if - G.GAME.modifiers.cry_enable_pinned_in_shop - and pseudorandom("cry_pin" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - then - card.pinned = true - end - if - not G.GAME.modifiers.cry_eternal_perishable_compat - and G.GAME.modifiers.enable_banana - and (pseudorandom("cry_banana" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7) - and (eternal_perishable_poll <= 0.7) - then - card.ability.banana = true - end - if - G.GAME.modifiers.cry_eternal_perishable_compat - and G.GAME.modifiers.enable_banana - and (pseudorandom("cry_banana" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7) - then - card.ability.banana = true - end - if G.GAME.modifiers.cry_sticker_sheet then - for k, v in pairs(SMODS.Stickers) do - if v.apply and not v.no_sticker_sheet then - v:apply(card, true) - end - end - end - if - not card.ability.eternal - and G.GAME.modifiers.cry_enable_flipped_in_shop - and pseudorandom("cry_flip" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 - then - card.cry_flipped = true - end - end - if _type == "Joker" and not G.GAME.modifiers.cry_force_edition then - local edition = poll_edition("edi" .. (key_append or "") .. G.GAME.round_resets.ante) - card:set_edition(edition) - check_for_unlock({ type = "have_edition" }) - end - end - if - (card.ability.set == "Code") - and G.GAME.used_vouchers.v_cry_quantum_computing - and pseudorandom("cry_quantum_computing") > 0.7 - then - card:set_edition({ negative = true }) - end - if - G.GAME.modifiers.cry_force_edition - and not G.GAME.modifiers.cry_force_random_edition - and area ~= G.pack_cards - then - card:set_edition(nil, true) - end - if G.GAME.modifiers.cry_force_random_edition and area ~= G.pack_cards then - local edition = cry_poll_random_edition() - card:set_edition(edition, true) - end - if not (card.edition and (card.edition.cry_oversat or card.edition.cry_glitched)) then - cry_misprintize(card) - end - if _type == "Joker" and G.GAME.modifiers.cry_common_value_quad then - if card.config.center.rarity == 1 then - cry_misprintize(card,{min = 4, max = 4}, nil, true) - end - end - if card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml - G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 0 - end - if next(find_joker("Cry-topGear")) and card.config.center.rarity == 1 then - if card.ability.name ~= "cry-meteor" - and card.ability.name ~= "cry-exoplanet" - and card.ability.name ~= "cry-stardust" - and card.ability.name ~= "cry-universe" then - card:set_edition("e_polychrome", true, nil, true) - end - end - if card.ability.name == "cry-meteor" then - card:set_edition("e_foil", true, nil, true) - end - if card.ability.name == "cry-exoplanet" then - card:set_edition("e_holo", true, nil, true) - end - if card.ability.name == "cry-stardust" then - card:set_edition("e_polychrome", true, nil, true) - end - if card.ability.name == "cry-universe" then - card:set_edition("e_cry_astral", true, nil, true) - end - -- Certain jokers such as Steel Joker and Driver's License depend on values set - -- during the update function. Cryptid can create jokers mid-scoring, meaning - -- those values will be unset during scoring unless update() is manually called. - card:update(0.016) -- dt is unused in the base game, but we're providing a realistic value anyway - - --Debuff jokers if certain boss blinds are active - if _type == "Joker" and G.GAME and G.GAME.blind and not G.GAME.blind.disabled then - if G.GAME.blind.name == "cry-box" - or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_box"] == true) then - if card.config.center.rarity == 1 and not card.debuff then - card.debuff = true - card.debuffed_by_blind = true - end - end - if G.GAME.blind.name == "cry-windmill" - or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_windmill"] == true) then - if card.config.center.rarity == 2 and not card.debuff then - card.debuff = true - card.debuffed_by_blind = true - end - end - if G.GAME.blind.name == "cry-striker" - or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_striker"] == true) then - if card.config.center.rarity == 3 and not card.debuff then - card.debuff = true - card.debuffed_by_blind = true - end - end - if G.GAME.blind.name == "cry-shackle" - or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_shackle"] == true) then - if (card.edition and card.edition.negative == true) and not card.debuff then - card.debuff = true - card.debuffed_by_blind = true - end - end - if G.GAME.blind.name == "cry-pin" - or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_pin"] == true) then - if (card.config.center.rarity ~= 3 - and card.config.center.rarity ~= 2 - and card.config.center.rarity ~= 1 - and card.config.center.rarity ~= 5) then - card.debuff = true - card.debuffed_by_blind = true - end - end - end - return card -end - --- Make tags fit if there's more than 13 of them -local at = add_tag -function add_tag(tag) - at(tag) - if #G.HUD_tags > 13 then - for i = 2, #G.HUD_tags do - G.HUD_tags[i].config.offset.y = 0.9 - 0.9 * 13 / #G.HUD_tags - end - end -end - ---add calculation context and callback to tag function -local at2 = add_tag -function add_tag(tag, from_skip, no_copy) - if no_copy then - at2(tag) - return - end - local added_tags = 1 - for i = 1, #G.jokers.cards do - local ret = G.jokers.cards[i]:calculate_joker({ cry_add_tag = true }) - if ret and ret.tags then - added_tags = added_tags + ret.tags - end - end - if added_tags >= 1 then - at2(tag) - end - for i = 2, added_tags do - local tag_table = tag:save() - local new_tag = Tag(tag.key) - new_tag:load(tag_table) - at2(new_tag) - end -end - -local tr = Tag.remove -function Tag:remove() - tr(self) - if #G.HUD_tags >= 13 then - for i = 2, #G.HUD_tags do - G.HUD_tags[i].config.offset.y = 0.9 - 0.9 * 13 / #G.HUD_tags - end - end -end - -local nr = new_round -function new_round() - G.hand:change_size(0) - nr() -end - -local gfcfbs = G.FUNCS.check_for_buy_space -G.FUNCS.check_for_buy_space = function(card) - if (card.ability.name == "cry-Negative Joker" and card.ability.extra >= 1) or - (card.ability.name == "cry-soccer" and card.ability.extra.holygrail >= 1) or - (card.ability.name == "cry-Tenebris" and card.ability.extra.slots >= 1) then - return true - end - return gfcfbs(card) -end - -local gfcsc = G.FUNCS.can_select_card -G.FUNCS.can_select_card = function(e) - if (e.config.ref_table.ability.name == "cry-Negative Joker" and e.config.ref_table.ability.extra >= 1) or - (e.config.ref_table.ability.name == "cry-soccer" and e.config.ref_table.ability.extra.holygrail >= 1) or - (e.config.ref_table.ability.name == "cry-Tenebris" and e.config.ref_table.ability.extra.slots >= 1) then - e.config.colour = G.C.GREEN - e.config.button = 'use_card' - else - gfcsc(e) - end -end - ---Redefine these here because they're always used -Cryptid.base_values = {} -function cry_misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack) - if name and ref_tbl and ref_value then - tbl = cry_deep_copy(ref_tbl[ref_value]) - for k, v in pairs(tbl) do - if (type(tbl[k]) ~= "table") or is_number(tbl[k]) then - if - is_number(tbl[k]) - and not (k == "id") - and not (k == "perish_tally") - and not (k == "colour") - and not (k == "suit_nominal") - and not (k == "base_nominal") - and not (k == "face_nominal") - and not (k == "qty") - and not (k == "x_mult" and v == 1 and not tbl.override_x_mult_check) - and not (k == "selected_d6_face") - then --Temp fix, even if I did clamp the number to values that wouldn't crash the game, the fact that it did get randomized means that there's a higher chance for 1 or 6 than other values - if not Cryptid.base_values[name] then - Cryptid.base_values[name] = {} - end - if not Cryptid.base_values[name][k] then - Cryptid.base_values[name][k] = tbl[k] - end - tbl[k] = cry_sanity_check( - clear and Cryptid.base_values[name][k] - or cry_format( - (stack and tbl[k] or Cryptid.base_values[name][k]) - * cry_log_random( - pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), - override and override.min or G.GAME.modifiers.cry_misprint_min, - override and override.max or G.GAME.modifiers.cry_misprint_max - ), - "%.2g" - ) - ) - end - else - for _k, _v in pairs(tbl[k]) do - if - is_number(tbl[k][_k]) - and not (_k == "id") - and not (k == "perish_tally") - and not (k == "colour") - and not (_k == "suit_nominal") - and not (_k == "base_nominal") - and not (_k == "face_nominal") - and not (_k == "qty") - and not (k == "x_mult" and v == 1 and not tbl[k].override_x_mult_check) - and not (_k == "selected_d6_face") - then --Refer to above - if not Cryptid.base_values[name] then - Cryptid.base_values[name] = {} - end - if not Cryptid.base_values[name][k] then - Cryptid.base_values[name][k] = {} - end - if not Cryptid.base_values[name][k][_k] then - Cryptid.base_values[name][k][_k] = tbl[k][_k] - end - tbl[k][_k] = cry_sanity_check( - clear and Cryptid.base_values[name][k][_k] - or cry_format( - (stack and tbl[k][_k] or Cryptid.base_values[name][k][_k]) - * cry_log_random( - pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), - override and override.min or G.GAME.modifiers.cry_misprint_min, - override and override.max or G.GAME.modifiers.cry_misprint_max - ), - "%.2g" - ) - ) - end - end - end - end - ref_tbl[ref_value] = tbl - end -end -function cry_misprintize_val(val, override) - if is_number(val) then - val = cry_sanity_check( - cry_format( - val - * cry_log_random( - pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), - override and override.min or G.GAME.modifiers.cry_misprint_min, - override and override.max or G.GAME.modifiers.cry_misprint_max - ), - "%.2g" - ) - ) - end - return val -end -function cry_sanity_check(val) - if not val or type(val) == "number" and (val ~= val or val > 1e300 or val < -1e300) then - return 1e300 - end - return val -end -function cry_misprintize(card, override, force_reset, stack) - if Card.no(card, "immutable", true) then force_reset = true end - --infinifusion compat - if card.infinifusion then - if card.config.center == card.infinifusion_center or card.config.center.key == 'j_infus_fused' then - calculate_infinifusion(card, nil, function(i) - cry_misprintize(card, override, force_reset, stack) - end) - end - end - if - (not force_reset or G.GAME.modifiers.cry_jkr_misprint_mod) - and (G.GAME.modifiers.cry_misprint_min or override or card.ability.set == "Joker") - and not stack or not Card.no(card, "immutable", true) - then - if G.GAME.modifiers.cry_jkr_misprint_mod and card.ability.set == "Joker" then - if not override then - override = {} - end - override.min = override.min or G.GAME.modifiers.cry_misprint_min or 1 - override.max = override.max or G.GAME.modifiers.cry_misprint_max or 1 - override.min = override.min * G.GAME.modifiers.cry_jkr_misprint_mod - override.max = override.max * G.GAME.modifiers.cry_jkr_misprint_mod - end - if G.GAME.modifiers.cry_misprint_min or override and override.min then - cry_misprintize_tbl(card.config.center_key, card, "ability", nil, override, stack) - if card.base then - cry_misprintize_tbl(card.config.card_key, card, "base", nil, override, stack) - end - end - if G.GAME.modifiers.cry_misprint_min then - --card.cost = cry_format(card.cost / cry_log_random(pseudoseed('cry_misprint'..G.GAME.round_resets.ante),override and override.min or G.GAME.modifiers.cry_misprint_min,override and override.max or G.GAME.modifiers.cry_misprint_max),"%.2f") - card.misprint_cost_fac = 1 - / cry_log_random( - pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), - override and override.min or G.GAME.modifiers.cry_misprint_min, - override and override.max or G.GAME.modifiers.cry_misprint_max - ) - card:set_cost() - end - else - cry_misprintize_tbl(card.config.center_key, card, "ability", true) - end - if card.ability.consumeable then - for k, v in pairs(card.ability.consumeable) do - card.ability.consumeable[k] = cry_deep_copy(card.ability[k]) - end - end -end -function cry_log_random(seed, min, max) - math.randomseed(seed) - local lmin = math.log(min, 2.718281828459045) - local lmax = math.log(max, 2.718281828459045) - local poll = math.random() * (lmax - lmin) + lmin - return math.exp(poll) -end -function cry_format(number, str) - if math.abs(to_big(number)) >= to_big(1e300) then - return number - end - return tonumber(str:format((Big and to_number(to_big(number)) or number))) -end ---use ID to work with glitched/misprint -function Card:get_nominal(mod) - local mult = 1 - local rank_mult = 1 - if mod == "suit" then - mult = 1000000 - end - if self.ability.effect == "Stone Card" or (self.config.center.no_suit and self.config.center.no_rank) then - mult = -10000 - elseif self.config.center.no_suit then - mult = 0 - elseif self.config.center.no_rank then - rank_mult = 0 - end - return 10 * (self.base.id or 0.1) * rank_mult - + self.base.suit_nominal * mult - + (self.base.suit_nominal_original or 0) * 0.0001 * mult - + 10 * self.base.face_nominal * rank_mult - + 0.000001 * self.unique_val -end - ---Cryptid (THE MOD) localization -local function parse_loc_txt(center) - center.text_parsed = {} - if not center.text then else - for _, line in ipairs(center.text) do - center.text_parsed[#center.text_parsed+1] = loc_parse_string(line) - end - center.name_parsed = {} - for _, line in ipairs(type(center.name) == 'table' and center.name or {center.name}) do - center.name_parsed[#center.name_parsed+1] = loc_parse_string(line) - end - if center.unlock then - center.unlock_parsed = {} - for _, line in ipairs(center.unlock) do - center.unlock_parsed[#center.unlock_parsed+1] = loc_parse_string(line) - end - end - end -end -local il = init_localization -function init_localization() - il() - if G.SETTINGS.language == "en-us" then - G.localization.descriptions.Spectral.c_cryptid.text[2] = "{C:attention}#2#{} selected card" - G.localization.descriptions.Spectral.c_talisman.text[2] = "to {C:attention}#1#{} selected" - G.localization.descriptions.Spectral.c_trance.text[2] = "to {C:attention}#1#{} selected" - G.localization.descriptions.Spectral.c_medium.text[2] = "to {C:attention}#1#{} selected" - G.localization.descriptions.Spectral.c_deja_vu.text[2] = "to {C:attention}#1#{} selected" - G.localization.descriptions.Spectral.c_deja_vu.text[2] = "to {C:attention}#1#{} selected" - G.localization.descriptions.Spectral.c_deja_vu.text[2] = "to {C:attention}#1#{} selected" - G.localization.descriptions.Voucher.v_antimatter.text[1] = "{C:dark_edition}+#1#{} Joker Slot" - G.localization.descriptions.Voucher.v_overstock_norm.text[1] = "{C:attention}+#1#{} card slot" - G.localization.descriptions.Voucher.v_overstock_plus.text[1] = "{C:attention}+#1#{} card slot" - G.localization.descriptions.Voucher.v_crystal_ball.text[1] = "{C:attention}+#1#{} consumable slot" - G.localization.descriptions.Joker.j_seance.text[1] = "If {C:attention}played hand{} contains a" -- damnit seance - end - if Cryptid.obj_buffer.Stake then - for i = 1, #Cryptid.obj_buffer.Stake do - local key = Cryptid.obj_buffer.Stake[i].key - local color = G.localization.descriptions.Stake[key] and G.localization.descriptions.Stake[key].colour - if color then - local sticker_key = key:sub(7).."_sticker" - if not G.localization.descriptions.Other[sticker_key] then - G.localization.descriptions.Other[sticker_key] = { - name = localize{type='variable',key='cry_sticker_name',vars={color}}[1], - text = localize{type='variable',key='cry_sticker_desc',vars={color,"{C:attention}","{}"}}, - } - parse_loc_txt(G.localization.descriptions.Other[sticker_key]) - end - end - end - end -end - -G.FUNCS.cry_asc_UI_set = function(e) -end - --- this is a hook to make funny "x of a kind"/"flush x" display text -local pokerhandinforef = G.FUNCS.get_poker_hand_info -function G.FUNCS.get_poker_hand_info(_cards) - local text, loc_disp_text, poker_hands, scoring_hand, disp_text = pokerhandinforef(_cards) - if G.SETTINGS.language == "en-us" then - if #scoring_hand > 5 and (text == 'Flush Five' or text == 'Five of a Kind') then - local rank_array = {} - local county = 0 - for i = 1, #scoring_hand do - local val = scoring_hand[i]:get_id() - rank_array[val] = (rank_array[val] or 0) + 1 - if rank_array[val] > county then county = rank_array[val] end - end - local function create_num_chunk(int) -- maybe useful enough to not be local? but tbh this function is probably some common coding exercise - if int >= 1000 then int = 999 end - local ones = {["1"] = "One", ["2"] = "Two", ["3"] = "Three", ["4"] = "Four", ["5"] = "Five", ["6"] = "Six", ["7"] = "Seven", ["8"] = "Eight", ["9"] = "Nine"} - local tens = {["1"] = "Ten", ["2"] = "Twenty", ["3"] = "Thirty", ["4"] = "Forty", ["5"] = "Fifty", ["6"] = "Sixty", ["7"] = "Seventy", ["8"] = "Eighty", ["9"] = "Ninety"} - local str_int = string.reverse(int.."") -- ehhhh whatever - local str_ret = "" - for i = 1, string.len(str_int) do - local place = str_int:sub(i, i) - if place ~= "0" then - if i == 1 then str_ret = ones[place] - elseif i == 2 then - if place == "1" and str_ret ~= "" then -- admittedly not my smartest moment, i dug myself into a hole here... - if str_ret == "One" then str_ret = "Eleven" - elseif str_ret == "Two" then str_ret = "Twelve" - elseif str_ret == "Three" then str_ret = "Thirteen" - elseif str_ret == "Five" then str_ret = "Fifteen" - elseif str_ret == "Eight" then str_ret = "Eighteen" - else str_ret = str_ret.."teen" end - else - str_ret = tens[place]..((string.len(str_ret) > 0 and " " or "")..str_ret) - end - elseif i == 3 then str_ret = ones[place]..(" Hundred"..((string.len(str_ret) > 0 and " and " or "")..str_ret)) end -- this line is wild - end - end - return str_ret - end - -- text gets stupid small at 100+ anyway - loc_disp_text = (text == 'Flush Five' and "Flush " or "")..((county < 1000 and create_num_chunk(county) or "Thousand")..(text == 'Five of a Kind' and " of a Kind" or "")) - end - end - - - - - - - local hand_table = { - ['High Card'] = G.GAME.used_vouchers.v_cry_hyperspacetether and 1 or nil, - ['Pair'] = G.GAME.used_vouchers.v_cry_hyperspacetether and 2 or nil, - ['Two Pair'] = 4, - ['Three of a Kind'] = G.GAME.used_vouchers.v_cry_hyperspacetether and 3 or nil, - ['Straight'] = next(SMODS.find_card('j_four_fingers')) and 4 or 5, - ['Flush'] = next(SMODS.find_card('j_four_fingers')) and 4 or 5, - ['Full House'] = 5, - ['Four of a Kind'] = G.GAME.used_vouchers.v_cry_hyperspacetether and 4 or nil, - ['Straight Flush'] = next(SMODS.find_card('j_four_fingers')) and 4 or 5, -- debatable - ['cry_Bulwark'] = 5, - ['Five of a Kind'] = 5, - ['Flush House'] = 5, - ['Flush Five'] = 5, - ['cry_Clusterfuck'] = 8, - ['cry_UltPair'] = 8, - ['cry_WholeDeck'] = 52, - } - - -- this is where all the logic for asc hands is. currently it's very simple but if you want more complex logic, here's the place to do it - if hand_table[text] then - G.GAME.current_round.current_hand.cry_asc_num = G.GAME.used_vouchers.v_cry_hyperspacetether and #_cards - hand_table[text] or #scoring_hand - hand_table[text] - else - G.GAME.current_round.current_hand.cry_asc_num = 0 - end - - - - G.GAME.current_round.current_hand.cry_asc_num_text = (G.GAME.current_round.current_hand.cry_asc_num and G.GAME.current_round.current_hand.cry_asc_num > 0) and " (+"..G.GAME.current_round.current_hand.cry_asc_num..")" or "" - return text, loc_disp_text, poker_hands, scoring_hand, disp_text -end - -function cry_ascend(num) -- edit this function at your leisure - return math.max(num, num*((1.25 + (0.05 * (G.GAME.sunnumber or 0)))^G.GAME.current_round.current_hand.cry_asc_num or 0)) -end - -function cry_pulse_flame(duration, intensity) -- duration is in seconds, intensity is in idfk honestly, but it increases pretty quickly - G.cry_flame_override = G.cry_flame_override or {} - G.cry_flame_override["duration"] = duration or 0.01 - G.cry_flame_override["intensity"] = intensity or 2 -end - ---Will be moved to D20 file when that gets added -function roll_dice(seed, min, max, config) - local val - while not val or (config and config.ignore_value == val) do - val = pseudorandom(seed, min, max) - end - return val -end - -function SMODS.current_mod.reset_game_globals(run_start) - G.GAME.cry_ach_conditions = G.GAME.cry_ach_conditions or {} -end - ---Fix a corrupted game state -function Controller:queue_L_cursor_press(x, y) - if self.locks.frame then - return - end - if G.STATE == G.STATES.SPLASH then - if not G.HUD then - self:key_press("escape") - else - G.STATE = G.STATES.BLIND_SELECT - end - end - self.L_cursor_queue = { x = x, y = y } -end - ---Used to check to play the exotic music -function cry_has_exotic() - if G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.rarity == "cry_exotic" then - return true - end - end - end -end ---Used for m vouchers, perhaps this can have more applications in the future -function get_m_jokers() - local mcount = 0 - if G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.effect == "M Joker" then - mcount = mcount + 1 - end - if G.jokers.cards[i].ability.name == "cry-mprime" then - mcount = mcount + 1 - end - end - end - return mcount -end - --- Check G.GAME as well as joker info for banned keys -function Card:no(m, no_no) - if no_no then - -- Infinifusion Compat - if self.infinifusion then - for i = 1, #self.infinifusion do - if G.P_CENTERS[self.infinifusion[i].key][m] or (G.GAME and G.GAME[m] and G.GAME[m][self.infinifusion[i].key]) then - return true - end - end - return false - end - if not self.config then - --assume this is from one component of infinifusion - return G.P_CENTERS[self.key][m] or (G.GAME and G.GAME[m] and G.GAME[m][self.key]) - end - - return self.config.center[m] or (G.GAME and G.GAME[m] and G.GAME[m][self.config.center_key]) or false - end - return Card.no(self, "no_"..m, true) -end - -function center_no(center, m, key, no_no) - if no_no then - return center[m] or (G.GAME and G.GAME[m] and G.GAME[m][key]) or false - end - return center_no(center, "no_"..m, key, true) -end - --- Fix a CCD-related crash -local cuc = Card.can_use_consumeable -function Card:can_use_consumeable(any_state, skip_check) - if not self.ability.consumeable then - return false - end - return cuc(self, any_state, skip_check) -end - ---make this always active to prevent crashes -function cry_apply_ante_tax() - if G.GAME.modifiers.cry_ante_tax then - local tax = math.max( - 0, - math.min(G.GAME.modifiers.cry_ante_tax_max, math.floor(G.GAME.modifiers.cry_ante_tax * G.GAME.dollars)) - ) - ease_dollars(-1 * tax) - return true - end - return false -end - ---Stickers and modifiers used by Challenges+Stakes -SMODS.Atlas({ - key = "sticker", - path = "sticker_cry.png", - px = 71, - py = 95, - inject = function(self) - local file_path = type(self.path) == "table" - and (self.path[G.SETTINGS.language] or self.path["default"] or self.path["en-us"]) - or self.path - if file_path == "DEFAULT" then - return - end - -- language specific sprites override fully defined sprites only if that language is set - if self.language and not (G.SETTINGS.language == self.language) then - return - end - if not self.language and self.obj_table[("%s_%s"):format(self.key, G.SETTINGS.language)] then - return - end - self.full_path = (self.mod and self.mod.path or SMODS.path) - .. "assets/" - .. G.SETTINGS.GRAPHICS.texture_scaling - .. "x/" - .. file_path - local file_data = - assert(NFS.newFileData(self.full_path), ("Failed to collect file data for Atlas %s"):format(self.key)) - self.image_data = assert( - love.image.newImageData(file_data), - ("Failed to initialize image data for Atlas %s"):format(self.key) - ) - self.image = - love.graphics.newImage(self.image_data, { mipmaps = true, dpiscale = G.SETTINGS.GRAPHICS.texture_scaling }) - G[self.atlas_table][self.key_noloc or self.key] = self - G.shared_sticker_banana = - Sprite(0, 0, G.CARD_W, G.CARD_H, G[self.atlas_table][self.key_noloc or self.key], { x = 5, y = 2 }) - G.shared_sticker_pinned = - Sprite(0, 0, G.CARD_W, G.CARD_H, G[self.atlas_table][self.key_noloc or self.key], { x = 5, y = 0 }) - end, -}) -function Card:set_perishable(_perishable) - self.ability.perishable = nil - if - (self.config.center.perishable_compat or G.GAME.modifiers.cry_any_stickers) - and (not self.ability.eternal or G.GAME.modifiers.cry_eternal_perishable_compat) - then - self.ability.perishable = true - self.ability.perish_tally = G.GAME.perishable_rounds or 5 - end -end -function Card:set_eternal(_eternal) - self.ability.eternal = nil - if - (self.config.center.eternal_compat or G.GAME.modifiers.cry_any_stickers) - and (not self.ability.perishable or G.GAME.modifiers.cry_eternal_perishable_compat) - then - self.ability.eternal = _eternal - end -end -function Card:calculate_banana() - if not self.ability.extinct then - if self.ability.banana and (pseudorandom("banana") < G.GAME.probabilities.normal / 10) then - self.ability.extinct = true - G.E_MANAGER:add_event(Event({ - func = function() - play_sound("tarot1") - self.T.r = -0.2 - self:juice_up(0.3, 0.4) - self.states.drag.is = true - self.children.center.pinch.x = true - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - blockable = false, - func = function() - if self.area then - self.area:remove_card(self) - end - self:remove() - self = nil - return true - end, - })) - return true - end, - })) - card_eval_status_text(self, "jokers", nil, nil, nil, { message = localize("k_extinct_ex"), delay = 0.1 }) - return true - elseif self.ability.banana then - card_eval_status_text(self, "jokers", nil, nil, nil, { message = localize("k_safe_ex"), delay = 0.1 }) - return false - end - end - return false -end -function Card:set_banana(_banana) - self.ability.banana = _banana -end -function Card:set_pinned(_pinned) - self.pinned = _pinned -end - ---Gradients based on Balatrostuck code -local upd = Game.update -Cryptid.C = { - EXOTIC = { HEX("708b91"), HEX("1e9eba") }, - TWILIGHT = { HEX("0800ff"), HEX("aa00ff") }, - VERDANT = { HEX("00ff22"), HEX("f4ff57") }, - EMBER = { HEX("ff0000"), HEX("ffae00") }, - DAWN = { HEX("00aaff"), HEX("ff00e3") }, - HORIZON = { HEX("c8fd09"), HEX("1ee7d9") }, - BLOSSOM = { HEX("ff09da"), HEX("ffd121") }, - AZURE = { HEX("0409ff"), HEX("63dcff") }, - ASCENDANT = { HEX("2e00f5"), HEX("e5001d") }, - JOLLY = { HEX("6ec1f5"), HEX("456b84") }, -} -function Game:update(dt) - upd(self, dt) - local anim_timer = self.TIMERS.REAL * 1.5 - local p = 0.5 * (math.sin(anim_timer) + 1) - for k, c in pairs(Cryptid.C) do - if not G.C["CRY_" .. k] then - G.C["CRY_" .. k] = { 0, 0, 0, 0 } - end - for i = 1, 4 do - G.C["CRY_" .. k][i] = c[1][i] * p + c[2][i] * (1 - p) - end - end - G.C.RARITY["cry_exotic"] = G.C.CRY_EXOTIC - if Incantation and not CryptidIncanCompat then - AllowStacking("Code") - AllowDividing("Code") - CryptidIncanCompat = true - end -end - -local jokers = { - "j_gros_michel", - "j_egg", - "j_ice_cream", - "j_cavendish", - "j_turtle_bean", - "j_diet_cola", - "j_popcorn", - "j_ramen", - "j_selzer", -} -if Cryptid.enabled["Misc. Jokers"] then - jokers[#jokers + 1] = "j_cry_pickle" - jokers[#jokers + 1] = "j_cry_chili_pepper" -end -if Cryptid.enabled["Epic Jokers"] then - jokers[#jokers + 1] = "j_cry_oldcandy" - jokers[#jokers + 1] = "j_cry_caramel" -end -if Cryptid.enabled["M Jokers"] then - jokers[#jokers + 1] = "j_cry_foodm" -end -if Cryptid.enabled["Spooky"] then - jokers[#jokers + 1] = "j_cry_cotton_candy" - jokers[#jokers + 1] = "j_cry_wrapped" - jokers[#jokers + 1] = "j_cry_candy_cane" - jokers[#jokers + 1] = "j_cry_candy_buttons" - jokers[#jokers + 1] = "j_cry_jawbreaker" - jokers[#jokers + 1] = "j_cry_mellowcreme" - jokers[#jokers + 1] = "j_cry_brittle" -end -for i = 1, #jokers do - Cryptid.food[#Cryptid.food+1] = jokers[i] -end -function Cryptid.get_food(seed) - local food_keys = {} - for k, v in pairs(Cryptid.food) do - if not G.GAME.banned_keys[v] and G.P_CENTERS[v] then - table.insert(food_keys, v) - end - end - if #food_keys <= 0 then - return "j_reserved_parking" - else - return pseudorandom_element(food_keys, pseudoseed(seed)) - end -end -SMODS.Sound({ - key = "meow1", - path = "meow1.ogg", -}) -SMODS.Sound({ - key = "meow2", - path = "meow2.ogg", -}) -SMODS.Sound({ - key = "meow3", - path = "meow3.ogg", -}) -SMODS.Sound({ - key = "meow4", - path = "meow4.ogg", -}) -SMODS.Sound({ - key = "e_mosaic", - path = "e_mosaic.ogg", -}) -SMODS.Sound({ - key = "e_glitched", - path = "e_glitched.ogg", -}) -SMODS.Sound({ - key = "e_oversaturated", - path = "e_oversaturated.ogg", -}) -SMODS.Sound({ - key = "e_blur", - path = "e_blur.ogg", -}) -SMODS.Sound({ - key = "e_double_sided", - path = "e_double_sided.ogg", -}) -SMODS.Sound({ - key = "e_jolly", - path = "e_jolly.ogg", -}) -SMODS.Sound({ - key = "e_noisy", - path = "e_noisy.ogg", -}) -SMODS.Sound({ - key = "e_fragile", - path = "e_fragile.ogg", -}) -SMODS.Sound({ - key = "e_golden", - path = "e_golden.ogg", -}) -SMODS.Sound({ - key = "studiofromhelsinki", - path = "studiofromhelsinki.ogg", -}) -SMODS.Sound({ - key = "music_jimball", - path = "music_jimball.ogg", - sync = false, - pitch = 1, - select_music_track = function() - return next(find_joker("cry-Jimball")) and Cryptid_config.Cryptid.jimball_music and 1.57e308 - end, -}) -SMODS.Sound({ - key = "music_code", - path = "music_code.ogg", - select_music_track = function() - return Cryptid_config.Cryptid.code_music - and ( - ( - G.pack_cards - and G.pack_cards.cards - and G.pack_cards.cards[1] - and G.pack_cards.cards[1].ability.set == "Code" - ) or (G.GAME and G.GAME.USING_CODE) - ) - end, -}) -SMODS.Sound({ - key = "music_big", - path = "music_big.ogg", - select_music_track = function() - return Cryptid_config.Cryptid.big_music and to_big(G.GAME.round_scores["hand"].amt) > to_big(10) ^ 1000000 - end, -}) -SMODS.Sound({ - key = "music_exotic", - path = "music_exotic.ogg", - volume = 0.4, - select_music_track = function() - return Cryptid_config.Cryptid.exotic_music and cry_has_exotic() - end, -}) - ---Requires Malverk Mod -if (SMODS.Mods["malverk"] or {}).can_load then - AltTexture({ - key = 'jolly_jokers', - set = 'Joker', - path = 'jolly.png', - loc_txt = { - name = 'Jolly Jokers' - } - }) - TexturePack{ -- HD Texture Pack - key = 'jolly_texture', - textures = { - 'cry_jolly_jokers', - }, - loc_txt = { - name = 'Jolly', - text = { - 'Jolly Jokers lmao', - 'Art by B' - } - } - } -end ---Make Ortalab's Locked jokers not show up on Deck of Equilibrium and Antimatter Deck -if (SMODS.Mods["ortalab"] or {}).can_load then - for i = 1, 150 do - print(i) - SMODS.Joker:take_ownership('ortalab_temp_' .. i, { - name = "Cry-skibidi", - no_doe = true - }) - end -end -SMODS.Atlas({ - key = "modicon", - path = "cry_icon.png", - px = 32, - py = 32, -}):register() -SMODS.Atlas({ - key = "placeholders", - path = "placeholders.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlasepic", - path = "atlasepic.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlasone", - path = "atlasone.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlastwo", - path = "atlastwo.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlasthree", - path = "atlasthree.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlasspooky", - path = "atlasspooky.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlasexotic", - path = "atlasexotic.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "atlasnotjokers", --this is easier to spell then consumables - path = "atlasnotjokers.png", - px = 71, - py = 95, -}):register() -SMODS.Atlas({ - key = "tag_cry", - path = "tag_cry.png", - px = 34, - py = 34, -}):register() ---Enchancements, seals, other misc things etc -SMODS.Atlas({ - key = "cry_misc", - path = "cry_misc.png", - px = 71, - py = 95, -}):register() -SMODS.Sticker:take_ownership("perishable", { - atlas = "sticker", - pos = { x = 4, y = 4 }, - prefix_config = { key = false }, - loc_vars = function(self, info_queue, card) - if card.ability.consumeable then - return { key = "cry_perishable_consumeable" } - elseif card.ability.set == "Voucher" then - return { - key = "cry_perishable_voucher", - vars = { - G.GAME.cry_voucher_perishable_rounds or 1, - card.ability.perish_tally or G.GAME.cry_voucher_perishable_rounds, - }, - } - elseif card.ability.set == "Booster" then - return { key = "cry_perishable_booster" } - else - return { vars = { G.GAME.perishable_rounds or 1, card.ability.perish_tally or G.GAME.perishable_rounds } } - end - end, -}) -SMODS.Sticker:take_ownership("pinned", { - atlas = "sticker", - pos = { x = 5, y = 0 }, - prefix_config = { key = false }, - loc_vars = function(self, info_queue, card) - if card.ability.consumeable then - return { key = "cry_pinned_consumeable" } -- this doesn't work. i want this to work :( - elseif card.ability.set == "Voucher" then - return { key = "cry_pinned_voucher" } - elseif card.ability.set == "Booster" then - return { key = "cry_pinned_booster" } - end - end, -}) -SMODS.Sticker:take_ownership("eternal", { - loc_vars = function(self, info_queue, card) - if card.ability.set == "Voucher" then - return { key = "cry_eternal_voucher" } - elseif card.ability.set == "Booster" then - return { key = "cry_eternal_booster" } - end - end, -}) -SMODS.Sticker:take_ownership("rental", { - loc_vars = function(self, info_queue, card) - if card.ability.consumeable then - return { key = "cry_rental_consumeable", vars = { G.GAME.cry_consumeable_rental_rate or 1 } } - elseif card.ability.set == "Voucher" then - return { key = "cry_rental_voucher", vars = { G.GAME.cry_voucher_rental_rate or 1 } } - elseif card.ability.set == "Booster" then - return { key = "cry_rental_booster" } - else - return { vars = { G.GAME.rental_rate or 1 } } - end - end, -}) - ---Sticker calc for playing cards -local ec = eval_card -function eval_card(card, context) - local ret = ec(card, context) - if card and (card.area == G.hand or card.area == G.play or card.area == G.discard or card.area == G.deck) then - for k, v in pairs(SMODS.Stickers) do - if card.ability[k] and v.calculate and type(v.calculate) == "function" then - context.from_playing_card = true - context.ret = ret - v:calculate(card, context) - end - end - end - return ret -end -function create_cryptid_notif_overlay(key) - if not G.SETTINGS.cryptid_notifs then -- I want this to be across profiles - G.SETTINGS.cryptid_notifs = {} - end - if not G.SETTINGS.cryptid_notifs[key] then - G.E_MANAGER:add_event(Event({ - trigger = 'immediate', - no_delete = true, - func = (function() - if not G.OVERLAY_MENU then - G.SETTINGS.paused = true - G.FUNCS.overlay_menu{ - definition = create_UIBox_cryptid_notif(key), - } - play_sound('foil1', 0.7, 0.3) - play_sound('gong', 1.4, 0.15) - G.SETTINGS.cryptid_notifs[key] = true - G:save_settings() - return true - end - end) - }), 'unlock') - end -end - -function create_UIBox_cryptid_notif(key) - local t = create_UIBox_generic_options({padding = 0,back_label = localize('b_continue'), no_pip = true, snap_back = true, back_func = 'continue_unlock', minw = 4.5, contents = { - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.1}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.1}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.O, config={object = DynaText({string = {localize('cry_notif_'..key..'_1')}, colours = {G.C.BLUE},shadow = true, rotate = true, bump = true, pop_in = 0.3, pop_in_rate = 2, scale = 1.2})}} - }}, - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.O, config={object = DynaText({string = {localize('cry_notif_'..key..'_2')}, colours = {G.C.RED},shadow = true, rotate = true, bump = true, pop_in = 0.6, pop_in_rate = 2, scale = 0.8})}} - }}, - }}, - {n=G.UIT.R, config={align = "cm", padding = 0.2}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.05, emboss = 0.05, colour = G.C.WHITE, r = 0.1}, nodes={ - Cryptid.notifications[key].nodes() - }} - }} - }}, - Cryptid.notifications[key].cta and {n=G.UIT.R, config={id = 'overlay_menu_back_button', align = "cm", minw = 2.5, padding =0.1, r = 0.1, hover = true, colour = G.C.BLUE, button = "notif_"..key, shadow = true, focus_args = {nav = 'wide', button = 'b'}}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0, no_fill = true}, nodes={ - {n=G.UIT.T, config={text = localize(Cryptid.notifications[key].cta.label), scale = 0.5, colour = G.C.UI.TEXT_LIGHT, shadow = true, func = 'set_button_pip', focus_args = {button = 'b'}}} - }} - }} or nil - }} - }}) - return t - end - --- I couldn't figure out how to use localization for this, so this implementation is pretty scuffed -Cryptid.notifications = { - jimball = { - nodes = function() return {n=G.UIT.R, config={align = "cm", colour = empty and G.C.CLEAR or G.C.UI.BACKGROUND_WHITE, r = 0.1, padding = 0.04, minw = 2, minh = 0.8, emboss = not empty and 0.05 or nil, filler = true}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0.03}, nodes={ - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.T, config={text = localize('cry_notif_jimball_d1'), scale = 0.5, colour = G.C.BLACK}}, - }}, - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.T, config={text = localize('cry_notif_jimball_d2'), scale = 0.5, colour = G.C.BLACK}}, - }}, - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - {n=G.UIT.T, config={text = localize('cry_notif_jimball_d3'), scale = 0.5, colour = G.C.BLACK}}, - }}, - }} - }} end, - cta = { - label = "k_disable_music" - } - } -} ----------------------------------------------- -------------MOD CODE END---------------------- +SMODS.current_mod.config_tab = cryptidConfigTab diff --git a/Cryptid/Items/Antimatter.lua b/Cryptid/Items/Antimatter.lua deleted file mode 100644 index 3050dec..0000000 --- a/Cryptid/Items/Antimatter.lua +++ /dev/null @@ -1,215 +0,0 @@ -local blank = { - object_type = "Back", - name = "cry-Blank", - key = "blank", - order = 75, - pos = { x = 1, y = 0 }, - atlas = "blank", -} -local blank_sprite = { - object_type = "Atlas", - key = "blank", - path = "atlasdeck.png", - px = 71, - py = 95, -} -local antimatter = { - object_type = "Back", - name = "cry-Antimatter", - order = 76, - key = "antimatter", - config = { - cry_antimatter = true, - discards = 1, --Red Deck: 1 - hands = 1, --Blue Deck: 1 - dollars = 10, --Yellow Deck - extra_hand_bonus = 2, - extra_discard_bonus = 1, --Green Deck - joker_slot = 1, --Black Deck: 1 - vouchers = { - "v_crystal_ball", - "v_telescope", - "v_tarot_merchant", - "v_planet_merchant", - "v_overstock_norm", - "v_overstock_plus", - }, --Vouchers from all decks - consumables = { "c_fool", "c_fool", "c_hex" }, --Consumables from all decks - spectral_rate = 2, --Ghost Deck - remove_faces = true, --Abandoned Deck - hand_size = 3, --Painted Deck & Infinite deck - randomize_rank_suit = true, --Erratic Deck - cry_equilibrium = true, --Deck of Equilibrium - cry_misprint_min = 1, - cry_misprint_max = 10, --Misprint Deck - cry_highlight_limit = 1e20, --Infinite Deck - cry_wormhole = true, - cry_negative_rate = 20, --Wormhole Deck - cry_redeemed = true, --Redeemed Deck - cry_crit_rate = 0.25, --Critical Deck - cry_encoded = true, --Encoded Deck - cry_legendary = true, - cry_legendary_rate = 0.2, --Legendary Deck - cry_spooky = true, --Spooky Deck - cry_curse_rate = 0, - -- Enhanced Decks - cry_force_enhancement = "random", - cry_force_edition = "random", - cry_force_seal = "random", - cry_boss_blocked = { "bl_goad", "bl_window", "bl_club", "bl_head" }, - cry_forced_draw_amount = 5, - cry_common_value_quad = true, - }, - pos = { x = 2, y = 0 }, - trigger_effect = function(self, args) - if args.context == "final_scoring_step" then - --Critical Deck - local crit_poll = pseudorandom(pseudoseed("cry_critical")) - crit_poll = crit_poll / (G.GAME.probabilities.normal or 1) - if crit_poll < self.config.cry_crit_rate 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 = 4, - align = "cm", - offset = { x = 0, y = -1.7 }, - major = G.play, - }) - return true - end, - })) - end - delay(0.6) - --Plasma Deck - local tot = args.chips + args.mult - args.chips = math.floor(tot / 2) - args.mult = math.floor(tot / 2) - update_hand_text({ delay = 0 }, { mult = args.mult, chips = args.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) - return args.chips, args.mult - end - --Glowing Deck & Legendary Deck - if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then - --Glowing Deck - for i = 1, #G.jokers.cards do - cry_with_deck_effects(G.jokers.cards[i], function(card) - cry_misprintize(card, { min = 1.25, max = 1.25 }, nil, true) - end) - end - --Legendary Deck - 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 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 - --Anaglyph Deck - 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, - apply = function(self) - --Checkered Deck - G.E_MANAGER:add_event(Event({ - func = function() - for k, v in pairs(G.playing_cards) do - if v.base.suit == 'Clubs' then - v:change_suit('Spades') - end - if v.base.suit == 'Diamonds' then - v:change_suit('Hearts') - end - end - return true - end - })) - end, - atlas = "blank", -} -return { - name = "Antimatter Deck", - init = function() end, - items = { blank_sprite, blank, antimatter }, -} diff --git a/Cryptid/Items/CodeCards.lua b/Cryptid/Items/CodeCards.lua deleted file mode 100644 index 776ccab..0000000 --- a/Cryptid/Items/CodeCards.lua +++ /dev/null @@ -1,4606 +0,0 @@ ---note to self: refer to https://docs.google.com/document/d/1LNaIouU3vrtWIuPBdFCqLyjYAjVtq7t64xjHnckEY50/edit for order of remaining consumables -local code = { - object_type = "ConsumableType", - key = "Code", - primary_colour = HEX("14b341"), - secondary_colour = HEX("12f254"), - collection_rows = { 4, 4 }, -- 4 pages for all code cards - shop_rate = 0.0, - loc_txt = {}, - default = (SMODS.Mods['jen'] or {}).can_load and "c_cry_oboe" or "c_cry_crash", - can_stack = true, - can_divide = true, -} -local code_atlas = { - object_type = "Atlas", - key = "code", - path = "c_cry_code.png", - px = 71, - py = 95, -} -SMODS.UndiscoveredSprite({ - key = "Code", - atlas = "code", - path = "c_cry_code.png", - pos = { x = 2, y = 5 }, - px = 71, - py = 95, -}):register() -SMODS.UndiscoveredSprite({ --todo change? - key = "Unique", - atlas = "code", - path = "c_cry_code.png", - pos = { x = 2, y = 5 }, - px = 71, - py = 95, -}):register() -local pack_atlas = { - object_type = "Atlas", - key = "pack", - path = "pack_cry.png", - px = 71, - py = 95, -} -local pack1 = { - object_type = "Booster", - key = "code_normal_1", - kind = "Code", - atlas = "pack", - pos = { x = 0, y = 0 }, - config = { extra = 2, choose = 1 }, - cost = 4, - order = 1, - weight = 0.96, - create_card = function(self, card) - return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") - end, - ease_background_colour = function(self) - ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) - ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) - end, - loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } - end, - group_key = "k_cry_program_pack", -} -local pack2 = { - object_type = "Booster", - key = "code_normal_2", - kind = "Code", - atlas = "pack", - pos = { x = 1, y = 0 }, - config = { extra = 2, choose = 1 }, - cost = 4, - order = 2, - weight = 0.96, - create_card = function(self, card) - return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") - end, - ease_background_colour = function(self) - ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) - ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) - end, - loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } - end, - group_key = "k_cry_program_pack", -} -local packJ = { - object_type = "Booster", - key = "code_jumbo_1", - kind = "Code", - atlas = "pack", - pos = { x = 2, y = 0 }, - config = { extra = 4, choose = 1 }, - cost = 6, - order = 3, - weight = 0.48, - create_card = function(self, card) - return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") - end, - ease_background_colour = function(self) - ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) - ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) - end, - loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } - end, - group_key = "k_cry_program_pack", -} -local packM = { - object_type = "Booster", - key = "code_mega_1", - kind = "Code", - atlas = "pack", - pos = { x = 3, y = 0 }, - config = { extra = 4, choose = 2 }, - cost = 8, - order = 4, - weight = 0.12, - create_card = function(self, card) - return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") - end, - ease_background_colour = function(self) - ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) - ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) - end, - loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } - end, - group_key = "k_cry_program_pack", -} -local console = { - object_type = "Tag", - atlas = "tag_cry", - name = "cry-Console Tag", - order = 26, - pos = { x = 3, y = 2 }, - config = { type = "new_blind_choice" }, - key = "console", - min_ante = 2, - loc_vars = function(self, info_queue) - info_queue[#info_queue + 1] = { set = "Other", key = "p_cry_code_normal_1", specific_vars = { 1, 2 } } - return { vars = {} } - end, - apply = function(self, tag, context) - if context.type == "new_blind_choice" then - tag:yep("+", G.C.SECONDARY_SET.Code, function() - local key = "p_cry_code_normal_" .. math.random(1, 2) - local card = Card( - G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2, - G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2, - G.CARD_W * 1.27, - G.CARD_H * 1.27, - G.P_CARDS.empty, - G.P_CENTERS[key], - { bypass_discovery_center = true, bypass_discovery_ui = true } - ) - card.cost = 0 - card.from_tag = true - G.FUNCS.use_card({ config = { ref_table = card } }) - if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then - card:set_edition(nil, true, true) - elseif G.GAME.modifiers.cry_force_random_edition then - local edition = cry_poll_random_edition() - card:set_edition(edition, true, true) - end - card:start_materialize() - return true - end) - tag.triggered = true - return true - end - end, -} -local crash = { - object_type = "Consumable", - set = "Code", - name = "cry-Crash", - key = "crash", - pos = { x = 0, y = 0 }, - config = {}, - cost = 4, - atlas = "code", - order = 1, - can_use = function(self, card) - return true - end, - use = function(self, card, area, copier) - if not G.PROFILES[G.SETTINGS.profile].consumeable_usage["c_cry_crash"] then - set_consumeable_usage(card) - end - -- I'm being VERY safe here, game gets really weird and sometimes does and doesn't save ://CRASH use - G:save_settings() - G:save_progress() - local f = pseudorandom_element(crashes, pseudoseed("cry_crash")) - f(self, card, area, copier) - end, -} - -local payload = { - object_type = "Consumable", - set = "Code", - name = "cry-Payload", - key = "payload", - pos = { x = 1, y = 0 }, - config = { interest_mult = 3 }, - loc_vars = function(self, info_queue, center) - return { vars = { self.config.interest_mult } } - end, - cost = 4, - atlas = "code", - order = 2, - can_use = function(self, card) - return true - end, - can_bulk_use = true, - use = function(self, card, area, copier) - if G.GAME.dollars > 1e10 then - G.GAME.cry_payload = 3 - else - G.GAME.cry_payload = (G.GAME.cry_payload or 1) * card.ability.interest_mult - end - end, - bulk_use = function(self, card, area, copier, number) - if G.GAME.dollars > 1e10 then - G.GAME.cry_payload = 3 - else - G.GAME.cry_payload = (G.GAME.cry_payload or 1) * card.ability.interest_mult ^ number - end - end, -} -local reboot = { - object_type = "Consumable", - set = "Code", - name = "cry-Reboot", - key = "reboot", - pos = { x = 2, y = 0 }, - config = {}, - cost = 4, - atlas = "code", - order = 3, - can_use = function(self, card) - return G.STATE == G.STATES.SELECTING_HAND - end, - use = function(self, card, area, copier) - G.FUNCS.draw_from_hand_to_discard() - G.FUNCS.draw_from_discard_to_deck() - ease_discard( - math.max(0, G.GAME.round_resets.discards + G.GAME.round_bonus.discards) - G.GAME.current_round.discards_left - ) - ease_hands_played( - math.max(1, G.GAME.round_resets.hands + G.GAME.round_bonus.next_hands) - G.GAME.current_round.hands_left - ) - for k, v in pairs(G.playing_cards) do - v.ability.wheel_flipped = nil - end - G.E_MANAGER:add_event(Event({ - trigger = "immediate", - func = function() - G.STATE = G.STATES.DRAW_TO_HAND - G.deck:shuffle("cry_reboot" .. G.GAME.round_resets.ante) - G.deck:hard_set_T() - G.STATE_COMPLETE = false - return true - end, - })) - end, -} - -local revert = { - object_type = "Consumable", - set = "Code", - name = "cry-Revert", - key = "revert", - pos = { x = 3, y = 0 }, - config = {}, - cost = 4, - atlas = "code", - order = 4, - can_use = function(self, card) - return G.GAME.cry_revert - end, - use = function(self, card, area, copier) - G.E_MANAGER:add_event( - Event({ - trigger = "after", - delay = G.SETTINGS.GAMESPEED, - func = function() - G:delete_run() - G:start_run({ - savetext = STR_UNPACK(G.GAME.cry_revert), - }) - end, - }), - "other" - ) - end, -} - -local semicolon = { - object_type = "Consumable", - set = "Code", - name = "cry-Semicolon", - key = "semicolon", - pos = { - x = 0, - y = 1, - }, - config = {}, - cost = 4, - atlas = "code", - order = 32, - can_use = function(self, card) - return G.STATE == G.STATES.SELECTING_HAND and not G.GAME.blind.boss - end, - use = function(self, card, area, copier) - G.E_MANAGER:add_event( - Event({ - trigger = "immediate", - func = function() - if G.STATE ~= G.STATES.SELECTING_HAND then - return false - end - G.GAME.current_round.semicolon = true - G.STATE = G.STATES.HAND_PLAYED - G.STATE_COMPLETE = true - end_round() - return true - end, - }), - "other" - ) - end, -} - -local malware = { - object_type = "Consumable", - set = "Code", - name = "cry-Malware", - key = "malware", - pos = { - x = 1, - y = 1, - }, - config = {}, - cost = 4, - atlas = "code", - order = 9, - can_use = function(self, card) - return #G.hand.cards > 0 - end, - use = function(self, card, area, copier) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - card:juice_up(0.3, 0.5) - return true - end, - })) - for i = 1, #G.hand.cards do - local percent = 1.15 - (i - 0.999) / (#G.hand.cards - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.cards[i]:flip() - play_sound("card1", percent) - G.hand.cards[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.hand.cards do - local CARD = G.hand.cards[i] - local percent = 0.85 + (i - 0.999) / (#G.hand.cards - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - CARD:set_edition({ - cry_glitched = true, - }) - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - end, -} - -local seed = { - object_type = "Consumable", - set = "Code", - name = "cry-Seed", - key = "seed", - pos = { - x = 3, - y = 1, - }, - config = {}, - cost = 4, - atlas = "code", - order = 12, - can_use = function(self, card) - --the card itself and one other card - return #G.jokers.highlighted - + #G.hand.highlighted - + #G.consumeables.highlighted - + (G.pack_cards and #G.pack_cards.highlighted or 0) - == 2 - end, - loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = { key = "cry_rigged", set = "Other", vars = {} } - end, - use = function(self, card, area, copier) - if area then - area:remove_from_highlighted(card) - end - if G.jokers.highlighted[1] then - G.jokers.highlighted[1].ability.cry_rigged = true - if G.jokers.highlighted[1].config.center.key == "j_cry_googol_play" then - check_for_unlock({ type = "googol_play_rigged" }) - end - end - if G.hand.highlighted[1] then - G.hand.highlighted[1].ability.cry_rigged = true - end - if G.consumeables.highlighted[1] then - G.consumeables.highlighted[1].ability.cry_rigged = true - end - if G.pack_cards and G.pack_cards.highlighted[1] then - G.pack_cards.highlighted[1].ability.cry_rigged = true - end - end, -} -local rigged = { - object_type = "Sticker", - atlas = "sticker", - pos = { x = 6, y = 1 }, - key = "cry_rigged", - no_sticker_sheet = true, - prefix_config = { key = false }, - badge_colour = HEX("14b341"), - draw = function(self, card) --don't draw shine - if not G.shared_stickers["cry_rigged2"] then - G.shared_stickers["cry_rigged2"] = Sprite(0, 0, G.CARD_W, G.CARD_H, G.ASSET_ATLAS["cry_sticker"], { x = 5, y = 1 }) - end -- no matter how late i init this, it's always late, so i'm doing it in the damn draw function - - G.shared_stickers[self.key].role.draw_major = card - G.shared_stickers["cry_rigged2"].role.draw_major = card - - G.shared_stickers[self.key]:draw_shader("dissolve", nil, nil, nil, card.children.center) - - card.hover_tilt = card.hover_tilt/2 -- call it spaghetti, but it's what hologram does so... - G.shared_stickers["cry_rigged2"]:draw_shader("dissolve", nil, nil, nil, card.children.center) - G.shared_stickers["cry_rigged2"]:draw_shader("hologram", nil, card.ARGS.send_to_shader, nil, card.children.center) -- this doesn't really do much tbh, but the slight effect is nice - card.hover_tilt = card.hover_tilt*2 - end, -} - -local hook = { - object_type = "Consumable", - set = "Code", - name = "cry-Hook", - key = "hook", - pos = { - x = 0, - y = 4, - }, - config = {}, - cost = 4, - atlas = "code", - order = 14, - no_pool_flag = "beta_deck", - can_use = function(self, card) - return #G.jokers.highlighted == 2 - end, - loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = { key = "cry_hooked", set = "Other", vars = { "hooked Joker" } } - end, - use = function(self, card, area, copier) - G.jokers.highlighted[1].ability.cry_hooked = true - G.jokers.highlighted[2].ability.cry_hooked = true - G.jokers.highlighted[1].hook_id = G.jokers.highlighted[2].sort_id - G.jokers.highlighted[2].hook_id = G.jokers.highlighted[1].sort_id - end, -} -local hooked = { - object_type = "Sticker", - atlas = "sticker", - pos = { x = 5, y = 3 }, - loc_vars = function(self, info_queue, card) - local var - if not card or not card.hook_id then - var = "["..localize("k_joker").."]" - else - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].sort_id == card.hook_id then - var = localize({ type = "name_text", set = "Joker", key = G.jokers.cards[i].config.center.key }) - end - end - var = var or "[no joker found - " .. (card.hook_id or "nil") .. "]" - end - return { vars = { var or "hooked Joker" } } - end, - key = "cry_hooked", - no_sticker_sheet = true, - prefix_config = { key = false }, - badge_colour = HEX("14b341"), - draw = function(self, card) --don't draw shine - G.shared_stickers[self.key].role.draw_major = card - G.shared_stickers[self.key]:draw_shader("dissolve", nil, nil, nil, card.children.center) - end, -} - -local variable = { - object_type = "Consumable", - set = "Code", - key = "variable", - name = "cry-Variable", - atlas = "code", - pos = { - x = 2, - y = 1, - }, - cost = 4, - order = 8, - config = { max_highlighted = 2, extra = { enteredrank = "" } }, - loc_vars = function(self, info_queue, card) - return { vars = { card and card.ability.max_highlighted or self.config.max_highlighted } } - end, - use = function(self, card, area, copier) - G.GAME.USING_CODE = true - G.ENTERED_RANK = "" - G.CHOOSE_RANK = UIBox({ - definition = create_UIBox_variable(card), - config = { - align = "cm", - offset = { x = 0, y = 10 }, - major = G.ROOM_ATTACH, - bond = "Weak", - instance_type = "POPUP", - }, - }) - G.CHOOSE_RANK.alignment.offset.y = 0 - G.ROOM.jiggle = G.ROOM.jiggle + 1 - G.CHOOSE_RANK:align_to_major() - end, -} -local class = { - object_type = "Consumable", - set = "Code", - key = "class", - name = "cry-Class", - atlas = "code", - pos = { - x = 4, - y = 1, - }, - cost = 4, - order = 16, - config = { max_highlighted = 1, extra = { enteredrank = "" } }, - loc_vars = function(self, info_queue, card) - return { vars = { card and card.ability.max_highlighted or self.config.max_highlighted } } - end, - use = function(self, card, area, copier) - G.GAME.USING_CODE = true - G.ENTERED_ENH = "" - G.CHOOSE_ENH = UIBox({ - definition = create_UIBox_class(card), - config = { - align = "cm", - offset = { x = 0, y = 10 }, - major = G.ROOM_ATTACH, - bond = "Weak", - instance_type = "POPUP", - }, - }) - G.CHOOSE_ENH.alignment.offset.y = 0 - G.ROOM.jiggle = G.ROOM.jiggle + 1 - G.CHOOSE_ENH:align_to_major() - end, -} -local commit = { - object_type = "Consumable", - set = "Code", - key = "commit", - name = "cry-Commit", - atlas = "code", - pos = { - x = 1, - y = 2, - }, - cost = 4, - order = 31, - can_use = function(self, card) - return #G.jokers.highlighted == 1 - and not G.jokers.highlighted[1].ability.eternal - and not ( - type(G.jokers.highlighted[1].config.center.rarity) == "number" - and G.jokers.highlighted[1].config.center.rarity >= 5 - ) - end, - use = function(self, card, area, copier) - local deleted_joker_key = G.jokers.highlighted[1].config.center.key - local rarity = G.jokers.highlighted[1].config.center.rarity - local legendary = nil - --please someone add a rarity api to steamodded - if rarity == 1 then - rarity = 0 - elseif rarity == 2 then - rarity = 0.9 - elseif rarity == 3 then - rarity = 0.99 - elseif rarity == 4 then - rarity = nil - legendary = true - end -- Deleted check for "cry epic" it was giving rare jokers by setting rarity to 1 - local _first_dissolve = nil - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.75, - func = function() - G.jokers.highlighted[1]:start_dissolve(nil, _first_dissolve) - _first_dissolve = true - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("timpani") - local card = create_card("Joker", G.jokers, legendary, rarity, nil, nil, nil, "cry_commit") - card:add_to_deck() - G.jokers:emplace(card) - card:juice_up(0.3, 0.5) - if card.config.center.key == deleted_joker_key then - check_for_unlock({ type = "pr_unlock" }) - end - return true - end, - })) - end, -} -local merge = { - object_type = "Consumable", - set = "Code", - key = "merge", - name = "cry-Merge", - atlas = "code", - pos = { - x = 0, - y = 2, - }, - cost = 4, - order = 21, - can_use = function(self, card) - if #G.hand.highlighted ~= 1 + (card.area == G.hand and 1 or 0) then - return false - end - if #G.consumeables.highlighted ~= 1 + (card.area == G.consumeables and 1 or 0) then - return false - end - local n = 1 - if G.hand.highlighted[1] == card then - n = 2 - end - if G.hand.highlighted[n].ability.consumeable then - return false - end - local m = 1 - if G.consumeables.highlighted[1] == card then - m = 2 - end - if G.consumeables.highlighted[m].ability.eternal or G.consumeables.highlighted[m].ability.set == "Unique" or not G.consumeables.highlighted[m].ability.consumeable then - return false - end - return true - end, - use = function(self, card, area, copier) - G.E_MANAGER:add_event(Event({ - trigger = "immediate", - func = function() - G.cry_mergearea1 = - CardArea(G.play.T.x, G.play.T.y, G.play.T.w, G.play.T.h, { type = "play", card_limit = 5 }) - G.cry_mergearea2 = - CardArea(G.play.T.x, G.play.T.y, G.play.T.w, G.play.T.h, { type = "play", card_limit = 5 }) - area:remove_from_highlighted(card) - local key = G.consumeables.highlighted[1].config.center.key - local c = G.consumeables.highlighted[1] - local CARD = G.hand.highlighted[1] - card:start_dissolve() - play_sound("card1") - G.consumeables:remove_from_highlighted(c) - CARD.area = G.cry_mergearea1 - c.area = G.cry_mergearea2 - draw_card(G.hand, G.cry_mergearea1, 1, "up", true, CARD) - draw_card(G.consumeables, G.cry_mergearea2, 1, "up", true, c) - delay(0.2) - CARD:flip() - c:flip() - delay(0.2) - local percent = 0.85 + (1 - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("timpani") - c:start_dissolve(nil, nil, 0) - CARD:flip() - CARD:set_ability(G.P_CENTERS[key], true, nil) - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - delay(0.5) - draw_card(G.cry_mergearea1, G.hand, 1, "up", true, CARD) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.5, - func = function() - G.cry_mergearea2:remove_card(c) - G.cry_mergearea2:remove() - G.cry_mergearea1:remove() - G.cry_mergearea1 = nil - G.cry_mergearea2 = nil - return true - end, - })) - return true - end, - })) - end, -} -local multiply = { - object_type = "Consumable", - set = "Code", - key = "multiply", - name = "cry-Multiply", - atlas = "code", - order = 24, - pos = { - x = 3, - y = 2, - }, - cost = 4, - can_use = function(self, card) - return #G.jokers.highlighted == 1 and not Card.no(G.jokers.highlighted[1], "immune_to_chemach", true) and not Card.no(G.jokers.highlighted[1], "immutable", true) - end, - use = function(self, card, area, copier) - if not G.jokers.highlighted[1].cry_multiply then - G.jokers.highlighted[1].cry_multiply = 1 - end - G.jokers.highlighted[1].cry_multiply = G.jokers.highlighted[1].cry_multiply * 2 - cry_with_deck_effects(G.jokers.highlighted[1], function(card) - cry_misprintize(card, { min = 2, max = 2 }, nil, true) - end) - end, -} -local divide = { - object_type = "Consumable", - set = "Code", - key = "divide", - name = "cry-Divide", - atlas = "code", - order = 23, - pos = { - x = 2, - y = 2, - }, - cost = 4, - can_use = function(self, card) - return G.STATE == G.STATES.SHOP - end, - can_bulk_use = true, - use = function(self, card, area, copier) - for i = 1, #G.shop_jokers.cards do - local c = G.shop_jokers.cards[i] - c.misprint_cost_fac = (c.misprint_cost_fac or 1) * 0.5 - c:set_cost() - end - for i = 1, #G.shop_booster.cards do - local c = G.shop_booster.cards[i] - c.misprint_cost_fac = (c.misprint_cost_fac or 1) * 0.5 - c:set_cost() - end - for i = 1, #G.shop_vouchers.cards do - local c = G.shop_vouchers.cards[i] - c.misprint_cost_fac = (c.misprint_cost_fac or 1) * 0.5 - c:set_cost() - end - end, - bulk_use = function(self, card, area, copier, number) - for i = 1, #G.shop_jokers.cards do - local c = G.shop_jokers.cards[i] - c.misprint_cost_fac = (c.misprint_cost_fac or 1) / (2 ^ number) - c:set_cost() - end - for i = 1, #G.shop_booster.cards do - local c = G.shop_booster.cards[i] - c.misprint_cost_fac = (c.misprint_cost_fac or 1) / (2 ^ number) - c:set_cost() - end - for i = 1, #G.shop_vouchers.cards do - local c = G.shop_vouchers.cards[i] - c.misprint_cost_fac = (c.misprint_cost_fac or 1) / (2 ^ number) - c:set_cost() - end - end, -} -local delete = { - object_type = "Consumable", - set = "Code", - key = "delete", - name = "cry-Delete", - atlas = "code", - order = 18, - pos = { - x = 4, - y = 2, - }, - cost = 4, - can_use = function(self, card) - return G.STATE == G.STATES.SHOP - and card.area == G.consumeables - and #G.shop_jokers.highlighted + #G.shop_booster.highlighted + #G.shop_vouchers.highlighted == 1 - and G.shop_jokers.highlighted[1] ~= self - and G.shop_booster.highlighted[1] ~= self - and G.shop_vouchers.highlighted[1] ~= self - end, - use = function(self, card, area, copier) - if not G.GAME.banned_keys then - G.GAME.banned_keys = {} - end -- i have no idea if this is always initialised already tbh - if not G.GAME.cry_banned_pcards then - G.GAME.cry_banned_pcards = {} - end - local a = nil - local c = nil - local _p = nil - if G.shop_jokers.highlighted[1] then - _p = not not G.shop_jokers.highlighted[1].base.value - a = G.shop_jokers - c = G.shop_jokers.highlighted[1] - end - if G.shop_booster.highlighted[1] then - a = G.shop_booster - c = G.shop_booster.highlighted[1] - end - if G.shop_vouchers.highlighted[1] then - a = G.shop_vouchers - c = G.shop_vouchers.highlighted[1] - if c.shop_voucher then - G.GAME.current_round.voucher = nil - G.GAME.current_round.cry_voucher_edition = nil - G.GAME.current_round.cry_voucher_stickers = - { eternal = false, perishable = false, rental = false, pinned = false, banana = false } - end - end - if c.config.center.rarity == "cry_exotic" then - check_for_unlock({ type = "what_have_you_done" }) - end - G.GAME.banned_keys[c.config.center.key] = true - if _p then - for k, v in pairs(G.P_CARDS) do - if v.value == c.base.value and v.suit == c.base.suit then - G.GAME.cry_banned_pcards[k] = true - end - end - end - c:start_dissolve() - end, -} -local spaghetti = { - object_type = "Consumable", - set = "Code", - key = "spaghetti", - name = "cry-Spaghetti", - atlas = "code", - order = 13, - pos = { - x = 5, - y = 2, - }, - cost = 4, - loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_glitched - info_queue[#info_queue + 1] = { set = "Other", key = "food_jokers" } - end, - can_use = function(self, card) - return true - end, - use = function(self, card, area, copier) - local card = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - Cryptid.get_food("cry_spaghetti") - ) - card:set_edition({ - cry_glitched = true, - }) - card:add_to_deck() - G.jokers:emplace(card) - end, -} -local machinecode = { - object_type = "Consumable", - set = "Code", - name = "cry-Machine Code", - key = "machinecode", - pos = { x = 0, y = 3 }, - cost = 3, - atlas = "code", - order = 19, - can_use = function(self, card) - return true - end, - can_bulk_use = true, - loc_vars = function(self, info_queue, center) - return { - main_start = { - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - randomchar(codechars6), - } - } - end, - use = function(self, card, area, copier) - local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, get_random_consumable("cry_machinecode", nil, "c_cry_machinecode").key, c_cry_machinecode) - card:set_edition({ cry_glitched = true }) - card:add_to_deck() - G.consumeables:emplace(card) - end, - bulk_use = function(self, card, area, copier, number) - local a = {} - local b - for i = 1, number do - b = get_random_consumable("cry_machinecode", nil, "c_cry_machinecode") - a[b] = (a[b] or 0) + 1 - end - for k, v in pairs(a) do - local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, k.key) - card:set_edition({ cry_glitched = true }) - card:add_to_deck() - if Incantation then - card:setQty(v) - end - G.consumeables:emplace(card) - end - G.E_MANAGER:add_event( - Event({ - trigger = "after", - func = function() - a = nil - return true - end, - }) - ) - end, -} -local run = { - object_type = "Consumable", - set = "Code", - name = "cry-Run", - key = "run", - pos = { x = 5, y = 0 }, - cost = 3, - atlas = "code", - order = 6, - can_use = function(self, card) - return G.GAME.blind and G.GAME.blind.in_blind - end, - can_bulk_use = true, - use = function(self, card, area, copier) - G.cry_runarea = CardArea( - G.discard.T.x, - G.discard.T.y, - G.discard.T.w, - G.discard.T.h, - { type = "discard", card_limit = 1e100 } - ) - local hand_count = #G.hand.cards - for i = 1, hand_count do - draw_card(G.hand, G.cry_runarea, i * 100 / hand_count, "down", nil, nil, 0.07) - end - G.E_MANAGER:add_event(Event({ - trigger = "immediate", - func = function() - G.GAME.current_round.jokers_purchased = 0 - G.STATE = G.STATES.SHOP - G.GAME.USING_CODE = true - G.GAME.USING_RUN = true - G.GAME.RUN_STATE_COMPLETE = 0 - G.GAME.shop_free = nil - G.GAME.shop_d6ed = nil - G.STATE_COMPLETE = false - G.GAME.current_round.used_packs = {} - return true - end, - })) - end, -} -local exploit = { - object_type = "Consumable", - set = "Code", - key = "exploit", - name = "cry-Exploit", - atlas = "code", - pos = { - x = 1, - y = 3, - }, - cost = 4, - order = 28, - config = { extra = { enteredhand = "" } }, -- i don't think this ever uses config...? - can_use = function(self, card) - return true - end, - use = function(self, card, area, copier) - G.GAME.USING_CODE = true - G.ENTERED_HAND = "" - G.CHOOSE_HAND = UIBox({ - definition = create_UIBox_exploit(card), - config = { - align = "cm", - offset = { x = 0, y = 10 }, - major = G.ROOM_ATTACH, - bond = "Weak", - instance_type = "POPUP", - }, - }) - G.CHOOSE_HAND.alignment.offset.y = 0 - G.ROOM.jiggle = G.ROOM.jiggle + 1 - G.CHOOSE_HAND:align_to_major() - end, -} -local oboe = { - object_type = "Consumable", - set = "Code", - key = "oboe", - name = "cry-oboe", - atlas = "code", - order = 10, - config = { extra = { choices = 1 } }, - pos = { - x = 2, - y = 3, - }, - cost = 4, - can_bulk_use = true, - loc_vars = function(self, info_queue, card) - if not card then - return { vars = { self.config.extra.choices, (G.GAME and G.GAME.cry_oboe or 0) } } - end - return { vars = { card.ability.extra.choices, (G.GAME and G.GAME.cry_oboe or 0) } } - end, - can_use = function(self, card) - return true - end, - use = function(self, card, area, copier) - G.GAME.cry_oboe = (G.GAME.cry_oboe or 0) + card.ability.extra.choices - end, - bulk_use = function(self, card, area, copier, number) - G.GAME.cry_oboe = (G.GAME.cry_oboe or 0) + (card.ability.extra.choices * number) - end, -} -local rework = { - object_type = "Consumable", - set = "Code", - key = "rework", - name = "cry-Rework", - atlas = "code", - order = 25, - no_pool_flag = "beta_deck", - pos = { - x = 3, - y = 3, - }, - cost = 4, - loc_vars = function(self, info_queue) - info_queue[#info_queue + 1] = - { set = "Tag", key = "tag_cry_rework", specific_vars = { "[edition]", "[joker]" } } - return { vars = {} } - end, - can_use = function(self, card) - --todo: nostalgic deck compat - return #G.jokers.highlighted == 1 and not G.jokers.highlighted[1].ability.eternal - and G.jokers.highlighted[1].ability.name ~= "cry-meteor" - and G.jokers.highlighted[1].ability.name ~= "cry-exoplanet" - and G.jokers.highlighted[1].ability.name ~= "cry-stardust" - and G.jokers.highlighted[1].config.center.rarity ~= "cry_cursed" - end, - use = function(self, card, area, copier) - local jkr = G.jokers.highlighted[1] - local found_index = 1 - if jkr.edition then - for i, v in ipairs(G.P_CENTER_POOLS.Edition) do - if v.key == jkr.edition.key then - found_index = i - break - end - end - end - found_index = found_index + 1 - if found_index > #G.P_CENTER_POOLS.Edition then - found_index = found_index - #G.P_CENTER_POOLS.Edition - end - local tag = Tag("tag_cry_rework") - if not tag.ability then - tag.ability = {} - end - tag.ability.rework_key = jkr.config.center.key - tag.ability.rework_edition = G.P_CENTER_POOLS.Edition[found_index].key - add_tag(tag) - --SMODS.Tags.tag_cry_rework.apply(tag, {type = "store_joker_create"}) - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.75, - func = function() - jkr:start_dissolve() - return true - end, - })) - end, -} -local rework_tag = { - object_type = "Tag", - atlas = "tag_cry", - name = "cry-Rework Tag", - order = 19, - pos = { x = 0, y = 3 }, - config = { type = "store_joker_create" }, - key = "rework", - ability = { rework_edition = nil, rework_key = nil }, - apply = function(self, tag, context) - if context.type == "store_joker_create" then - local card = create_card("Joker", context.area, nil, nil, nil, nil, (tag.ability.rework_key or "j_scholar")) - create_shop_card_ui(card, "Joker", context.area) - card:set_edition((tag.ability.rework_edition or "e_foil"), true, nil, true) - card.states.visible = false - tag:yep("+", G.C.FILTER, function() - card:start_materialize() - return true - end) - tag.triggered = true - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.5, - func = function() - save_run() --fixes savescum bugs hopefully? - return true - end, - })) - return card - end - end, - in_pool = function() - return false - end, -} - -local patch = { - object_type = "Consumable", - set = "Code", - key = "patch", - name = "cry-patch", - atlas = "code", - order = 26, - config = { }, - pos = { - x = 1, - y = 4, - }, - cost = 4, - can_bulk_use = true, - loc_vars = function(self, info_queue, card) - return { } - end, - can_use = function(self, card) - return true - end, - use = function(self, card, area, copier) - for i = 1, #G.hand.cards do - local CARD = G.hand.cards[i] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - return true - end, - })) - end - for i = 1, #G.jokers.cards do - local CARD = G.jokers.cards[i] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - return true - end, - })) - end - for i = 1, #G.consumeables.cards do - local CARD = G.consumeables.cards[i] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - return true - end, - })) - end - delay(0.2) - for i = 1, #G.hand.cards do - local CARD = G.hand.cards[i] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - if CARD.facing == "back" then - CARD:flip() - end - CARD.debuff = false - CARD.cry_debuff_immune = true - CARD.ability.perishable = nil - CARD.pinned = nil - CARD:set_rental(nil) - if not CARD.sob then - CARD:set_eternal(nil) - end - CARD.ability.banana = nil - if Cryptid.enabled["Spooky"] then - CARD.ability.cry_possessed = nil - SMODS.Stickers.cry_flickering:apply(CARD, nil) - end - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - for i = 1, #G.jokers.cards do - local CARD = G.jokers.cards[i] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - if CARD.facing == "back" then - CARD:flip() - end - CARD.debuff = false - CARD.ability.perishable = nil - CARD.pinned = nil - CARD:set_rental(nil) - if not CARD.sob then - CARD:set_eternal(nil) - end - CARD.ability.banana = nil - if Cryptid.enabled["Spooky"] then - CARD.ability.cry_possessed = nil - SMODS.Stickers.cry_flickering:apply(CARD, nil) - end - play_sound("card1", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - for i = 1, #G.consumeables.cards do - local CARD = G.consumeables.cards[i] - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - if CARD.facing == "back" then - CARD:flip() - end - CARD.debuff = false - CARD.ability.perishable = nil - CARD.pinned = nil - CARD:set_rental(nil) - if not CARD.sob then - CARD:set_eternal(nil) - end - CARD.ability.banana = nil - if Cryptid.enabled["Spooky"] then - CARD.ability.cry_possessed = nil - SMODS.Stickers.cry_flickering:apply(CARD, nil) - end - play_sound("card1", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - end, -} - -local ctrl_v = { - object_type = "Consumable", - set = "Code", - key = "ctrl_v", - name = "cry-Ctrl-V", - atlas = "code", - order = 27, - config = { }, - pos = { - x = 2, - y = 4, - }, - cost = 4, - can_bulk_use = true, - loc_vars = function(self, info_queue, card) - return { } - end, - can_use = function(self, card) - return #G.hand.highlighted - + #G.consumeables.highlighted - == 2 - end, - use = function(self, card, area, copier) - if area then - area:remove_from_highlighted(card) - end - if G.hand.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.hand.highlighted[1]) - card:add_to_deck() - table.insert(G.playing_cards, card) - G.hand:emplace(card) - return true - end, - })) - end - if G.consumeables.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.consumeables.highlighted[1]) - if card.ability.name and card.ability.name == "cry-Chambered" then card.ability.extra.num_copies = 1 end - card:add_to_deck() - if Incantation then - card:setQty(1) - end - G.consumeables:emplace(card) - return true - end, - })) - end - end, - bulk_use = function(self, card, area, copier, number) - for i = 1, number do - if area then - area:remove_from_highlighted(card) - end - if G.hand.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.hand.highlighted[1]) - card:add_to_deck() - G.hand:emplace(card) - return true - end, - })) - end - if G.consumeables.highlighted[1] then - G.E_MANAGER:add_event(Event({ - func = function() - local card = copy_card(G.consumeables.highlighted[1]) - if card.ability.name and card.ability.name == "cry-Chambered" then card.ability.extra.num_copies = 1 end - card:add_to_deck() - if Incantation then - card:setQty(1) - end - G.consumeables:emplace(card) - return true - end, - })) - end - end - end, -} - - - -local inst = { - object_type = "Consumable", - set = "Code", - key = "inst", - name = "cry-Inst", - atlas = "code", - order = 28, - config = { }, - pos = { - x = 3, - y = 4, - }, - cost = 4, - can_bulk_use = true, - loc_vars = function(self, info_queue, card) - return { } - end, - can_use = function(self, card) - local selected_cards = {} - for i = 1, #G.hand.highlighted do - if G.hand.highlighted[i] ~= card then selected_cards[#selected_cards+1] = G.hand.highlighted[i] end - end - return #selected_cards == 1 - end, - use = function(self, card, area, copier) - local same = 0 - for i = 1, #G.deck.cards do - if G.deck.cards[i].base.value == G.hand.highlighted[1].base.value then - same = i - draw_card(G.deck,G.hand,nil,nil,false,G.deck.cards[i]) - break - end - end - for i = 1, #G.deck.cards do - if G.deck.cards[i].base.suit == G.hand.highlighted[1].base.suit and i ~= same then - draw_card(G.deck,G.hand,nil,nil,false,G.deck.cards[i]) - break - end - end - end, - bulk_use = function(self, card, area, copier, number) - for j = 1, number do - local same = 0 - for i = 1, #G.deck.cards do - if G.deck.cards[i].base.value == G.hand.highlighted[1].base.value then - same = i - draw_card(G.deck,G.hand,nil,nil,false,G.deck.cards[i]) - break - end - end - for i = 1, #G.deck.cards do - if G.deck.cards[i].base.suit == G.hand.highlighted[1].base.suit and i ~= same then - draw_card(G.deck,G.hand,nil,nil,false,G.deck.cards[i]) - break - end - end - end - end, -} -local alttab = { - object_type = "Consumable", - set = "Code", - key = "alttab", - name = "cry-Alttab", - atlas = "code", - order = 28, - config = { }, - pos = { - x = 4, - y = 4, - }, - cost = 4, - can_bulk_use = true, - loc_vars = function(self, info_queue, card) - local ret = localize("k_none") - if G.GAME and G.GAME.blind and G.GAME.blind.in_blind then - if G.GAME.blind:get_type() == 'Small' then - ret = localize{type = 'name_text', key = G.GAME.round_resets.blind_tags.Small, set = 'Tag'} - elseif G.GAME.blind:get_type() == 'Big' then - ret = localize{type = 'name_text', key = G.GAME.round_resets.blind_tags.Big, set = 'Tag'} - elseif G.GAME.blind:get_type() == 'Boss' then - ret = '???' - end - end - return { vars = { ret } } - end, - can_use = function(self, card) - return G.GAME.blind and G.GAME.blind.in_blind - end, - use = function(self, card, area, copier) - local used_consumable = copier or card - delay(0.4) - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2, func = function() - play_sound('tarot1') - local tag = nil - local type = G.GAME.blind:get_type() - if type == 'Boss' then - tag = Tag(get_next_tag_key()) - else - tag = Tag(G.GAME.round_resets.blind_tags[type]) - end - add_tag(tag) - used_consumable:juice_up(0.8, 0.5) - return true end })) - delay(1.2) - end, - bulk_use = function(self, card, area, copier, number) - local used_consumable = copier or card - delay(0.4) - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2, func = function() - for j = 1, number do - play_sound('tarot1') - local tag = nil - local type = G.GAME.blind:get_type() - if type == 'Boss' then - tag = Tag(get_next_tag_key()) - else - tag = Tag(G.GAME.round_resets.blind_tags[type]) - end - add_tag(tag) - used_consumable:juice_up(0.8, 0.5) - delay(0.1) - end - return true end })) - delay(1.1) - end, -} - -local automaton = { - object_type = "Consumable", - set = "Tarot", - name = "cry-Automaton", - key = "automaton", - pos = { x = 5, y = 1 }, - config = { create = 1 }, - order = 5, - atlas = "code", - loc_vars = function(self, info_queue, card) - return { vars = { card and card.ability and card.ability.create or self.config.create } } - end, - can_use = function(self, card) - return #G.consumeables.cards < G.consumeables.config.card_limit or card.area == G.consumeables - end, - use = function(self, card, area, copier) - for i = 1, math.min(card.ability.consumeable.create, G.consumeables.config.card_limit - #G.consumeables.cards) do - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - if G.consumeables.config.card_limit > #G.consumeables.cards then - play_sound("timpani") - local _card = create_card("Code", G.consumeables, nil, nil, nil, nil, nil, "cry_automaton") - _card:add_to_deck() - G.consumeables:emplace(_card) - card:juice_up(0.3, 0.5) - end - return true - end, - })) - end - delay(0.6) - end, -} - -local green_seal = { - object_type = "Seal", - name = "cry-Green-Seal", - key = "green", - badge_colour = HEX("12f254"), --same as code cards - atlas = "cry_misc", - pos = { x = 1, y = 2 }, - - calculate = function(self, card, context) - if context.unscoring then - G.E_MANAGER:add_event(Event({ - trigger = "after", - func = function() - if G.consumeables.config.card_limit > #G.consumeables.cards then - local c = create_card("Code", G.consumeables, nil, nil, nil, nil, nil, "cry_green_seal") - c:add_to_deck() - G.consumeables:emplace(c) - card:juice_up() - end - return true - end, - })) - return true - end - end, -} - -local source = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Source", - order = 9, - key = "source", - config = { - -- This will add a tooltip. - mod_conv = "cry_green_seal", - -- Tooltip args - max_highlighted = 1, - }, - loc_vars = function(self, info_queue, center) - -- Handle creating a tooltip with set args. - info_queue[#info_queue + 1] = { set = "Other", key = "cry_green_seal" } - return { vars = { center.ability.max_highlighted } } - end, - cost = 4, - atlas = "atlasnotjokers", - pos = { x = 2, y = 4 }, - use = function(self, card, area, copier) --Good enough - for i = 1, #G.hand.highlighted do - local highlighted = G.hand.highlighted[i] - G.E_MANAGER:add_event(Event({ - func = function() - play_sound("tarot1") - highlighted:juice_up(0.3, 0.5) - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - if highlighted then - highlighted:set_seal("cry_green") - end - return true - end, - })) - delay(0.5) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - G.hand:unhighlight_all() - return true - end, - })) - end - end, -} -local pointer = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Pointer", - key = "pointer", - pos = { x = 4, y = 3 }, - hidden = true, - soul_set = "Code", - order = 41, - atlas = "code", - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - return { vars = { (SMODS.Mods["jen"] or {}).can_load and "and OMEGA consumables " or "" } } - end, - use = function(self, card, area, copier) - G.GAME.USING_CODE = true - G.GAME.USING_POINTER = true - G.ENTERED_CARD = "" - G.CHOOSE_CARD = UIBox({ - definition = create_UIBox_pointer(card), - config = { - align = "cm", - offset = { x = 0, y = 10 }, - major = G.ROOM_ATTACH, - bond = "Weak", - instance_type = "POPUP", - }, - }) - G.CHOOSE_CARD.alignment.offset.y = 0 - G.ROOM.jiggle = G.ROOM.jiggle + 1 - G.CHOOSE_CARD:align_to_major() - end, -} - -local encoded = { - object_type = "Back", - name = "cry-Encoded", - key = "encoded", - order = 11, - config = { cry_encoded = true, cry_encoded_downside = true }, - pos = { x = 2, y = 5 }, - atlas = "atlasdeck", -} - -local source_deck = { - object_type = "Back", - name = "cry-Source Deck", - key = "source_deck", - order = 12, - config = { cry_force_seal = "cry_green" }, - pos = { x = 3, y = 5 }, - loc_txt = { - name = "Source Deck", --not localizing enhanced decks for now; they will be handled automatically later - text = { - "All cards have a {C:cry_code}Green Seal{}", - "Cards cannot change seals", - }, - }, - atlas = "atlasenhanced", -} - -local CodeJoker = { - object_type = "Joker", - name = "cry-CodeJoker", - key = "CodeJoker", - pos = { x = 2, y = 4 }, - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { key = "e_negative_consumable", set = "Edition", config = { extra = 1 } } - end, - rarity = "cry_epic", - cost = 11, - order = 109, - blueprint_compat = true, - atlas = "atlasepic", - calculate = function(self, card, context) - if context.setting_blind and not (context.blueprint_card or self).getting_sliced then - play_sound("timpani") - local card = create_card("Code", G.consumables, nil, nil, nil, nil) - card:set_edition({ - negative = true, - }) - card:add_to_deck() - G.consumeables:emplace(card) - card:juice_up(0.3, 0.5) - return nil, true - end - end, - cry_credits = { - idea = { - "Kailen" - }, - art = { - "Kailen" - }, - code = { - "Kailen" - } - }, - unlocked = false, - check_for_unlock = function(self, args) - if G.P_CENTER_POOLS['Code'] then - local count = 0 - local count2 = 0 - for k,v in pairs(G.P_CENTER_POOLS['Code']) do - count2 = count2+1 - if v and v.discovered == true then - count = count + 1 - end - end - if count == count2 then - unlock_card(self) - end - 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 copypaste = { - object_type = "Joker", - name = "cry-copypaste", - key = "copypaste", - pos = { x = 3, y = 4 }, - order = 110, - immune_to_chemach = true, - config = { extra = { odds = 2, ckt = 0 } }, -- what is a ckt - rarity = "cry_epic", - cost = 14, - blueprint_compat = true, - loc_vars = function(self, info_queue, card) - return { - vars = { card and cry_prob(math.min(card.ability.extra.odds/2, card.ability.cry_prob), card.ability.extra.odds, card.ability.cry_rigged) or 1, card and card.ability.extra.odds or 2 }, -- this effectively prevents a copypaste from ever initially misprinting at above 50% odds. still allows rigging/oops - } - end, - atlas = "atlasepic", - calculate = function(self, card, context) - if - context.using_consumeable - and context.consumeable.ability.set == "Code" - and not context.consumeable.beginning_end - then - if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then - if pseudorandom("cry_copypaste_joker") < cry_prob(math.min(card.ability.extra.odds/2, card.ability.cry_prob), card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then - G.E_MANAGER:add_event(Event({ - func = function() - local cards = copy_card(context.consumeable) - cards:add_to_deck() - G.consumeables:emplace(cards) - return true - end, - })) - card_eval_status_text( - context.blueprint_cards or card, - "extra", - nil, - nil, - nil, - { message = localize("k_copied_ex") } - ) - end - end - end - end, - cry_credits = { - idea = { - "Auto Watto" - }, - art = { - "Kailen" - }, - code = { - "Auto Watto" - } - }, -} -local cut = { - object_type = "Joker", - name = "cry-cut", - key = "cut", - config = { extra = { Xmult = 1, Xmult_mod = 0.5 } }, - pos = { x = 2, y = 2 }, - rarity = 2, - cost = 7, - order = 108, - blueprint_compat = true, - perishable_compat = false, - atlas = "atlasthree", - calculate = function(self, card, context) - if context.ending_shop then - local destructable_codecard = {} - for i = 1, #G.consumeables.cards do - if - G.consumeables.cards[i].ability.set == "Code" - and not G.consumeables.cards[i].getting_sliced - and not G.consumeables.cards[i].ability.eternal - then - destructable_codecard[#destructable_codecard + 1] = G.consumeables.cards[i] - end - end - local codecard_to_destroy = #destructable_codecard > 0 - and pseudorandom_element(destructable_codecard, pseudoseed("cut")) - or nil - - if codecard_to_destroy then - codecard_to_destroy.getting_sliced = true - card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod - G.E_MANAGER:add_event(Event({ - func = function() - (context.blueprint_card or card):juice_up(0.8, 0.8) - codecard_to_destroy:start_dissolve({ G.C.RED }, nil, 1.6) - return true - end, - })) - if not (context.blueprint_card or self).getting_sliced then - card_eval_status_text((context.blueprint_card or card), "extra", nil, nil, nil, { - message = localize{type='variable',key='a_xmult',vars={number_format(to_big(card.ability.extra.Xmult))}} - }) - end - return nil, true - end - end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Xmult) > to_big(1)) - and not context.before - and not context.after - then - return { - message = localize{type='variable',key='a_xmult',vars={number_format(card.ability.extra.Xmult)}}, - Xmult_mod = card.ability.extra.Xmult, - colour = G.C.MULT, - } - end - end, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.Xmult_mod, center.ability.extra.Xmult } } - end, - cry_credits = { - idea = { - "Auto Watto" - }, - art = { - "Kailen" - }, - code = { - "Auto Watto" - } - }, -} -local blender = { - object_type = "Joker", - name = "cry-blender", - key = "blender", - pos = { x = 3, y = 2 }, - rarity = 1, - cost = 5, - blueprint_compat = true, - atlas = "atlasthree", - order = 111, - calculate = function(self, card, context) - if - context.using_consumeable - and context.consumeable.ability.set == "Code" - and not context.consumeable.beginning_end - then - if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then - local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, nil, "cry_blender") - card:add_to_deck() - G.consumeables:emplace(card) - end - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "Kailen" - }, - code = { - "Kailen" - } - }, -} -local python = { - object_type = "Joker", - name = "cry-python", - key = "python", - config = { extra = { Xmult = 1, Xmult_mod = 0.15 } }, - pos = { x = 4, y = 2 }, - rarity = 2, - cost = 7, - blueprint_compat = true, - perishable_compat = false, - atlas = "atlasthree", - order = 112, - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.Xmult_mod, center.ability.extra.Xmult } } - end, - calculate = function(self, card, context) - if - context.using_consumeable - and context.consumeable.ability.set == "Code" - and not context.consumeable.beginning_end - then - card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod - G.E_MANAGER:add_event(Event({ - func = function() - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { card.ability.extra.Xmult }, - }), - } - ) - return true - end, - })) - return - end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Xmult) > to_big(1)) - and not context.before - and not context.after - then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), - Xmult_mod = card.ability.extra.Xmult, - } - end - end, - cry_credits = { - idea = { - "HexaCryonic" - }, - art = { - "Kailen" - }, - code = { - "Kailen" - } - }, -} - -function create_UIBox_variable(card) - G.E_MANAGER:add_event(Event({ - blockable = false, - func = function() - G.REFRESH_ALERTS = true - return true - end, - })) - local t = create_UIBox_generic_options({ - no_back = true, - colour = HEX("04200c"), - outline_colour = G.C.SECONDARY_SET.Code, - contents = { - { - n = G.UIT.R, - nodes = { - create_text_input({ - colour = G.C.SET.Code, - hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), - w = 4.5, - h = 1, - max_length = 16, - extended_corpus = true, - prompt_text = localize("cry_code_rank"), - ref_table = G, - ref_value = "ENTERED_RANK", - keyboard_offset = 1, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.SET.Code, - button = "variable_apply", - label = { localize("cry_code_apply") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "variable_apply_previous", - label = { localize("cry_code_apply_previous") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "variable_cancel", - label = { localize("cry_code_cancel") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - }, - }) - return t -end - -function create_UIBox_class(card) - G.E_MANAGER:add_event(Event({ - blockable = false, - func = function() - G.REFRESH_ALERTS = true - return true - end, - })) - local t = create_UIBox_generic_options({ - no_back = true, - colour = HEX("04200c"), - outline_colour = G.C.SECONDARY_SET.Code, - contents = { - { - n = G.UIT.R, - nodes = { - create_text_input({ - colour = G.C.SET.Code, - hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), - w = 4.5, - h = 1, - max_length = 16, - prompt_text = localize("cry_code_enh"), - ref_table = G, - ref_value = "ENTERED_ENH", - keyboard_offset = 1, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.SET.Code, - button = "class_apply", - label = { localize("cry_code_apply") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "class_apply_previous", - label = { localize("cry_code_apply_previous") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "class_cancel", - label = { localize("cry_code_cancel") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - }, - }) - return t -end - -function create_UIBox_exploit(card) - G.E_MANAGER:add_event(Event({ - blockable = false, - func = function() - G.REFRESH_ALERTS = true - return true - end, - })) - local t = create_UIBox_generic_options({ - no_back = true, - colour = HEX("04200c"), - outline_colour = G.C.SECONDARY_SET.Code, - contents = { - { - n = G.UIT.R, - nodes = { - create_text_input({ - colour = G.C.SET.Code, - hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), - w = 4.5, - h = 1, - max_length = 24, - extended_corpus = true, - prompt_text = localize("cry_code_hand"), - ref_table = G, - ref_value = "ENTERED_HAND", - keyboard_offset = 1, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.SET.Code, - button = "exploit_apply", - label = { localize("cry_code_exploit") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "exploit_apply_previous", - label = { localize("cry_code_exploit_previous") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "exploit_cancel", - label = { localize("cry_code_cancel") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - }, - }) - return t -end - -function create_UIBox_crash(card) - G.E_MANAGER:add_event(Event({ - blockable = false, - func = function() - G.REFRESH_ALERTS = true - return true - end, - })) - local t = create_UIBox_generic_options({ - no_back = true, - colour = HEX("04200c"), - outline_colour = G.C.SECONDARY_SET.Code, - contents = { - { - n = G.UIT.R, - nodes = { - create_text_input({ - colour = G.C.SET.Code, - hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), - w = 4.5, - h = 1, - max_length = 2500, - extended_corpus = true, - prompt_text = "???", - ref_table = G, - ref_value = "ENTERED_ACE", - keyboard_offset = 1, - }), - }, - }, - { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - UIBox_button({ - colour = G.C.SET.Code, - button = "ca", - label = { localize("cry_code_execute") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - }, - }) - return t -end - -function create_UIBox_pointer(card) - G.E_MANAGER:add_event(Event({ - blockable = false, - func = function() - G.REFRESH_ALERTS = true - return true - end, - })) - local t = create_UIBox_generic_options({ - no_back = true, - colour = HEX("04200c"), - outline_colour = G.C.SECONDARY_SET.Code, - contents = { - { - n = G.UIT.R, - nodes = { - create_text_input({ - colour = G.C.SET.Code, - hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), - w = 4.5, - h = 1, - max_length = 100, - extended_corpus = true, - prompt_text = localize("cry_code_enter_card"), - ref_table = G, - ref_value = "ENTERED_CARD", - keyboard_offset = 1, - }), - }, - }, - { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - UIBox_button({ - colour = G.C.SET.Code, - button = "pointer_apply", - label = { localize("cry_code_create") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - UIBox_button({ - colour = G.C.SET.Code, - button = "your_collection", - label = { localize("b_collection_cap") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "pointer_apply_previous", - label = { localize("cry_code_create_previous") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - { - n = G.UIT.R, - config = { align = "cm" }, - nodes = { - UIBox_button({ - colour = G.C.RED, - button = "pointer_cancel", - label = { localize("cry_code_cancel") }, - minw = 4.5, - focus_args = { snap_to = true }, - }), - }, - }, - }, - }) - return t -end - -G.FUNCS.pointer_cancel = function() - G.CHOOSE_CARD:remove() - G.GAME.USING_CODE = false - G.GAME.USING_POINTER = false -end - -G.FUNCS.variable_apply_previous = function() - if G.PREVIOUS_ENTERED_RANK then - G.ENTERED_RANK = G.PREVIOUS_ENTERED_RANK or "" - end - G.FUNCS.variable_apply() -end - -G.FUNCS.variable_apply = function() - local rank_table = { - {}, - { "2", "Two", "II" }, - { "3", "Three", "III" }, - { "4", "Four", "IV" }, - { "5", "Five", "V" }, - { "6", "Six", "VI" }, - { "7", "Seven", "VII" }, - { "8", "Eight", "VIII" }, - { "9", "Nine", "IX" }, - { "10", "1O", "Ten", "X", "T" }, - { "J", "Jack" }, - { "Q", "Queen" }, - { "K", "King" }, - { "A", "Ace", "One", "1", "I" }, - { "M" }, - { "nil" }, - } - - local rank_suffix = nil - - for i, v in pairs(rank_table) do - for j, k in pairs(v) do - if string.lower(G.ENTERED_RANK) == string.lower(k) then - rank_suffix = i - end - end - end - - if rank_suffix then - G.PREVIOUS_ENTERED_RANK = G.ENTERED_RANK - G.GAME.USING_CODE = false - if rank_suffix == 15 then - check_for_unlock({ type = "cheat_used" }) - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_jolly") - card:add_to_deck() - G.jokers:emplace(card) - elseif rank_suffix == 16 then - check_for_unlock({ type = "cheat_used" }) - local card = create_card("Code", G.consumeables, nil, nil, nil, nil, "c_cry_crash") - card:add_to_deck() - G.consumeables:emplace(card) - elseif rank_suffix == 17 then - check_for_unlock({ type = "cheat_used" }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - return true - end, - })) - for i = 1, #G.hand.highlighted do - local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.highlighted[i]:flip() - play_sound("card1", percent) - G.hand.highlighted[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.hand.highlighted do - local CARD = G.hand.highlighted[i] - local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - CARD:set_ability( - G.P_CENTERS[pseudorandom_element(G.P_CENTER_POOLS.Consumeables, pseudoseed("cry_variable")).key], - true, - nil - ) - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - else - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - return true - end, - })) - for i = 1, #G.hand.highlighted do - local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.highlighted[i]:flip() - play_sound("card1", percent) - G.hand.highlighted[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.hand.highlighted do - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - local card = G.hand.highlighted[i] - local suit_prefix = string.sub(card.base.suit, 1, 1) .. "_" - local r2suffix = nil - if rank_suffix < 10 then - r2suffix = tostring(rank_suffix) - elseif rank_suffix == 10 then - r2suffix = "T" - elseif rank_suffix == 11 then - r2suffix = "J" - elseif rank_suffix == 12 then - r2suffix = "Q" - elseif rank_suffix == 13 then - r2suffix = "K" - elseif rank_suffix == 14 then - r2suffix = "A" - end - card:set_base(G.P_CARDS[suit_prefix .. r2suffix]) - return true - end, - })) - end - for i = 1, #G.hand.highlighted do - local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.highlighted[i]:flip() - play_sound("tarot2", percent, 0.6) - G.hand.highlighted[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - G.hand:unhighlight_all() - return true - end, - })) - delay(0.5) - end - G.CHOOSE_RANK:remove() - end -end - -G.FUNCS.variable_cancel = function() - G.CHOOSE_RANK:remove() - G.GAME.USING_CODE = false -end - -G.FUNCS.exploit_apply_previous = function() - if G.PREVIOUS_ENTERED_HAND then - G.ENTERED_HAND = G.PREVIOUS_ENTERED_HAND or "" - end - G.FUNCS.exploit_apply() -end -G.FUNCS.exploit_apply = function() - local hand_table = { - ["High Card"] = { "high card", "high", "1oak", "1 of a kind", "haha one" }, - ["Pair"] = { "pair", "2oak", "2 of a kind", "m" }, - ["Two Pair"] = { "two pair", "2 pair", "mm" }, - ["Three of a Kind"] = { "three of a kind", "3 of a kind", "3oak", "trips", "triangle" }, - ["Straight"] = { "straight", "lesbian", "gay", "bisexual", "asexual" }, - ["Flush"] = { "flush", "skibidi", "toilet", "floosh" }, - ["Full House"] = { "full house", "full", "that 70s show", "modern family", "family matters", "the middle" }, - ["Four of a Kind"] = { "four of a kind", "4 of a kind", "4oak", "22oakoak", "quads", "four to the floor" }, - ["Straight Flush"] = { "straight flush", "strush", "slush", "slushie", "slushy" }, - ["Five of a Kind"] = { "five of a kind", "5 of a kind", "5oak", "quints" }, - ["Flush House"] = { "flush house", "flouse", "outhouse" }, - ["Flush Five"] = { "flush five", "fish", "you know what that means", "five of a flush" }, - ["cry_Bulwark"] = { "bulwark", "flush rock", "stoned", "stone flush", "flush stone" }, - ["cry_Clusterfuck"] = { "clusterfuck", "fuck", "wtf" }, - ["cry_UltPair"] = { "ultimate pair", "ultpair", "ult pair", "pairpairpair" }, - ["cry_WholeDeck"] = { "the entire fucking deck", "deck", "tefd", "fifty-two", "you are fuck deck" }, - } - local current_hand = nil - for k, v in pairs(SMODS.PokerHands) do - local index = v.key - local current_name = G.localization.misc.poker_hands[index] - if not hand_table[v.key] then - hand_table[v.key] = { current_name } - end - end - for i, v in pairs(hand_table) do - for j, k in pairs(v) do - if string.lower(G.ENTERED_HAND) == string.lower(k) then - current_hand = i - end - end - end - if current_hand and G.GAME.hands[current_hand].visible then - G.PREVIOUS_ENTERED_HAND = G.ENTERED_HAND - G.GAME.cry_exploit_override = current_hand - G.FUNCS.exploit_cancel() - return - end -end - -G.FUNCS.exploit_cancel = function() - G.CHOOSE_HAND:remove() - G.GAME.USING_CODE = false -end - -G.FUNCS.class_apply_previous = function() - if G.PREVIOUS_ENTERED_ENH then - G.ENTERED_ENH = G.PREVIOUS_ENTERED_ENH or "" - end - G.FUNCS.class_apply() -end ---todo: mod support -G.FUNCS.class_apply = function() - local enh_table = { - m_bonus = { "bonus" }, - m_mult = { "mult", "red" }, - m_wild = { "wild", "suit" }, - m_glass = { "glass", "xmult" }, - m_steel = { "steel", "metal", "grey" }, - m_stone = { "stone", "chip", "chips" }, - m_gold = { "gold", "money", "yellow" }, - m_lucky = { "lucky", "rng" }, - m_cry_echo = { "echo", "retrigger", "retriggers" }, - m_cry_light = { "light" }, - ccd = { "ccd" }, - null = { "nil" }, - } - - local enh_suffix = nil - - for i, v in pairs(enh_table) do - for j, k in pairs(v) do - if string.lower(G.ENTERED_ENH) == string.lower(k) then - enh_suffix = i - end - end - end - - if enh_suffix then - G.PREVIOUS_ENTERED_ENH = G.ENTERED_ENH - G.GAME.USING_CODE = false - if enh_suffix == "ccd" then - check_for_unlock({ type = "cheat_used" }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - return true - end, - })) - for i = 1, #G.hand.highlighted do - local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.highlighted[i]:flip() - play_sound("card1", percent) - G.hand.highlighted[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.hand.highlighted do - local CARD = G.hand.highlighted[i] - local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - CARD:flip() - CARD:set_ability(get_random_consumable("cry_class"), true, nil) - play_sound("tarot2", percent) - CARD:juice_up(0.3, 0.3) - return true - end, - })) - end - elseif enh_suffix == "null" then - local destroyed_cards = {} - check_for_unlock({ type = "cheat_used" }) - for i = #G.hand.highlighted, 1, -1 do - local card = G.hand.highlighted[i] - if not card.ability.eternal then - destroyed_cards[#destroyed_cards + 1] = G.hand.highlighted[i] - if card.ability.name == "Glass Card" then - card:shatter() - else - card:start_dissolve(nil, i == #G.hand.highlighted) - end - end - end - if destroyed_cards[1] then - for j=1, #G.jokers.cards do - eval_card(G.jokers.cards[j], {cardarea = G.jokers, remove_playing_cards = true, removed = destroyed_cards}) - end - end - G.CHOOSE_ENH:remove() - return - else - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - play_sound("tarot1") - return true - end, - })) - for i = 1, #G.hand.highlighted do - local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.highlighted[i]:flip() - play_sound("card1", percent) - G.hand.highlighted[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - delay(0.2) - for i = 1, #G.hand.highlighted do - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - G.hand.highlighted[i]:set_ability(G.P_CENTERS[enh_suffix]) - return true - end, - })) - end - for i = 1, #G.hand.highlighted do - local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.15, - func = function() - G.hand.highlighted[i]:flip() - play_sound("tarot2", percent, 0.6) - G.hand.highlighted[i]:juice_up(0.3, 0.3) - return true - end, - })) - end - end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - G.hand:unhighlight_all() - return true - end, - })) - delay(0.5) - G.CHOOSE_ENH:remove() - end -end - -G.FUNCS.class_cancel = function() - G.GAME.USING_CODE = false - G.CHOOSE_ENH:remove() -end - -G.FUNCS.ca = function() - G.GAME.USING_CODE = false - loadstring(G.ENTERED_ACE)() --Scary! - glitched_intensity = 0 - G.SETTINGS.GRAPHICS.crt = 0 - check_for_unlock({ type = "ach_cry_used_crash" }) - G.CHOOSE_ACE:remove() - G.ENTERED_ACE = nil -end -G.FUNCS.pointer_apply_previous = function() - if G.PREVIOUS_ENTERED_CARD then - G.ENTERED_CARD = G.PREVIOUS_ENTERED_CARD or "" - end - G.FUNCS.pointer_apply() -end - -local aliases = { - jimbo = "joker", - ["gary mccready"] = "joker", - greedy = "greedy joker", - lusty = "lusty joker", - wrathful = "wrathful joker", - gluttonous = "gluttonous joker", - jolly = "jolly joker", - zany = "zany joker", - mad = "mad joker", - crazy = "crazy joker", - droll = "droll joker", - sly = "sly joker", - wily = "wily joker", - clever = "clever joker", - devious = "devious joker", - crafty = "crafty joker", - half = "half joker", - stencil = "joker stencil", - dagger = "ceremonial dagger", - chaos = "chaos the clown", - fib = "fibonacci", - scary = "scary face", - abstract = "abstract joker", - delayedgrat = "delayed gratification", - banana = "gros michel", - steven = "even steven", - todd = "odd todd", - bus = "ride the bus", - faceless = "faceless joker", - todo = "to do list", - ["to-do"] = "to do list", - square = "square joker", - seance = "séance", - riffraff = "riff-raff", - cloudnine = "cloud 9", - trousers = "spare trousers", - ancient = "ancient joker", - mrbones = "mr. bones", - smeared = "smeared joker", - wee = "wee joker", - oopsall6s = "oops! all 6s", - all6s = "oops! all 6s", - oa6 = "oops! all 6s", - idol = "the idol", - duo = "the duo", - trio = "the trio", - family = "the family", - order = "the order", - tribe = "the tribe", - invisible = "invisible joker", - driverslicense = "driver's license", - burnt = "burnt joker", - caino = "canio", - house = "happy house", - queensgambit = "queen's gambit", - weefib = "weebonacci", - interest = "compound interest", - whip = "the whip", - triplet = "triplet rhythm", - pepper = "chili pepper", - krusty = "krusty the clown", - blurred = "blurred joker", - gofp = "garden of forking paths", - lutn = "light up the night", - nsnm = "no sound, no memory", - nosoundnomemory = "no sound, no memory", - lath = "...like antennas to heaven", - likeantennastoheaven = "...like antennas to heaven", - consumeable = "consume-able", - error = "j_cry_error", - ap = "ap joker", - rng = "rnjoker", - filler = "the filler", - duos = "the duos", - home = "the home", - nuts = "the nuts", - quintet = "the quintet", - unity = "the unity", - swarm = "the swarm", - crypto = "crypto coin", - googol = "googol play card", - googolplay = "googol play card", - google = "googol play card", - googleplay = "googol play card", - googleplaycard = "googol play card", - nostalgicgoogol = "nostalgic googol play card", - nostalgicgoogolplay = "nostalgic googol play card", - nostalgicgoogle = "nostalgic googol play card", - nostalgicgoogleplay = "nostalgic googol play card", - nostalgicgoogleplaycard = "nostalgic googol play card", - oldgoogol = "nostalgic googol play card", - oldgoogolplay = "nostalgic googol play card", - oldgoogle = "nostalgic googol play card", - oldgoogleplay = "nostalgic googol play card", - oldgoogleplaycard = "nostalgic googol play card", - localthunk = "supercell", - ["1fa"] = "one for all", - crust = "crustulum", - deathstar = "stella mortis", - ["jolly?"] = "jolly joker?", - scrabble = "scrabble tile", - ["13"] = "tredecim", - ["overstock+"] = "overstock plus", - directorscut = "director's cut", - ["3rs"] = "the 3 rs", - fool = "the fool", - magician = "the magician", - priestess = "the high priestess", - highpriestess = "the high priestess", - empress = "the empress", - emperor = "the emperor", - hierophant = "the hierophant", - lovers = "the lovers", - chariot = "the chariot", - hermit = "the hermit", - wheeloffortune = "the wheel of fortune", - hangedman = "the hanged man", - devil = "the devil", - tower = "the tower", - star = "the star", - moon = "the moon", - sun = "the sun", - world = "the world", - automaton = "the automaton", - eclipse = "c_cry_eclipse", - x = "planet x", - X = "planet x", - pointer = "pointer://", - payload = "://payload", - reboot = "://reboot", - revert = "://revert", - crash = "://crash", - semicolon = ";//", - [";"] = ";//", - malware = "://malware", - seed = "://seed", - variable = "://variable", - class = "://class", - commit = "://commit", - merge = "://merge", - multiply = "://multiply", - divide = "://divide", - delete = "://delete", - machinecode = "://machinecode", - run = "://run", - exploit = "://exploit", - offbyone = "://offbyone", - rework = "://rework", - patch = "://patch", - ctrlv = "://ctrl+v", - ["ctrl+v"] = "://ctrl+v", - ["ctrl v"] = "://ctrl+v", - instantiate = "://INSTANTIATE", - inst = "://INSTANTIATE", - spaghetti = "://spaghetti", - topuptag = "top-up tag", - gamblerstag = "gambler's tag", - hook = "hook://", - ox = "the ox", - wall = "the wall", - wheel = "the wheel", - arm = "the arm", - club = "the club", - fish = "the fish", - psychic = "the psychic", - goad = "the goad", - water = "the water", - window = "the window", - manacle = "the manacle", - eye = "the eye", - mouth = "the mouth", - plant = "the plant", - serpent = "the serpent", - pillar = "the pillar", - needle = "the needle", - head = "the head", - tooth = "the tooth", - flint = "the flint", - mark = "the mark", - oldox = "nostalgic ox", - oldhouse = "nostalgic house", - oldarm = "nostalgic arm", - oldfish = "nostalgic fish", - oldmanacle = "nostalgic manacle", - oldserpent = "nostalgic serpent", - oldpillar = "nostalgic pillar", - oldflint = "nostalgic flint", - oldmark = "nostalgic mark", - tax = "the tax", - trick = "the trick", - joke = "the joke", - hammer = "the hammer", - box = "the box", - windmill = "the windmill", - clock = "the clock", - code = "code joker", - copypaste = "copy/paste", - translucent = "translucent joker", - circulus = "circulus pistoris", - macabre = "macabre joker", - -- Jen's Almanac aliases - freddy = "freddy snowshoe", - paupovlin = "paupovlin revere", - poppin = "paupovlin revere", - jen = "jen walter", - --should I add "reverse ___" prefixes for the reverse tarots? - survivor = "the survivor", - monk = "the monk", - hunter = "the hunter", - gourmand = "the gourmand", - saint = "the saint", - genius = "the genius", - scientist = "the scientist", - peasant = "the peasant", - adversary = "the adversary", - rivals = "the rivals", - hitchhiker = "the hitchhiker", - angel = "the angel", - collapse = "the collapse", - lowlaywoman = "the low laywoman", - laywoman = "the low laywoman", - servant = "the servant", - extrovert = "the extrovert", - discofpenury = "the disc of penury", - flash = "the flash", - eclipsespectral = "c_jen_reverse_moon", - eclipsetorat = "c_jen_reverse_moon", - darkness = "the darkness", - void = "the void", - topuptoken = "top-up token", - sagittarius = "sagittarius a*", - ["sagitarius a*"] = "sagittarius a*", --minor spelling mistakes are forgiven - sagitarius = "sagittarius a*", --minor spelling mistakes are forgiven -} -for k, v in pairs(aliases) do - Cryptid.aliases[k] = v -end -G.FUNCS.pointer_apply = function() - local function apply_lower(str) - -- Remove content within {} and any remaining spaces - str = str:gsub("%b{}", ""):gsub("%s+", "") - --this weirdness allows you to get m and M separately - if string.len(str) == 1 then - return str - end - return string.lower(str) - end - local current_card - local entered_card = G.ENTERED_CARD - G.PREVIOUS_ENTERED_CARD = G.ENTERED_CARD - local aliases = Cryptid.aliases - if aliases[apply_lower(entered_card)] then - entered_card = aliases[apply_lower(entered_card)] - end - for i, v in pairs(G.P_CENTERS) do - if v.name and apply_lower(entered_card) == apply_lower(v.name) then - current_card = i - end - if apply_lower(entered_card) == apply_lower(i) then - current_card = i - end - if apply_lower(entered_card) == apply_lower(localize({ type = "name_text", set = v.set, key = i })) then - current_card = i - end - end - if current_card then - local created = false - if - G.P_CENTERS[current_card].set == "Joker" - and G.P_CENTERS[current_card].unlocked - and not G.GAME.banned_keys[current_card] - and (G.P_CENTERS[current_card].rarity ~= "cry_exotic" or #SMODS.find_card("j_jen_p03") > 0) - and not (Jen and Jen.overpowered(G.P_CENTERS[current_card].rarity)) - then - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, current_card) - card:add_to_deck() - G.jokers:emplace(card) - created = true - end - if - G.P_CENTERS[current_card].consumeable - and G.P_CENTERS[current_card].set ~= "jen_omegaconsumable" - and not G.GAME.banned_keys[current_card] - then - local card = create_card("Consumeable", G.consumeables, nil, nil, nil, nil, current_card) - if card.ability.name and card.ability.name == "cry-Chambered" then card.ability.extra.num_copies = 1 end - card:add_to_deck() - G.consumeables:emplace(card) - created = true - end - if - G.P_CENTERS[current_card].set == "Voucher" - and G.P_CENTERS[current_card].unlocked - and not G.GAME.banned_keys[current_card] - then - local area - if G.STATE == G.STATES.HAND_PLAYED then - if not G.redeemed_vouchers_during_hand then - G.redeemed_vouchers_during_hand = - CardArea(G.play.T.x, G.play.T.y, G.play.T.w, G.play.T.h, { type = "play", card_limit = 5 }) - end - area = G.redeemed_vouchers_during_hand - else - area = G.play - end - local card = create_card("Voucher", area, nil, nil, nil, nil, current_card) - card:start_materialize() - area:emplace(card) - card.cost = 0 - card.shop_voucher = false - local current_round_voucher = G.GAME.current_round.voucher - card:redeem() - G.GAME.current_round.voucher = current_round_voucher - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0, - func = function() - card:start_dissolve() - return true - end, - })) - created = true - end - if - G.P_CENTERS[current_card].set == "Booster" - and not G.GAME.banned_keys[current_card] - and (G.P_CENTERS[current_card].name ~= "Exotic Buffoon Pack" or #SMODS.find_card("j_jen_p03") ~= 0) - and G.STATE ~= G.STATES.TAROT_PACK - and G.STATE ~= G.STATES.SPECTRAL_PACK - and G.STATE ~= G.STATES.STANDARD_PACK - and G.STATE ~= G.STATES.BUFFOON_PACK - and G.STATE ~= G.STATES.PLANET_PACK - and G.STATE ~= G.STATES.SMODS_BOOSTER_OPENED - then - local card = create_card("Booster", G.hand, nil, nil, nil, nil, current_card) - card.cost = 0 - card.from_tag = true - G.FUNCS.use_card({ config = { ref_table = card } }) - card:start_materialize() - created = true - end - if created then - G.CHOOSE_CARD:remove() - G.GAME.USING_CODE = false - G.GAME.USING_POINTER = false - return - end - end - for i, v in pairs(G.P_TAGS) do - if v.name and apply_lower(entered_card) == apply_lower(v.name) then - current_card = i - end - if apply_lower(entered_card) == apply_lower(i) then - current_card = i - end - if apply_lower(entered_card) == apply_lower(localize({ type = "name_text", set = v.set, key = i })) then - current_card = i - end - end - if - current_card - and not G.P_CENTERS[current_card] - and not G.GAME.banned_keys[current_card] - then - local created = false - local t = Tag(current_card, nil, "Big") - add_tag(t) - if current_card == "tag_orbital" then - local _poker_hands = {} - for k, v in pairs(G.GAME.hands) do - if v.visible then - _poker_hands[#_poker_hands + 1] = k - end - end - t.ability.orbital_hand = pseudorandom_element(_poker_hands, pseudoseed("cry_pointer_orbital")) - end - if current_card == "tag_cry_rework" then - --tbh this is the most unbalanced part of the card - t.ability.rework_edition = - pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_pointer_edition")).key - t.ability.rework_key = pseudorandom_element(G.P_CENTER_POOLS.Joker, pseudoseed("cry_pointer_joker")).key - end - G.CHOOSE_CARD:remove() - G.GAME.USING_CODE = false - G.GAME.USING_POINTER = false - return - end - for i, v in pairs(G.P_BLINDS) do - if v.name and apply_lower(entered_card) == apply_lower(v.name) then - current_card = i - end - if apply_lower(entered_card) == apply_lower(i) then - current_card = i - end - if apply_lower(entered_card) == apply_lower(localize({ type = "name_text", set = "Blind", key = i })) then - current_card = i - end - end - if current_card and not G.P_CENTERS[current_card] and not G.P_TAGS[current_card] and not G.GAME.banned_keys[current_card] then - local created = false - if not G.GAME.blind or (G.GAME.blind.name == "" or not G.GAME.blind.blind_set) then - --from debugplus - local par = G.blind_select_opts.boss.parent - G.GAME.round_resets.blind_choices.Boss = current_card - - G.blind_select_opts.boss:remove() - G.blind_select_opts.boss = UIBox({ - T = { par.T.x, 0, 0, 0 }, - definition = { - n = G.UIT.ROOT, - config = { - align = "cm", - colour = G.C.CLEAR, - }, - nodes = { - UIBox_dyn_container( - { create_UIBox_blind_choice("Boss") }, - false, - get_blind_main_colour("Boss"), - mix_colours(G.C.BLACK, get_blind_main_colour("Boss"), 0.8) - ), - }, - }, - config = { - align = "bmi", - offset = { - x = 0, - y = G.ROOM.T.y + 9, - }, - major = par, - xy_bond = "Weak", - }, - }) - par.config.object = G.blind_select_opts.boss - par.config.object:recalculate() - G.blind_select_opts.boss.parent = par - G.blind_select_opts.boss.alignment.offset.y = 0 - - for i = 1, #G.GAME.tags do - if G.GAME.tags[i]:apply_to_run({ - type = "new_blind_choice", - }) then - break - end - end - created = true - else - G.GAME.blind:set_blind(G.P_BLINDS[current_card]) - ease_background_colour_blind(G.STATE) - created = true - end - if created then - G.CHOOSE_CARD:remove() - G.GAME.USING_CODE = false - G.GAME.USING_POINTER = false - end - end - if not current_card then -- if card isn't created yet, try playing cards - local words = {} - for i in string.gmatch(string.lower(entered_card), "%S+") do -- not using apply_lower because we actually want the spaces here - table.insert(words, i) - end - - local rank_table = { - { "stone" }, - { "2", "Two", "II" }, - { "3", "Three", "III" }, - { "4", "Four", "IV" }, - { "5", "Five", "V" }, - { "6", "Six", "VI" }, - { "7", "Seven", "VII" }, - { "8", "Eight", "VIII" }, - { "9", "Nine", "IX" }, - { "10", "1O", "Ten", "X", "T" }, - { "J", "Jack" }, - { "Q", "Queen" }, - { "K", "King" }, - { "A", "Ace", "One", "1", "I" }, - } -- ty variable - local _rank = nil - for m = #words, 1, -1 do -- the legendary TRIPLE LOOP, checking from end since rank is most likely near the end - for i, v in pairs(rank_table) do - for j, k in pairs(v) do - if words[m] == string.lower(k) then - _rank = i - break - end - end - if _rank then break end - end - if _rank then break end - end - if _rank then -- a playing card is going to get created at this point, but we can find additional descriptors - local suit_table = { - ["Spades"] = { "spades" }, - ["Hearts"] = { "hearts" }, - ["Clubs"] = { "clubs" }, - ["Diamonds"] = { "diamonds" }, - } - for k, v in pairs(SMODS.Suits) do - local index = v.key - local current_name = G.localization.misc.suits_plural[index] - if not suit_table[v.key] then - suit_table[v.key] = { string.lower(current_name) } - end - end - -- i'd rather be pedantic and not forgive stuff like "spade", there's gonna be a lot of checks - -- can change that if need be - local enh_table = { - ["m_lucky"] = { "lucky" }, - ["m_mult"] = { "mult" }, - ["m_bonus"] = { "bonus" }, - ["m_wild"] = { "wild" }, - ["m_steel"] = { "steel" }, - ["m_glass"] = { "glass" }, - ["m_gold"] = { "gold" }, - ["m_stone"] = { "stone" }, - ["m_cry_echo"] = { "echo" }, - } - for k, v in pairs(G.P_CENTER_POOLS.Enhanced) do - local index = v.key - local current_name = G.localization.descriptions.Enhanced[index].name - current_name = current_name:gsub(" Card$", "") - if not enh_table[v.key] then - enh_table[v.key] = { string.lower(current_name) } - end - end - local ed_table = { - ["e_base"] = { "base" }, - ["e_foil"] = { "foil" }, - ["e_holo"] = { "holo" }, - ["e_polychrome"] = { "polychrome" }, - ["e_negative"] = { "negative" }, - ["e_cry_mosaic"] = { "mosaic" }, - ["e_cry_oversat"] = { "oversat" }, - ["e_cry_glitched"] = { "glitched" }, - ["e_cry_astral"] = { "astral" }, - ["e_cry_blur"] = { "blurred" }, - ["e_cry_gold"] = { "golden" }, - ["e_cry_glass"] = { "fragile" }, - ["e_cry_m"] = { "jolly" }, - ["e_cry_noisy"] = { "noisy" }, - ["e_cry_double_sided"] = { "double-sided", "double_sided", "double" }, -- uhhh sure - } - for k, v in pairs(G.P_CENTER_POOLS.Edition) do - local index = v.key - local current_name = G.localization.descriptions.Edition[index].name - if not ed_table[v.key] then - ed_table[v.key] = { string.lower(current_name) } - end - end - local seal_table = { - ["Red"] = { "red" }, - ["Blue"] = { "blue" }, - ["Purple"] = { "purple" }, - ["Gold"] = { "gold", "golden" }, -- don't worry we're handling seals differently - ["cry_azure"] = { "azure" }, - ["cry_green"] = { "green" }, - } - local sticker_table = { - ["eternal"] = { "eternal" }, - ["perishable"] = { "perishable" }, - ["rental"] = { "rental" }, - ["pinned"] = { "pinned" }, - ["banana"] = { "banana" }, - ["cry_rigged"] = { "rigged" }, - } - local function parsley(_table, _word) - for i, v in pairs(_table) do - for j, k in pairs(v) do - if _word == string.lower(k) then - return i - end - end - end - return "" - end - local function to_rank(rrank) - if rrank <= 10 then return tostring(rrank) - elseif rrank == 11 then return "Jack" - elseif rrank == 12 then return "Queen" - elseif rrank == 13 then return "King" - elseif rrank == 14 then return "Ace" - end - end - - -- ok with all that fluff out the way now we can figure out what on earth we're creating - - local _seal_att = false - local _suit = "" - local _enh = "" - local _ed = "" - local _seal = "" - local _stickers = {} - for m = #words, 1, -1 do - -- we have a word. figure out what that word is - -- this is dodgy spaghetti but w/ever - local wword = words[m] - if _suit == "" then _suit = parsley(suit_table, wword) end - if _enh == "" then - _enh = parsley(enh_table, wword) - if _enh == "m_gold" and _seal_att == true then _enh = "" end - end - if _ed == "" then - _ed = parsley(ed_table, wword) - if _ed == "e_cry_gold" and _seal_att == true then _ed = "" end - end - if _seal == "" then - _seal = parsley(seal_table, wword) - if _seal == "Gold" and _seal_att == false then _seal = "" end - end - local _st = parsley(sticker_table, wword) - if _st then _stickers[#_stickers+1] = _st end - if wword == "seal" or wword == "sealed" then - _seal_att = true - else - _seal_att = false - end -- from end so the next word should describe the seal - end - - -- now to construct the playing card - -- i'm doing this by applying everything but maybe it's a bit janky? - - G.CHOOSE_CARD:remove() - G.GAME.USING_CODE = false - G.GAME.USING_POINTER = false - - G.E_MANAGER:add_event(Event({ - func = function() - G.playing_card = (G.playing_card and G.playing_card + 1) or 1 - local _card = create_card("Base", G.play, nil, nil, nil, nil, nil, "pointer") - SMODS.change_base(_card, _suit ~= "" and _suit or pseudorandom_element({'Spades','Hearts','Diamonds','Clubs'}, pseudoseed('sigil')), _rank > 1 and to_rank(_rank) or nil) - if _enh ~= "" then _card:set_ability(G.P_CENTERS[_enh]) end - if _rank == 1 then _card:set_ability(G.P_CENTERS['m_stone']) end - if _seal ~= "" then _card:set_seal(_seal, true, true) end - if _ed ~= "" then _card:set_edition(_ed, true, true) end - for i = 1, #_stickers do - _card.ability[_stickers[i]] = true - if _stickers[i] == "pinned" then _card.pinned = true end - end - _card:start_materialize() - G.play:emplace(_card) - table.insert(G.playing_cards, _card) - playing_card_joker_effects({ _card }) - return true - end})) - G.E_MANAGER:add_event(Event({ - func = function() - G.deck.config.card_limit = G.deck.config.card_limit + 1 - return true - end})) - draw_card(G.play,G.deck, 90,'up', nil) - end - end -end -crashes = { - function() - G:save_settings() - G:save_progress() - --instantly quit the game, no error log - function love.errorhandler() end - print(crash.crash.crash) - end, - function() - G:save_settings() - G:save_progress() - --removes draw loop, you're frozen and can still weirdly interact with the game a bit - function love.draw() end - end, - function() - G:save_settings() - G:save_progress() - --by WilsonTheWolf and MathIsFun_, funky error screen with random funny message - messages = { - "Oops.", - "Your cards have been TOASTED, extra crispy for your pleasure.", - "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "What we have here is a certified whoopsidaisy", - "Why don't you buy more jonkers? Are you stupid?", - "lmao", - "How about a game of YOU MUST DIE?", - "Sorry, I was in the bathroom. What'd I mi'Where'd... Where is everyone?", - "Peter? What are you doing? Cards. WHAT THE FUCK?", - "what if it was called freaklatro", - "4", - "I SAWED THIS GAME IN HALF!", - "is this rush hour 4", - "You missed a semicolon on line 19742, you buffoon", - "you are an idiot", - "You do not recognise the cards in the deck.", - ":( Your P", - "Assertion failed", - "Play ULTRAKILL", - "Play Nova Drift", - "Play Balatro- wait", - "what if instead of rush hour it was called kush hour and you just smoked a massive blunt", - "death.fell.accident.water", - "Balatro's innards were made outards", - "i am going to club yrou", - "But the biggest joker of them all, it was you all along!", - "fission mailed successfully", - "table index is nil", - "index is nil table", - "nil is index table", - "nildex is in table", - "I AM THE TABLE", - "I'm never going back this casino agai-", - "what did you think would happen?", - "DO THE EARTHQUAKE! [screams]", - "fuck you", - "Screaming in the casino prank! AAAAAAAAAAAAAAAAAA", - "https://www.youtube.com/watch?v=dQw4w9WgXcQ", - "You musn't tear or crease it.", - "Sure, but the point is to do it without making a hole.", - "The end of all things! As was foretold in the prophecy!", - "Do it again. It'd be funny", - "", - ":3", - "Looks like a skill issue to me.", - "it turns out that card was ligma", - "YouJustLostTheCasinoGame", - "Nah fuck off", - "attempt to call global your_mom (value too large)", - "Killed by intentional game design", - "attempt to index field 'attempt to call global to_big (too big)' (a nil value)", - "what.avi", - "The C", - "Shoulda kept Chicot", - "Maybe next time don't do that?", - "[recursion]", - "://SHART", - "It's converging time.", - "This is the last error message.", - } - function corruptString(str) - -- replace each character with a random valid ascii character - local newStr = "" - local len - if type(str) == "string" then - len = #str - else - len = str - end - for i = 1, len do - -- newStr = newStr .. string.char(math.random(33, 122)) - local c = math.random(33, 122) - newStr = newStr .. string.char(c) - if c == 92 then -- backslash - newStr = newStr .. string.char(c) - end - end - return newStr - end - - function getDebugInfoForCrash() - local info = "Additional Context:\nBalatro Version: " .. VERSION .. "\nModded Version: " .. MODDED_VERSION - local major, minor, revision, codename = love.getVersion() - info = info .. "\nLove2D Version: " .. corruptString(string.format("%d.%d.%d", major, minor, revision)) - - local lovely_success, lovely = pcall(require, "lovely") - if lovely_success then - info = info .. "\nLovely Version: " .. corruptString(lovely.version) - end - if SMODS.mod_list then - info = info .. "\nSteamodded Mods:" - local enabled_mods = {} - for _, v in ipairs(SMODS.mod_list) do - if v.can_load then - table.insert(enabled_mods, v) - end - end - for k, v in ipairs(enabled_mods) do - info = info - .. "\n " - .. k - .. ": " - .. v.name - .. " by " - .. table.concat(v.author, ", ") - .. " [ID: " - .. v.id - .. (v.priority ~= 0 and (", Priority: " .. v.priority) or "") - .. (v.version and v.version ~= "0.0.0" and (", Version: " .. v.version) or "") - .. "]" - local debugInfo = v.debug_info - if debugInfo then - if type(debugInfo) == "string" then - if #debugInfo ~= 0 then - info = info .. "\n " .. debugInfo - end - elseif type(debugInfo) == "table" then - for kk, vv in pairs(debugInfo) do - if type(vv) ~= "nil" then - vv = tostring(vv) - end - if #vv ~= 0 then - info = info .. "\n " .. kk .. ": " .. vv - end - end - end - end - end - end - return info - end - - VERSION = corruptString(VERSION) - MODDED_VERSION = corruptString(MODDED_VERSION) - - if SMODS.mod_list then - for i, mod in ipairs(SMODS.mod_list) do - mod.can_load = true - mod.name = corruptString(mod.name) - mod.id = corruptString(mod.id) - mod.author = { corruptString(20) } - mod.version = corruptString(mod.version) - mod.debug_info = corruptString(math.random(5, 100)) - end - end - - do - local utf8 = require("utf8") - local linesize = 100 - - -- Modifed from https://love2d.org/wiki/love.errorhandler - function love.errorhandler(msg) - msg = tostring(msg) - - if not love.window or not love.graphics or not love.event then - return - end - - if not love.graphics.isCreated() or not love.window.isOpen() then - local success, status = pcall(love.window.setMode, 800, 600) - if not success or not status then - return - end - end - - -- Reset state. - if love.mouse then - love.mouse.setVisible(true) - love.mouse.setGrabbed(false) - love.mouse.setRelativeMode(false) - if love.mouse.isCursorSupported() then - love.mouse.setCursor() - end - end - if love.joystick then - -- Stop all joystick vibrations. - for i, v in ipairs(love.joystick.getJoysticks()) do - v:setVibration() - end - end - if love.audio then - love.audio.stop() - end - - love.graphics.reset() - local font = love.graphics.setNewFont("resources/fonts/m6x11plus.ttf", 20) - - local background = { math.random() * 0.3, math.random() * 0.3, math.random() * 0.3 } - love.graphics.clear(background) - love.graphics.origin() - - local sanitizedmsg = {} - for char in msg:gmatch(utf8.charpattern) do - table.insert(sanitizedmsg, char) - end - sanitizedmsg = table.concat(sanitizedmsg) - - local err = {} - - table.insert(err, "Oops! The game crashed:") - table.insert(err, sanitizedmsg) - - if #sanitizedmsg ~= #msg then - table.insert(err, "Invalid UTF-8 string in error message.") - end - - local success, msg = pcall(getDebugInfoForCrash) - if success and msg then - table.insert(err, "\n" .. msg) - else - table.insert(err, "\n" .. "Failed to get additional context :/") - end - - local p = table.concat(err, "\n") - - p = p:gsub("\t", "") - p = p:gsub('%[string "(.-)"%]', "%1") - - local scrollOffset = 0 - local endHeight = 0 - love.keyboard.setKeyRepeat(true) - - local function scrollDown(amt) - if amt == nil then - amt = 18 - end - scrollOffset = scrollOffset + amt - if scrollOffset > endHeight then - scrollOffset = endHeight - end - end - - local function scrollUp(amt) - if amt == nil then - amt = 18 - end - scrollOffset = scrollOffset - amt - if scrollOffset < 0 then - scrollOffset = 0 - end - end - - local pos = 70 - local arrowSize = 20 - - local function calcEndHeight() - local font = love.graphics.getFont() - local rw, lines = font:getWrap(p, love.graphics.getWidth() - pos * 2) - local lineHeight = font:getHeight() - local atBottom = scrollOffset == endHeight and scrollOffset ~= 0 - endHeight = #lines * lineHeight - love.graphics.getHeight() + pos * 2 - if endHeight < 0 then - endHeight = 0 - end - if scrollOffset > endHeight or atBottom then - scrollOffset = endHeight - end - end - - local function draw() - if not love.graphics.isActive() then - return - end - love.graphics.clear(background) - calcEndHeight() - local time = love.timer.getTime() - if not G.SETTINGS.reduced_motion then - background = { math.random() * 0.3, math.random() * 0.3, math.random() * 0.3 } - p = p .. "\n" .. corruptString(math.random(linesize - linesize / 2, linesize + linesize * 2)) - linesize = linesize + linesize / 25 - end - love.graphics.printf(p, pos, pos - scrollOffset, love.graphics.getWidth() - pos * 2) - if scrollOffset ~= endHeight then - love.graphics.polygon( - "fill", - love.graphics.getWidth() - (pos / 2), - love.graphics.getHeight() - arrowSize, - love.graphics.getWidth() - (pos / 2) + arrowSize, - love.graphics.getHeight() - (arrowSize * 2), - love.graphics.getWidth() - (pos / 2) - arrowSize, - love.graphics.getHeight() - (arrowSize * 2) - ) - end - if scrollOffset ~= 0 then - love.graphics.polygon( - "fill", - love.graphics.getWidth() - (pos / 2), - arrowSize, - love.graphics.getWidth() - (pos / 2) + arrowSize, - arrowSize * 2, - love.graphics.getWidth() - (pos / 2) - arrowSize, - arrowSize * 2 - ) - end - love.graphics.present() - end - - local fullErrorText = p - local function copyToClipboard() - if not love.system then - return - end - love.system.setClipboardText(fullErrorText) - p = p .. "\nCopied to clipboard!" - end - - if G then - -- Kill threads (makes restarting possible) - if G.SOUND_MANAGER and G.SOUND_MANAGER.channel then - G.SOUND_MANAGER.channel:push({ - type = "kill", - }) - end - if G.SAVE_MANAGER and G.SAVE_MANAGER.channel then - G.SAVE_MANAGER.channel:push({ - type = "kill", - }) - end - if G.HTTP_MANAGER and G.HTTP_MANAGER.channel then - G.HTTP_MANAGER.channel:push({ - type = "kill", - }) - end - end - - return function() - love.event.pump() - - for e, a, b, c in love.event.poll() do - if e == "quit" then - return 1 - elseif e == "keypressed" and a == "escape" then - return 1 - elseif e == "keypressed" and a == "c" and love.keyboard.isDown("lctrl", "rctrl") then - copyToClipboard() - elseif e == "keypressed" and a == "r" then - return "restart" - elseif e == "keypressed" and a == "down" then - scrollDown() - elseif e == "keypressed" and a == "up" then - scrollUp() - elseif e == "keypressed" and a == "pagedown" then - scrollDown(love.graphics.getHeight()) - elseif e == "keypressed" and a == "pageup" then - scrollUp(love.graphics.getHeight()) - elseif e == "keypressed" and a == "home" then - scrollOffset = 0 - elseif e == "keypressed" and a == "end" then - scrollOffset = endHeight - elseif e == "wheelmoved" then - scrollUp(b * 20) - elseif e == "gamepadpressed" and b == "dpdown" then - scrollDown() - elseif e == "gamepadpressed" and b == "dpup" then - scrollUp() - elseif e == "gamepadpressed" and b == "a" then - return "restart" - elseif e == "gamepadpressed" and b == "x" then - copyToClipboard() - elseif e == "gamepadpressed" and (b == "b" or b == "back" or b == "start") then - return 1 - elseif e == "touchpressed" then - local name = love.window.getTitle() - if #name == 0 or name == "Untitled" then - name = "Game" - end - local buttons = { "OK", localize("cry_code_cancel"), "Restart" } - if love.system then - buttons[4] = "Copy to clipboard" - end - local pressed = love.window.showMessageBox("Quit " .. name .. "?", "", buttons) - if pressed == 1 then - return 1 - elseif pressed == 3 then - return "restart" - elseif pressed == 4 then - copyToClipboard() - end - end - end - - draw() - - if love.timer then - love.timer.sleep(0.1) - end - end - end - end - - load("error(messages[math.random(1, #messages)])", corruptString(30), "t")() - end, - function() - check_for_unlock({ type = "ach_cry_used_crash" }) - --fills screen with Crash cards - glitched_intensity = 100 - G.SETTINGS.GRAPHICS.crt = 101 - G.E_MANAGER:add_event( - Event({ - trigger = "immediate", - blockable = false, - no_delete = true, - func = function() - G.GAME.accel = G.GAME.accel or 1.1 - for i = 1, G.GAME.accel do - local c = create_card("Code", nil, nil, nil, nil, nil, "c_cry_crash") - c.T.x = math.random(-G.CARD_W, G.TILE_W) - c.T.y = math.random(-G.CARD_H, G.TILE_H) - end - G.GAME.accel = G.GAME.accel^(1.005 + G.GAME.accel/20000) - return false - end, - }), - "other" - ) - end, - function() - G:save_settings() - G:save_progress() - -- Fake lovely panic - love.window.showMessageBox( - "lovely-injector", - 'lovely-injector has crashed:\npanicked at crates/lovely-core/src/lib.rs:420:69:\nFailed to parse patch at "C:\\\\users\\\\jimbo\\\\AppData\\\\Roaming\\\\Balatro\\\\Mods\\\\Cryptid\\\\lovely.toml":\nError { inner: TomlError { message: "expected `.`, `=`", original: Some("' - .. "\"According to all known laws of aviation, there is no way a bee should be able to fly.\\nIts wings are too small to get its fat little body off the ground.\\nThe bee, of course, flies anyway because bees don't care what humans think is impossible.\\nYellow, black. Yellow, black. Yellow, black. Yellow, black.\\nOoh, black and yellow!\\nLet's shake it up a little.\\nBarry! Breakfast is ready!\\nComing!\\nHang on a second.\\nHello?\\nBarry?\\nAdam?\\nCan you believe this is happening?\\nI can't.\\nI'll pick you up.\\nLooking sharp.\\nUse the stairs, Your father paid good money for those.\\nSorry. I'm excited.\\nHere's the graduate.\\nWe're very proud of you, son.\\nA perfect report card, all B's.\\nVery proud.\\nMa! I got a thing going here.\\nYou got lint on your fuzz.\\nOw! That's me!\\nWave to us! We'll be in row 118,000.\\nBye!\\nBarry, I told you, stop flying in the house!\\nHey, Adam.\\nHey, Barry.\\nIs that fuzz gel?\\nA little. Special day, graduation.\\nNever thought I'd make it.\\nThree days grade school, three days high school.\\nThose were awkward.\\nThree days college. I'm glad I took a day and hitchhiked around The Hive.\\nYou did come back different.\\nHi, Barry. Artie, growing a mustache? Looks good.\\nHear about Frankie?\\nYeah.\\nYou going to the funeral?\\nNo, I'm not going.\\nEverybody knows, sting someone, you die.\\nDon't waste it on a squirrel.\\nSuch a hothead.\\nI guess he could have just gotten out of the way.\\nI love this incorporating an amusement park into our day.\\nThat's why we don't need vacations.\\nBoy, quite a bit of pomp under the circumstances.\\nWell, Adam, today we are men.\\nWe are!\\nBee-men.\\nAmen!\\nHallelujah!\\nStudents, faculty, distinguished bees,\\nplease welcome Dean Buzzwell.\\nWelcome, New Hive City graduating class of 9:15.\\nThat concludes our ceremonies And begins your career at Honex Industries!\\nWill we pick our job today?\\nI heard it's just orientation.\\nHeads up! Here we go.\\nKeep your hands and antennas inside the tram at all times.\\nWonder what it'll be like?\\nA little scary.\\nWelcome to Honex, a division of Honesco and a part of the Hexagon Group.\\nThis is it!\\nWow.\\nWow.\\nWe know that you, as a bee, have worked your whole life to get to the point where you can work for your whole life.\\nHoney begins when our valiant Pollen Jocks bring the nectar to The Hive.\\nOur top-secret formula is automatically color-corrected, scent-adjusted and bubble-contoured into this soothing sweet syrup with its distinctive golden glow you know as... Honey!\\nThat girl was hot.\\nShe's my cousin!\\nShe is?\\nYes, we're all cousins.\\nRight. You're right.\\nAt Honex, we constantly strive to improve every aspect of bee existence.\\nThese bees are stress-testing a new helmet technology.\\nWhat do you think he makes?\\nNot enough.\\nHere we have our latest advancement, the Krelman.\\nWhat does that do?\\nCatches that little strand of honey that hangs after you pour it.\\nSaves us millions.\\nCan anyone work on the Krelman?\\nOf course. Most bee jobs are small ones.\\nBut bees know that every small job, if it's done well, means a lot.\\nBut choose carefully because you'll stay in the job you pick for the rest of your life.\\nThe same job the rest of your life? I didn't know that.\\nWhat's the difference?\\nYou'll be happy to know that bees, as a species, haven't had one day off in 27 million years.\\nSo you'll just work us to death?\\nWe'll sure try.\\nWow! That blew my mind!\\n\\\"What's the difference?\\\"\\nHow can you say that?\\nOne job forever?\\nThat's an insane choice to have to make.\\nI'm relieved. Now we only have to make one decision in life.\\nBut, Adam, how could they never have told us that?\\nWhy would you question anything? We're bees.\\nWe're the most perfectly functioning society on Earth.\\nYou ever think maybe things work a little too well here?\\nLike what? Give me one example.\\nI don't know. But you know what I'm talking about.\\nPlease clear the gate. Royal Nectar Force on approach.\\nWait a second. Check it out.\\nHey, those are Pollen Jocks!\\nWow.\\nI've never seen them this close.\\nThey know what it's like outside The Hive.\\nYeah, but some don't come back.\\nHey, Jocks!\\nHi, Jocks!\\nYou guys did great!\\nYou're monsters!\\nYou're sky freaks! I love it! I love it!\\nI wonder where they were.\\nI don't know.\\nTheir day's not planned.\\nOutside The Hive, flying who knows where, doing who knows what.\\nYou can't just decide to be a Pollen Jock. You have to be bred for that.\\nRight.\\nLook. That's more pollen than you and I will see in a lifetime.\\nIt's just a status symbol.\\nBees make too much of it.\\nPerhaps. Unless you're wearing it and the ladies see you wearing it.\\nThose ladies?\\nAren't they our cousins too?\\nDistant. Distant.\\nLook at these two.\\nCouple of Hive Harrys.\\nLet's have fun with them.\\nIt must be dangerous being a Pollen Jock.\\nYeah. Once a bear pinned me against a mushroom!\\nHe had a paw on my throat, and with the other, he was slapping me!\\nOh, my!\\nI never thought I'd knock him out.\\nWhat were you doing during this?\\nTrying to alert the authorities.\\nI can autograph that.\\nA little gusty out there today, wasn't it, comrades?\\nYeah. Gusty.\\nWe're hitting a sunflower patch six miles from here tomorrow.\\nSix miles, huh?\\nBarry!\\nA puddle jump for us, but maybe you're not up for it.\\nMaybe I am.\\nYou are not!\\nWe're going 0900 at J-Gate.\\nWhat do you think, buzzy-boy?\\nAre you bee enough?\\nI might be. It all depends on what 0900 means.\\nHey, Honex!\\nDad, you surprised me.\\nYou decide what you're interested in?\\nWell, there's a lot of choices.\\nBut you only get one.\\nDo you ever get bored doing the same job every day?\\nSon, let me tell you about stirring.\\nYou grab that stick, and you just move it around, and you stir it around.\\nYou get yourself into a rhythm.\\nIt's a beautiful thing.\\nYou know, Dad, the more I think about it,\\nmaybe the honey field just isn't right for me.\\nYou were thinking of what, making balloon animals?\\nThat's a bad job for a guy with a stinger.\\nJanet, your son's not sure he wants to go into honey!\\nBarry, you are so funny sometimes.\\nI'm not trying to be funny.\\nYou're not funny! You're going into honey. Our son, the stirrer!\\nYou're gonna be a stirrer?\\nNo one's listening to me!\\nWait till you see the sticks I have.\\nI could say anything right now.\\nI'm gonna get an ant tattoo!\\nLet's open some honey and celebrate!\\nMaybe I'll pierce my thorax. Shave my antennae. Shack up with a grasshopper. Get a gold tooth and call everybody \\\"dawg\\\"!\\nI'm so proud.\\nWe're starting work today!\\nToday's the day.\\nCome on! All the good jobs will be gone.\\nYeah, right.\\nPollen counting, stunt bee, pouring, stirrer, front desk, hair removal...\\nIs it still available?\\nHang on. Two left!\\nOne of them's yours! Congratulations!\\nStep to the side.\\nWhat'd you get?\\nPicking crud out. Stellar!\\nWow!\\nCouple of newbies?\\nYes, sir! Our first day! We are ready!\\nMake your choice.\\nYou want to go first?\\nNo, you go.\\nOh, my. What's available?\\nRestroom attendant's open, not for the reason you think.\\nAny chance of getting the Krelman?\\nSure, you're on.\\nI'm sorry, the Krelman just closed out.\\nWax monkey's always open.\\nThe Krelman opened up again.\\nWhat happened?\\nA bee died. Makes an opening. See? He's dead. Another dead one.\\nDeady. Deadified. Two more dead.\\nDead from the neck up. Dead from the neck down. That's life!\\nOh, this is so hard!\\nHeating, cooling, stunt bee, pourer, stirrer, humming, inspector number seven, lint coordinator, stripe supervisor, mite wrangler.\\nBarry, what do you think I should... Barry?\\nBarry!\\nAll right, we've got the sunflower patch in quadrant nine...\\nWhat happened to you?\\nWhere are you?\\nI'm going out.\\nOut? Out where?\\nOut there.\\nOh, no!\\nI have to, before I go to work for the rest of my life.\\nYou're gonna die! You're crazy! Hello?\\nAnother call coming in.\\nIf anyone's feeling brave, there's a Korean deli on 83rd that gets their roses today.\\nHey, guys.\\nLook at that.\\nIsn't that the kid we saw yesterday?\\nHold it, son, flight deck's restricted.\\nIt's OK, Lou. We're gonna take him up.\\nReally? Feeling lucky, are you?\\nSign here, here. Just initial that.\\nThank you.\\nOK.\\nYou got a rain advisory today, and as you all know, bees cannot fly in rain.\\nSo be careful. As always, watch your brooms, hockey sticks, dogs, birds, bears and bats.\\nAlso, I got a couple of reports of root beer being poured on us.\\nMurphy's in a home because of it, babbling like a cicada!\\nThat's awful.\\nAnd a reminder for you rookies, bee law number one, absolutely no talking to humans!\\n All right, launch positions!\\nBuzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz!\\nBlack and yellow!\\nHello!\\nYou ready for this, hot shot?\\nYeah. Yeah, bring it on.\\nWind, check.\\nAntennae, check.\\nNectar pack, check.\\nWings, check.\\nStinger, check.\\nScared out of my shorts, check.\\nOK, ladies,\\nlet's move it out!\\nPound those petunias, you striped stem-suckers!\\nAll of you, drain those flowers!\\nWow! I'm out!\\nI can't believe I'm out!\\nSo blue.\\nI feel so fast and free!\\nBox kite!\\nWow!\\nFlowers!\\nThis is Blue Leader, We have roses visual.\\nBring it around 30 degrees and hold.\\nRoses!\\n30 degrees, roger. Bringing it around.\\nStand to the side, kid.\\nIt's got a bit of a kick.\\nThat is one nectar collector!\\nEver see pollination up close?\\nNo, sir.\\nI pick up some pollen here, sprinkle it over here. Maybe a dash over there, a pinch on that one.\\nSee that? It's a little bit of magic.\\nThat's amazing. Why do we do that?\\nThat's pollen power. More pollen, more flowers, more nectar, more honey for us.\\nCool.\\nI'm picking up a lot of bright yellow, Could be daisies, Don't we need those?\\nCopy that visual.\\nWait. One of these flowers seems to be on the move.\\nSay again? You're reporting a moving flower?\\nAffirmative.\\nThat was on the line!\\nThis is the coolest. What is it?\\nI don't know, but I'm loving this color.\\nIt smells good.\\nNot like a flower, but I like it.\\nYeah, fuzzy.\\nChemical-y.\\nCareful, guys. It's a little grabby.\\nMy sweet lord of bees!\\nCandy-brain, get off there!\\nProblem!\\nGuys!\\nThis could be bad.\\nAffirmative.\\nVery close.\\nGonna hurt.\\nMama's little boy.\\nYou are way out of position, rookie!\\nComing in at you like a missile!\\nHelp me!\\nI don't think these are flowers.\\nShould we tell him?\\nI think he knows.\\nWhat is this?!\\nMatch point!\\nYou can start packing up, honey, because you're about to eat it!\\nYowser!\\nGross.\\nThere's a bee in the car!\\nDo something!\\nI'm driving!\\nHi, bee.\\nHe's back here!\\nHe's going to sting me!\\nNobody move. If you don't move, he won't sting you. Freeze!\\nHe blinked!\\nSpray him, Granny!\\nWhat are you doing?!\\nWow... the tension level out here is unbelievable.\\nI gotta get home.\\nCan't fly in rain. Can't fly in rain. Can't fly in rain.\\nMayday! Mayday! Bee going down!\\nKen, could you close the window please?\\nKen, could you close the window please?\\nCheck out my new resume. I made it into a fold-out brochure. You see? Folds out.\\nOh, no. More humans. I don't need this.\\nWhat was that?\\nMaybe this time. This time. This time. This time! This time! This... Drapes!\\nThat is diabolical.\\nIt's fantastic. It's got all my special skills, even my top-ten favorite movies.\\nWhat's number one? Star Wars?\\nNah, I don't go for that... kind of stuff.\\nNo wonder we shouldn't talk to them. They're out of their minds.\\nWhen I leave a job interview, they're flabbergasted, can't believe what I say.\\nThere's the sun. Maybe that's a way out.\\nI don't remember the sun having a big 75 on it.\\nI predicted global warming. I could feel it getting hotter. At first I thought it was just me.\\nWait! Stop! Bee!\\nStand back. These are winter boots.\\nWait!\\nDon't kill him!\\nYou know I'm allergic to them! This thing could kill me!\\nWhy does his life have less value than yours?\\nWhy does his life have any less value than mine? Is that your statement?\\nI'm just saying all life has value. You don't know what he's capable of feeling.\\nMy brochure!\\nThere you go, little guy.\\nI'm not scared of him.It's an allergic thing.\\n Put that on your resume brochure.\\nMy whole face could puff up.\\nMake it one of your special skills.\\nKnocking someone out is also a special skill.\\nRight. Bye, Vanessa. Thanks.\\nVanessa, next week? Yogurt night?\\nSure, Ken. You know, whatever.\\nYou could put carob chips on there.\\nBye.\\nSupposed to be less calories.\\nBye.\\nI gotta say something. She saved my life. I gotta say something.\\nAll right, here it goes.\\nNah.\\nWhat would I say?\\nI could really get in trouble. It's a bee law. You're not supposed to talk to a human.\\nI can't believe I'm doing this. I've got to.\\nOh, I can't do it. Come on!\\nNo. Yes. No. Do it. I can't.\\nHow should I start it? \\\"You like jazz?\\\" No, that's no good.\\nHere she comes! Speak, you fool!\\nHi!\\nI'm sorry. You're talking.\\nYes, I know.\\nYou're talking!\\nI'm so sorry.\\nNo, it's OK. It's fine.\\nI know I'm dreaming. But I don't recall going to bed.\\nWell, I'm sure this is very disconcerting.\\nThis is a bit of a surprise to me. I mean, you're a bee!\\nI am. And I'm not supposed to be doing this, but they were all trying to kill me.\\nAnd if it wasn't for you... I had to thank you. It's just how I was raised.\\nThat was a little weird. I'm talking with a bee.\\nYeah.\\nI'm talking to a bee. And the bee is talking to me!\\nI just want to say I'm grateful.\\nI'll leave now.\\nWait! How did you learn to do that?\\nWhat?\\nThe talking thing.\\nSame way you did, I guess. \\\"Mama, Dada, honey.\\\" You pick it up.\\nThat's very funny.\\nYeah.\\nBees are funny. If we didn't laugh, we'd cry with what we have to deal with.\\nAnyway... Can I... get you something?\\nLike what?\\nI don't know. I mean... I don't know. Coffee?\\nI don't want to put you out.\\nIt's no trouble. It takes two minutes.\\nIt's just coffee.\\nI hate to impose.\\nDon't be ridiculous!\\nActually, I would love a cup.\\nHey, you want rum cake?\\nI shouldn't.\\nHave some.\\nNo, I can't.\\nCome on!\\nI'm trying to lose a couple micrograms.\\nWhere?\\nThese stripes don't help.\\nYou look great!\\nI don't know if you know anything about fashion.\\nAre you all right?\\nNo.\\nHe's making the tie in the cab as they're flying up Madison.\\nHe finally gets there.\\nHe runs up the steps into the church.\\nThe wedding is on.\\nAnd he says, \\\"Watermelon?\\nI thought you said Guatemalan.\\nWhy would I marry a watermelon?\\\"\\nIs that a bee joke?\\nThat's the kind of stuff we do.\\nYeah, different.\\nSo, what are you gonna do, Barry?\\nAbout work? I don't know.\\nI want to do my part for The Hive, but I can't do it the way they want.\\nI know how you feel.\\nYou do?\\nSure.\\nMy parents wanted me to be a lawyer or a doctor, but I wanted to be a florist.\\nReally?\\nMy only interest is flowers.\\nOur new queen was just elected with that same campaign slogan.\\nAnyway, if you look... There's my hive right there. See it?\\nYou're in Sheep Meadow!\\nYes! I'm right off the Turtle Pond!\\nNo way! I know that area. I lost a toe ring there once.\\nWhy do girls put rings on their toes?\\nWhy not?\\nIt's like putting a hat on your knee.\\nMaybe I'll try that.\\nYou all right, ma'am?\\nOh, yeah. Fine.\\nJust having two cups of coffee!\\nAnyway, this has been great.\\nThanks for the coffee.\\nYeah, it's no trouble.\\nSorry I couldn't finish it. If I did, I'd be up the rest of my life.\\nAre you...?\\nCan I take a piece of this with me?\\nSure! Here, have a crumb.\\nThanks!\\nYeah.\\nAll right. Well, then... I guess I'll see you around. Or not.\\nOK, Barry.\\nAnd thank you so much again... for before.\\nOh, that? That was nothing.\\nWell, not nothing, but... Anyway...\\nThis can't possibly work.\\nHe's all set to go.\\nWe may as well try it.\\nOK, Dave, pull the chute.\\nSounds amazing.\\nIt was amazing!\\nIt was the scariest, happiest moment of my life.\\nHumans! I can't believe you were with humans!\\nGiant, scary humans!\\nWhat were they like?\\nHuge and crazy. They talk crazy.\\nThey eat crazy giant things.\\nThey drive crazy.\\nDo they try and kill you, like on TV?\\nSome of them. But some of them don't.\\nHow'd you get back?\\nPoodle.\\nYou did it, and I'm glad. You saw whatever you wanted to see.\\nYou had your \\\"experience.\\\" Now you can pick out yourjob and be normal.\\nWell...\\nWell?\\nWell, I met someone.\\nYou did? Was she Bee-ish?\\nA wasp?! Your parents will kill you!\\nNo, no, no, not a wasp.\\nSpider?\\nI'm not attracted to spiders.\\nI know it's the hottest thing, with the eight legs and all. I can't get by that face.\\nSo who is she?\\nShe's... human.\\nNo, no. That's a bee law. You wouldn't break a bee law.\\nHer name's Vanessa.\\nOh, boy.\\nShe's so nice. And she's a florist!\\nOh, no! You're dating a human florist!\\nWe're not dating.\\nYou're flying outside The Hive, talking to humans that attack our homes with power washers and M-80s! One-eighth a stick of dynamite!\\nShe saved my life! And she understands me.\\nThis is over!\\nEat this.\\nThis is not over! What was that?\\nThey call it a crumb.\\nIt was so stingin' stripey!\\nAnd that's not what they eat.\\nThat's what falls off what they eat!\\nYou know what a Cinnabon is?\\nNo.\\nIt's bread and cinnamon and frosting. They heat it up...\\nSit down!\\n...really hot!\\nListen to me!\\nWe are not them! We're us.\\nThere's us and there's them!\\n\"), keys: [], span: Some(10..11)}}}", - "error" - ) - love.window.showMessageBox( - "lovely-injector", - "lovely-injector has crashed:\npanicked at library/cors/src/panicking.rs:221:5:\npanic in a function that cannot unwind", - "error" - ) - - function love.errorhandler() end - print(crash.crash.crash) - end, - function() - --Arbitrary Code Execution - glitched_intensity = 100 - G.SETTINGS.GRAPHICS.crt = 100 - G.GAME.USING_CODE = true - G.ENTERED_ACE = "" - G.CHOOSE_ACE = UIBox({ - definition = create_UIBox_crash(card), - config = { - align = "bmi", - offset = { x = 0, y = G.ROOM.T.y + 29 }, - major = G.jokers, - bond = "Weak", - instance_type = "POPUP", - }, - }) - end, -} - ---for testing --- crashes = {crashes[#crashes]} --- crashes[1]() - -local code_cards = { - code, - code_atlas, - pack_atlas, - pack1, - pack2, - packJ, - packM, - console, - automaton, - green_seal, - source, - pointer, - cut, - blender, - python, - payload, - reboot, - revert, - crash, - semicolon, - malware, - seed, - rigged, - --hook, - hooked, - variable, - class, - commit, - merge, - multiply, - divide, - delete, - machinecode, - run, - exploit, - oboe, - rework, - rework_tag, - --patch, - ctrl_v, - inst, - alttab, -} -if Cryptid.enabled["Misc. Decks"] then - code_cards[#code_cards + 1] = encoded -end -if Cryptid.enabled["Misc."] then - code_cards[#code_cards + 1] = spaghetti -end -if Cryptid.enabled["Enhanced Decks"] then - code_cards[#code_cards + 1] = source_deck -end -if Cryptid.enabled["Epic Jokers"] then - code_cards[#code_cards + 1] = CodeJoker - code_cards[#code_cards + 1] = copypaste -end -return { - name = "Code Cards", - init = function() - --allow Program Packs to let you keep the cards - local G_UIDEF_use_and_sell_buttons_ref = G.UIDEF.use_and_sell_buttons - function G.UIDEF.use_and_sell_buttons(card) - if (card.area == G.pack_cards and G.pack_cards) and card.ability.consumeable then --Add a use button - if card.ability.set == "Code" then - return { - n = G.UIT.ROOT, - config = { padding = -0.1, colour = G.C.CLEAR }, - nodes = { - { - n = G.UIT.R, - config = { - ref_table = card, - r = 0.08, - padding = 0.1, - align = "bm", - minw = 0.5 * card.T.w - 0.15, - minh = 0.7 * card.T.h, - maxw = 0.7 * card.T.w - 0.15, - hover = true, - shadow = true, - colour = G.C.UI.BACKGROUND_INACTIVE, - one_press = true, - button = "use_card", - func = "can_reserve_card", - }, - nodes = { - { - n = G.UIT.T, - config = { - text = localize("b_pull"), - colour = G.C.UI.TEXT_LIGHT, - scale = 0.55, - shadow = true, - }, - }, - }, - }, - { - n = G.UIT.R, - config = { - ref_table = card, - r = 0.08, - padding = 0.1, - align = "bm", - minw = 0.5 * card.T.w - 0.15, - maxw = 0.9 * card.T.w - 0.15, - minh = 0.1 * card.T.h, - hover = true, - shadow = true, - colour = G.C.UI.BACKGROUND_INACTIVE, - one_press = true, - button = "Do you know that this parameter does nothing?", - func = "can_use_consumeable", - }, - nodes = { - { - n = G.UIT.T, - config = { - text = localize("b_use"), - colour = G.C.UI.TEXT_LIGHT, - scale = 0.45, - shadow = true, - }, - }, - }, - }, - { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, - { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, - { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, - { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, - -- Betmma can't explain it, neither can I - }, - } - end - end - return G_UIDEF_use_and_sell_buttons_ref(card) - end - --Code from Betmma's Vouchers - G.FUNCS.can_reserve_card = function(e) - if #G.consumeables.cards < G.consumeables.config.card_limit then - e.config.colour = G.C.GREEN - e.config.button = "reserve_card" - else - e.config.colour = G.C.UI.BACKGROUND_INACTIVE - e.config.button = nil - end - end - G.FUNCS.reserve_card = function(e) - local c1 = e.config.ref_table - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - c1.area:remove_card(c1) - c1:add_to_deck() - if c1.children.price then - c1.children.price:remove() - end - c1.children.price = nil - if c1.children.buy_button then - c1.children.buy_button:remove() - end - c1.children.buy_button = nil - remove_nils(c1.children) - G.consumeables:emplace(c1) - G.GAME.pack_choices = G.GAME.pack_choices - 1 - if G.GAME.pack_choices <= 0 then - G.FUNCS.end_consumeable(nil, delay_fac) - end - return true - end, - })) - end - --Revert - local sr = save_run - function save_run() - if G.GAME.round_resets.ante ~= G.GAME.cry_revert_ante then - G.GAME.cry_revert_ante = G.GAME.round_resets.ante - G.GAME.cry_revert = nil - sr() - G.GAME.cry_revert = STR_PACK(G.culled_table) - sr() - end - sr() - end - --Semicolon - don't evaluate round - local gfer = G.FUNCS.evaluate_round - function G.FUNCS.evaluate_round() - if G.GAME.current_round.semicolon then - add_round_eval_row({ dollars = 0, name = "blind1", pitch = 0.95, saved = true }) - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 1.3 * math.min(G.GAME.blind.dollars + 2, 7) / 2 * 0.15 + 0.5, - func = function() - G.GAME.blind:defeat() - return true - end, - })) - delay(0.2) - add_round_eval_row({ name = "bottom", dollars = 0 }) - else - return gfer() - end - end - --Multiply - reset Jokers at end of round - local er = end_round - function end_round() - er() - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].cry_multiply then - m = G.jokers.cards[i].cry_multiply - cry_with_deck_effects(G.jokers.cards[i], function(card) - cry_misprintize(card, { min = 1 / m, max = 1 / m }, nil, true) - end) - G.jokers.cards[i].cry_multiply = nil - end - end - end - --some code to make typing more characters better - G.FUNCS.text_input_key = function(args) - args = args or {} - local hook = G.CONTROLLER.text_input_hook - if not hook.config.ref_table.extended_corpus then - if args.key == "[" or args.key == "]" then - return - end - if args.key == "0" then - args.key = "o" - end - else - if string.byte(args.key, 1) >= 128 then - print(string.byte(args.key, 1)) - args.key = "?" --fix for lovely bugging out - end - end - - --shortcut to hook config - local hook_config = G.CONTROLLER.text_input_hook.config.ref_table - hook_config.orig_colour = hook_config.orig_colour or copy_table(hook_config.colour) - - args.key = args.key or "%" - args.caps = args.caps or G.CONTROLLER.capslock or hook_config.all_caps --capitalize if caps lock or hook requires - - --Some special keys need to be mapped accordingly before passing through the corpus - local keymap = { - space = " ", - backspace = "BACKSPACE", - delete = "DELETE", - ["return"] = "RETURN", - right = "RIGHT", - left = "LEFT", - } - local corpus = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" - .. (hook.config.ref_table.extended_corpus and " 0!$&()<>?:{}+-=,.[]_" or "") - - if hook.config.ref_table.extended_corpus then - local lower_ext = "1234567890-=;',./" - local upper_ext = '!@#$%^&*()_+:"<>?' - if args.caps then - if args.key == "." then - args.key = ">" - end - if args.key == "[" then - args.key = "{" - end - if args.key == "]" then - args.key = "}" - end - if args.key == "\\" then - args.key = "|" - end - end - - pcall(function() - if string.find(lower_ext, args.key) and args.caps then - args.key = string.sub(string.sub(upper_ext, string.find(lower_ext, args.key)), 0, 1) - end - end) - end - local text = hook_config.text - - --set key to mapped key or upper if caps is true - args.key = keymap[args.key] or (args.caps and string.upper(args.key) or args.key) - - --Start by setting the cursor position to the correct location - TRANSPOSE_TEXT_INPUT(0) - - if string.len(text.ref_table[text.ref_value]) > 0 and args.key == "BACKSPACE" then --If not at start, remove preceding letter - MODIFY_TEXT_INPUT({ - letter = "", - text_table = text, - pos = text.current_position, - delete = true, - }) - TRANSPOSE_TEXT_INPUT(-1) - elseif string.len(text.ref_table[text.ref_value]) > 0 and args.key == "DELETE" then --if not at end, remove following letter - MODIFY_TEXT_INPUT({ - letter = "", - text_table = text, - pos = text.current_position + 1, - delete = true, - }) - TRANSPOSE_TEXT_INPUT(0) - elseif args.key == "RETURN" then --Release the hook - if hook.config.ref_table.callback then - hook.config.ref_table.callback() - end - hook.parent.parent.config.colour = hook_config.colour - local temp_colour = copy_table(hook_config.orig_colour) - hook_config.colour[1] = G.C.WHITE[1] - hook_config.colour[2] = G.C.WHITE[2] - hook_config.colour[3] = G.C.WHITE[3] - ease_colour(hook_config.colour, temp_colour) - G.CONTROLLER.text_input_hook = nil - elseif args.key == "LEFT" then --Move cursor position to the left - TRANSPOSE_TEXT_INPUT(-1) - elseif args.key == "RIGHT" then --Move cursor position to the right - TRANSPOSE_TEXT_INPUT(1) - elseif - hook_config.max_length > string.len(text.ref_table[text.ref_value]) - and (string.len(args.key) == 1) - and (string.find(corpus, args.key, 1, true) or hook.config.ref_table.extended_corpus) - then --check to make sure the key is in the valid corpus, add it to the string - MODIFY_TEXT_INPUT({ - letter = args.key, - text_table = text, - pos = text.current_position + 1, - }) - TRANSPOSE_TEXT_INPUT(1) - end - end - - --Machine Code rendering - codechars2 = { "!", "'", ",", ".", ":", ";", "i", "l", "|", "¡", "¦", "ì", "í", "ı" } - codechars4 = { " ", "(", ")", "[", "]", "j", "î", "ī", "ĭ" } - codechars5 = { '"', "*", "<", ">", "{", "}", "¨", "°", "º", "×" } - codechars6 = { - "$", - "%", - "+", - "-", - "/", - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "=", - "?", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "N", - "O", - "P", - "R", - "S", - "T", - "U", - "V", - "Y", - "Z", - "\\", - "^", - "_", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "k", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "y", - "z", - "~", - "¢", - "¥", - "§", - "¬", - "±", - "¿", - "À", - "Á", - "Â", - "Ã", - "Ä", - "Å", - "Ç", - "È", - "É", - "Ê", - "Ë", - "Ì", - "Í", - "Î", - "Ï", - "Ñ", - "Ò", - "Ó", - "Ô", - "Õ", - "Ö", - "Ù", - "Ú", - "Û", - "Ü", - "Ý", - "Þ", - "à", - "á", - "â", - "ã", - "ä", - "å", - "ç", - "è", - "é", - "ê", - "ë", - "ï", - "ñ", - "ò", - "ó", - "ô", - "õ", - "ö", - "÷", - "ù", - "ú", - "û", - "ü", - "ý", - "þ", - "ÿ", - "Ā", - "ā", - "Ă", - "ă", - "Ć", - "ć", - "Ē", - "ē", - "Ĕ", - "ĕ", - "Ğ", - "ğ", - "Ī", - "Ĭ", - "İ", - "ł", - "Ń", - "ń", - "Ō", - "ō", - "Ŏ", - "ŏ", - "Ś", - "ś", - "Ş", - "ş", - "Ū", - "ū", - "Ŭ", - "ŭ", - "Ÿ", - "Ź", - "ź", - "Ż", - "ż", - "Ǔ", - "ǔ", - "μ", - } - codechars7 = { "#", "Q", "X", "x", "£", "ß", "Ą", "ą", "Đ", "đ", "Ę", "ę" } - codechars8 = { "M", "W", "m", "w", "¤", "¶", "Ø", "ø", "Ł" } - codechars9 = { "&", "@", "©", "«", "®", "»" } - codechars10 = { "Æ", "æ", "Œ", "œ" } - function randomchar(arr) - return { - n = G.UIT.O, - config = { - object = DynaText({ - string = arr, - colours = { G.C.BLACK }, - pop_in_rate = 9999999, - silent = true, - random_element = true, - pop_delay = 0.1, - scale = 0.4, - min_cycle_time = 0, - }), - }, - } - end - - --Run - don't open packs in shop - local gfco = G.FUNCS.can_open - G.FUNCS.can_open = function(e) - if G.GAME.USING_RUN then - gfco(e) - -- e.config.colour = G.C.UI.BACKGROUND_INACTIVE - -- e.config.button = nil - else - gfco(e) - end - end - local gfts = G.FUNCS.toggle_shop - G.FUNCS.toggle_shop = function(e) - gfts(e) - if G.GAME.USING_RUN then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.5, - func = function() - G.GAME.USING_RUN = false - G.GAME.USING_CODE = false - return true - end, - })) - local hand_count = #G.cry_runarea.cards - for i = 1, hand_count do - draw_card(G.cry_runarea, G.hand, i * 100 / hand_count, "up", true) - end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.5, - func = function() - G.GAME.current_round.used_packs = {} - G.cry_runarea:remove() - G.cry_runarea = nil - G.STATE = G.STATES.SELECTING_HAND - return true - end, - })) - end - end - local gus = Game.update_shop - function Game:update_shop(dt) - gus(self, dt) - if G.GAME.USING_RUN and G.STATE_COMPLETE and G.GAME.RUN_STATE_COMPLETE < 60 then - G.shop.alignment.offset.y = -5.3 - G.GAME.RUN_STATE_COMPLETE = G.GAME.RUN_STATE_COMPLETE + 1 - end - end - local guis = G.UIDEF.shop - function G.UIDEF.shop() - local ret = guis() - if G.GAME.USING_RUN then - G.SHOP_SIGN:remove() - G.SHOP_SIGN = { - remove = function() - return true - end, - alignment = { offset = { y = 0 } }, - } - end - return ret - end - --Pointer Patches - local upd = Game.update - cry_pointer_dt = 0 - function Game:update(dt) - upd(self, dt) - cry_pointer_dt = cry_pointer_dt + dt - if G.P_CENTERS and G.P_CENTERS.c_cry_pointer and cry_pointer_dt > 0.5 then - cry_pointer_dt = 0 - local obj = G.P_CENTERS.c_cry_pointer - obj.pos.x = (obj.pos.x == 4) and 5 or 4 - end - if not G.OVERLAY_MENU and not G.CHOOSE_CARD and G.GAME.USING_POINTER then - G.CHOOSE_CARD = UIBox({ - definition = create_UIBox_pointer(card), - config = { - align = "cm", - offset = { x = 0, y = 10 }, - major = G.ROOM_ATTACH, - bond = "Weak", - instance_type = "POPUP", - }, - }) - G.CHOOSE_CARD.alignment.offset.y = 0 - G.ROOM.jiggle = G.ROOM.jiggle + 1 - G.CHOOSE_CARD:align_to_major() - end - end - local yc = G.FUNCS.your_collection - G.FUNCS.your_collection = function(e) - if G.CHOOSE_CARD then - G.CHOOSE_CARD:remove() - G.CHOOSE_CARD = nil - end - yc(e) - end - --HOOK:// patches - local cj = Card.calculate_joker - function Card:calculate_joker(context) - local ret, trig = cj(self, context) - if - (ret or trig) - and self.ability.cry_hooked - and not context.post_trigger - and not context.cry_hook - and not context.retrigger_joker_check - and not context.megatrigger_check - then - context.cry_hook = true - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].sort_id == self.hook_id then - card_eval_status_text( - G.jokers.cards[i], - "extra", - nil, - nil, - nil, - { message = localize("cry_hooked_ex"), colour = G.C.SET.Code } - ) - cj(G.jokers.cards[i], context) - --I tried a few things to get the color of messages to be green from the other joker, but they haven't worked :( - end - end - context.cry_hook = nil - end - return ret, trig - end - local evaluate_poker_hand_ref = evaluate_poker_hand - function evaluate_poker_hand(hand) - local results = evaluate_poker_hand_ref(hand) - if G.GAME.cry_exploit_override then - if not results[G.GAME.cry_exploit_override][1] then - for _, v in ipairs(G.handlist) do - if results[v][1] then - results[G.GAME.cry_exploit_override] = results[v] - break - end - end - end - end - return results - end - --Encoded Deck patches - local Backapply_to_runRef = Back.apply_to_run - function Back.apply_to_run(self) - Backapply_to_runRef(self) - if self.effect.config.cry_encoded 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 - if self.effect.config.cry_encoded_downside then - G.GAME.joker_rate = 0 - G.GAME.planet_rate = 0 - G.GAME.tarot_rate = 0 - G.GAME.code_rate = 1e100 - end - end - local Cardstart_dissolveRef = Card.start_dissolve - function Card:start_dissolve(dissolve_colours, silent, dissolve_time_fac, no_juice) - if G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].hook_id == self.sort_id then - G.jokers.cards[i].ability.cry_hooked = false - G.jokers.cards[i].hook_id = nil - end - end - end - Cardstart_dissolveRef(self,dissolve_colours, silent, dissolve_time_fac, no_juice) - end - end, - items = code_cards, -} diff --git a/Cryptid/Items/Decks.lua b/Cryptid/Items/Decks.lua deleted file mode 100644 index 2b538bc..0000000 --- a/Cryptid/Items/Decks.lua +++ /dev/null @@ -1,486 +0,0 @@ -local atlasdeck = { - object_type = "Atlas", - key = "atlasdeck", - path = "atlasdeck.png", - px = 71, - py = 95, -} -local atlasglowing = { - object_type = "Atlas", - key = "glowing", - path = "b_cry_glowing.png", - px = 71, - py = 95, -} -local very_fair = { - object_type = "Back", - name = "Very Fair Deck", - key = "very_fair", - config = { hands = -2, discards = -2, cry_no_vouchers = true }, - pos = { x = 4, y = 0 }, - order = 1, - --[[loc_vars = function(self, info_queue, center) - return {vars = {center.effect.config.hands, center.effect.config.discards}} - end,--]] - --this doesn't work, will fix later - atlas = "atlasdeck", -} - -very_fair_quip = {} - -local equilibrium = { - object_type = "Back", - name = "cry-Equilibrium", - key = "equilibrium", - order = 3, - config = { vouchers = { "v_overstock_norm", "v_overstock_plus" }, cry_equilibrium = true }, - pos = { x = 0, y = 1 }, - atlas = "atlasdeck", -} -local misprint = { - object_type = "Back", - name = "cry-Misprint", - key = "misprint", - order = 4, - config = { cry_misprint_min = 0.1, cry_misprint_max = 10 }, - pos = { x = 4, y = 2 }, - atlas = "atlasdeck", -} -local infinite = { - object_type = "Back", - name = "cry-Infinite", - key = "infinite", - order = 2, - config = { cry_highlight_limit = 1e20, hand_size = 1 }, - pos = { x = 3, y = 0 }, - atlas = "atlasdeck", -} -local conveyor = { - object_type = "Back", - name = "cry-Conveyor", - key = "conveyor", - order = 7, - config = { cry_conveyor = true }, - pos = { x = 1, y = 1 }, - atlas = "atlasdeck", -} -local CCD = { - object_type = "Back", - name = "cry-CCD", - key = "CCD", - order = 5, - config = { cry_ccd = true }, - pos = { x = 0, y = 0 }, - atlas = "atlasdeck", -} -local wormhole = { - object_type = "Back", - name = "cry-Wormhole", - key = "wormhole", - order = 6, - config = { cry_wormhole = true, cry_negative_rate = 20, joker_slot = -2 }, - pos = { x = 3, y = 4 }, - atlas = "atlasdeck", -} -local redeemed = { - object_type = "Back", - name = "cry-Redeemed", - key = "redeemed", - order = 8, - config = { cry_redeemed = true }, - pos = { x = 4, y = 4 }, - atlas = "atlasdeck", -} -local legendary = { - object_type = "Back", - name = "cry-Legendary", - key = "legendary", - config = { cry_legendary = true, cry_legendary_rate = 0.2 }, - pos = { x = 0, y = 6 }, - atlas = "atlasdeck", - order = 15, - 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 - 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 - end, -} -local critical = { - object_type = "Back", - name = "cry-Critical", - key = "critical", - order = 10, - config = { cry_crit_rate = 0.25, cry_crit_miss_rate = 0.125 }, - pos = { x = 4, y = 5 }, - atlas = "atlasdeck", - loc_vars = function(self, info_queue, center) - return { vars = { G.GAME.probabilities.normal or 1 } } - end, - trigger_effect = function(self, args) - if args.context == "final_scoring_step" then - local crit_poll = pseudorandom(pseudoseed("cry_critical")) - crit_poll = crit_poll / (G.GAME.probabilities.normal or 1) - if crit_poll < self.config.cry_crit_rate 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 crit_poll < self.config.cry_crit_rate + self.config.cry_crit_miss_rate 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 glowing = { - object_type = "Back", - name = "cry-Glowing", - key = "glowing", - config = { cry_glowing = true }, - pos = { x = 4, y = 2 }, - order = 9, - loc_vars = function(self, info_queue, center) - return { vars = { " " } } - end, - atlas = "glowing", - trigger_effect = function(self, args) - if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then - for i = 1, #G.jokers.cards do - if not Card.no(G.jokers.cards[i], "immutable", true) then - cry_with_deck_effects(G.jokers.cards[i], function(card) - cry_misprintize(card, { min = 1.25, max = 1.25 }, nil, true) - end) - end - end - end - end, -} -local beta = { - object_type = "Back", - name = "cry-Beta", - key = "beta", - config = { cry_beta = true }, - pos = { x = 5, y = 5 }, - order = 13, - atlas = "atlasdeck", -} -local bountiful = { - object_type = "Back", - name = "cry-Bountiful", - key = "bountiful", - config = { cry_forced_draw_amount = 5 }, - pos = { x = 2, y = 6 }, - order = 14, - atlas = "atlasdeck", -} -local beige = { - object_type = "Back", - name = "cry-Beige", - key = "beige", - config = { cry_common_value_quad = true }, - pos = { x = 1, y = 6 }, - order = 15, - atlas = "atlasdeck", -} -return { - name = "Misc. Decks", - init = function() - local Backapply_to_runRef = Back.apply_to_run - function Back.apply_to_run(self) - Backapply_to_runRef(self) - if self.effect.config.cry_no_vouchers then - G.GAME.modifiers.cry_no_vouchers = true - end - if self.effect.config.cry_equilibrium then - G.GAME.modifiers.cry_equilibrium = true - end - if self.effect.config.cry_conveyor then - G.GAME.modifiers.cry_conveyor = true - end - if self.effect.config.cry_misprint_min then - G.GAME.modifiers.cry_misprint_min = (G.GAME.modifiers.cry_misprint_min or 1) * self.effect.config.cry_misprint_min - G.GAME.modifiers.cry_misprint_max = (G.GAME.modifiers.cry_misprint_max or 1) * self.effect.config.cry_misprint_max - end - if self.effect.config.cry_highlight_limit then - G.GAME.modifiers.cry_highlight_limit = self.effect.config.cry_highlight_limit - end - if self.effect.config.cry_ccd then - G.GAME.modifiers.cry_ccd = true - end - if self.effect.config.cry_beta then - G.GAME.modifiers.cry_beta = true - G.GAME.pool_flags.beta_deck = true - end - if self.effect.config.cry_legendary 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 - if self.effect.config.cry_wormhole 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_wormhole") - card:add_to_deck() - card:start_materialize() - G.jokers:emplace(card) - return true - end - end, - })) - end - if self.effect.config.cry_negative_rate then - G.GAME.modifiers.cry_negative_rate = self.effect.config.cry_negative_rate - end - if self.effect.config.cry_redeemed then - G.GAME.modifiers.cry_redeemed = true - end - if self.effect.config.cry_forced_draw_amount then - G.GAME.modifiers.cry_forced_draw_amount = self.effect.config.cry_forced_draw_amount - end - if self.effect.config.cry_common_value_quad then - G.GAME.modifiers.cry_common_value_quad = true - end - end - --equilibrium deck patches - local gcp = get_current_pool - function get_current_pool(t, r, l, a, override_equilibrium_effect) - if - G.GAME.modifiers.cry_equilibrium - and not override_equilibrium_effect - and (a == "sho" or t == "Voucher" or t == "Booster") - then - if - t ~= "Enhanced" - and t ~= "Edition" - and t ~= "Back" - and t ~= "Tag" - and t ~= "Seal" - and t ~= "Stake" - then - if true then -- if not P_CRY_ITEMS then - -- we're regenerating the pool every time because of banned keys but it's fine tbh - P_CRY_ITEMS = {} - local valid_pools = { "Joker", "Consumeables", "Voucher", "Booster" } - for _, id in ipairs(valid_pools) do - for k, v in pairs(G.P_CENTER_POOLS[id]) do - if v.unlocked == true and not center_no(v, "doe", k) and not G.GAME.banned_keys[v.key] then - P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key - end - end - end - --[[ this doesn't seem to be working - for k, v in pairs(G.P_CARDS) do - if v.unlocked == true and not center_no(v, "doe", k) then - P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key - end - end - ]] - end - if #P_CRY_ITEMS <= 0 then P_CRY_ITEMS[#P_CRY_ITEMS + 1] = 'v_blank' end - return P_CRY_ITEMS, "cry_equilibrium" .. G.GAME.round_resets.ante - end - end - return gcp(t, r, l, a) - end - local gp = get_pack - function get_pack(k, t) - if G.GAME.modifiers.cry_equilibrium then - if not P_CRY_ITEMS then - P_CRY_ITEMS = {} - local valid_pools = { "Joker", "Consumeables", "Voucher", "Booster" } - for _, id in ipairs(valid_pools) do - for k, v in pairs(G.P_CENTER_POOLS[id]) do - if not center_no(v, "doe", k) then - P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key - end - end - end - for k, v in pairs(G.P_CARDS) do - if not center_no(v, "doe", k) then - P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key - end - end - end - return G.P_CENTERS[pseudorandom_element( - P_CRY_ITEMS, - pseudoseed("cry_equipackbrium" .. G.GAME.round_resets.ante) - )] - end - return gp(k, t) - end - --wormhole deck patches - SMODS.Edition:take_ownership("negative", { - get_weight = function(self) - return self.weight * (G.GAME.modifiers.cry_negative_rate or 1) - end, - }, true) - --redeemed deck patches - local cr = Card.redeem - function Card:redeem() - cr(self) - if G.GAME.modifiers.cry_redeemed then - if - #G.play.cards == 0 - and (not G.redeemed_vouchers_during_hand or #G.redeemed_vouchers_during_hand.cards == 0) - then - G.cry_redeemed_buffer = {} - end - for k, v in pairs(G.P_CENTER_POOLS["Voucher"]) do - if v.requires and not G.GAME.used_vouchers[v] then - for _, vv in pairs(v.requires) do - if vv == self.config.center.key then - --redeem extra voucher code based on Betmma's Vouchers - local area - if G.STATE == G.STATES.HAND_PLAYED then - if not G.redeemed_vouchers_during_hand then - G.redeemed_vouchers_during_hand = CardArea( - G.play.T.x, - G.play.T.y, - G.play.T.w, - G.play.T.h, - { type = "play", card_limit = 5 } - ) - end - area = G.redeemed_vouchers_during_hand - else - area = G.play - end - if not G.cry_redeemed_buffer[v.key] - and v.unlocked then - local card = create_card("Voucher", area, nil, nil, nil, nil, v.key) - G.cry_redeemed_buffer[v.key] = true - card:start_materialize() - area:emplace(card) - card.cost = 0 - card.shop_voucher = false - local current_round_voucher = G.GAME.current_round.voucher - card:redeem() - G.GAME.current_round.voucher = current_round_voucher - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0, - func = function() - card:start_dissolve() - return true - end, - })) - end - end - end - end - end - end - end - --glowing deck patches - local upd = Game.update - cry_glowing_dt = 0 - function Game:update(dt) - upd(self, dt) - cry_glowing_dt = cry_glowing_dt + dt - if G.P_CENTERS and G.P_CENTERS.b_cry_glowing and cry_glowing_dt > 0.1 then - cry_glowing_dt = 0 - local obj = G.P_CENTERS.b_cry_glowing - if obj.pos.x == 1 and obj.pos.y == 4 then - obj.pos.x = 0 - obj.pos.y = 0 - elseif obj.pos.x < 4 then - obj.pos.x = obj.pos.x + 1 - elseif obj.pos.y < 6 then - obj.pos.x = 0 - obj.pos.y = obj.pos.y + 1 - end - end - for k, v in pairs(G.I.CARD) do - if v.children.back and v.children.back.atlas.name == "cry_glowing" then - v.children.back:set_sprite_pos(G.P_CENTERS.b_cry_glowing.pos or G.P_CENTERS["b_red"].pos) - end - end - end - end, - items = { - atlasdeck, - very_fair, - equilibrium, - misprint, - infinite, - conveyor, - CCD, - wormhole, - redeemed, - legendary, - critical, - atlasglowing, - glowing, - beta, - bountiful, - beige, - }, -} diff --git a/Cryptid/Items/Enhanced.lua b/Cryptid/Items/Enhanced.lua deleted file mode 100644 index 858bf8d..0000000 --- a/Cryptid/Items/Enhanced.lua +++ /dev/null @@ -1,484 +0,0 @@ --- Enhanced has to be loaded near-last because of Jolly edition --- Not localized for now - will be rewritten later - -local atlasenhanced = { - object_type = "Atlas", - key = "atlasenhanced", - path = "atlasdeck.png", - px = 71, - py = 95, -} - -packs_to_add = { atlasenhanced } - -local typed_decks = { - -- {'mod_prefix', 'Type', 'Name of Deck', 'Name of Object', 'Object Key', 'Shader Name', 'Atlas', 'posX', 'posY', 'Flavour Text', 'Add Price Increase'}, - -- eg. 'cry_' for Edition, Leave nil to construct Usually matches Leave nil to use All three of these are used Small subtext underneath If true, editions - -- Cryptid cards Enhancement, automatically from name object key as name for custom deck backs main text affect the price of - -- Leave empty Seal, object name Used instead for Should be nil for Leave nil to use default cards in shop - -- for vanilla Sticker, banned boss blind non-shader objects fallback - -- Suit on Suit decks - -- For stickers ONLY, - -- prefix must be included - -- if you use one - -- - -- Vanilla - { "", "Enhancement", "The Hierophant's Deck", "Bonus", "bonus", nil, "atlasenhanced", 3, 3, "" }, - { "", "Enhancement", "The Empress' Deck", "Mult", "mult", nil, "atlasenhanced", 2, 3, "" }, - { "", "Enhancement", "The Lovers' Deck", "Wild", "wild", nil, "atlasenhanced", 5, 3, "" }, - { "", "Enhancement", "Deck of Justice", "Glass", "glass", nil, "atlasenhanced", 4, 3, "" }, - { "", "Enhancement", "The Chariot's Deck", "Steel", "steel", nil, nil, 6, 1, "" }, - { "", "Enhancement", "Stoner's Deck", "Stone", "stone", nil, nil, 5, 0, "" }, - { "", "Enhancement", "The Devil's Deck", "Gold", "gold", nil, nil, 6, 0, "" }, - { "", "Enhancement", "The Magician's Deck", "Lucky", "lucky", nil, nil, 4, 1, "" }, - - { "", "Edition", "Deck of Chips", "Foil", "foil", nil, nil, 0, 2, "" }, - { "", "Edition", "Deck of Mult", "Holographic", "holo", nil, nil, 0, 0, "" }, - { "", "Edition", "Deck of XMult", "Polychrome", "polychrome", nil, nil, 5, 2, "" }, - { "", "Edition", nil, "Negative", "negative", nil, nil, 5, 2, "" }, - - { "", "Seal", "Talisman Deck", "Gold", "Gold", nil, nil, 1, 2, "" }, - { "", "Seal", "Déja Vu Deck", "Red", "Red", nil, nil, 0, 0, "" }, - { "", "Seal", "Trance Deck", "Blue", "Blue", nil, "atlasenhanced", 2, 2, "" }, - { "", "Seal", "Medium Deck", "Purple", "Purple", nil, "atlasenhanced", 1, 2, "" }, - - { "", "Sticker", nil, "Eternal", "eternal", nil, "atlasenhanced", 5, 2, "" }, - { "", "Sticker", nil, "Perishable", "perishable", nil, "atlasenhanced", 0, 3, "" }, - { "", "Sticker", nil, "Rental", "rental", nil, "atlasenhanced", 1, 3, "" }, - { "", "Sticker", nil, "Pinned", "pinned", nil, "atlasenhanced", 0, 5, "" }, - - { "", "Suit", "Deck of the Stars", "Diamonds", "window", nil, "atlasenhanced", 2, 1, "" }, - { "", "Suit", "Deck of the Sun", "Hearts", "head", nil, "atlasenhanced", 3, 1, "" }, - { "", "Suit", "Deck of the World", "Spades", "goad", nil, "atlasenhanced", 4, 1, "" }, - { "", "Suit", "Deck of the Moon", "Clubs", "club", nil, "atlasenhanced", 5, 1, "" }, - - -- Cryptid - -- todo: work with mod config better here - - { "cry", "Enhancement", "The Eclipse's Deck", "Echo", "echo", nil, "atlasenhanced", 1, 5, "" }, - { "cry", "Enhancement", "The Seraph's Deck", "Light", "light", nil, "cry_misc", 0, 3, "" }, - - { "cry", "Edition", nil, "Fragile", "glass", nil, nil, 5, 2, "" }, - { "cry", "Edition", nil, "Golden", "gold", nil, nil, 5, 2, "" }, - { "cry", "Edition", nil, "Noisy", "noisy", nil, nil, 5, 2, "" }, - { "cry", "Edition", nil, "Astral", "astral", nil, nil, 5, 2, "" }, - { "cry", "Edition", nil, "Blurred", "blur", nil, nil, 0, 0, "" }, - { "cry", "Edition", nil, "Mosaic", "mosaic", nil, nil, 5, 2, "" }, - { "cry", "Edition", nil, "Oversaturated", "oversat", nil, nil, 5, 2, "" }, - { - "cry", - "Edition", - nil, - "Glitched", - "glitched", - nil, - nil, - 5, - 2, - "Wait, isn't this just Misprint Deck?", - }, - - { "cry", "Seal", "Typhoon Deck", "Azure", "azure", nil, nil, 0, 2, "" }, - - { "cry", "Sticker", nil, "Banana", "banana", nil, "atlasenhanced", 5, 4, "" }, -} - -if Cryptid.enabled["M Jokers"] then -- Crashes the game if M jokers are disabled if we don't add this separately - table.insert(typed_decks, 31, { "cry", "Edition", "Meck", "Jolly", "m", nil, nil, 5, 2, "" }) -end - -for i = 1, #typed_decks do - local deck = typed_decks[i] - - local shader = nil - if deck[6] then - shader = deck[1] .. "_" .. deck[6] - if deck.no_prefix then - shader = deck[6] - end - end - - local deck_name = deck[3] - if not deck_name then - deck_name = deck[4] .. " Deck" - end - - local deck_internal_name = "" - if deck[1] == "cry" then -- don't register eg. 'cry-cry-Typhoon Deck' - deck_internal_name = "cry-" .. deck_name - else -- eg. 'cry-jen-Blood Deck' - deck_internal_name = "cry-" .. deck[1] .. "-" .. deck_name - end - - local deck_key = "" - if deck[1] == "cry" then - deck_key = "cry" .. (deck[5] or deck[4]) .. "_deck" - else - deck_key = "cry" .. deck[1] .. "-" .. (deck[5] or deck[4]) .. "_deck" - end - - local object_key = "" - if deck[1] == "" or deck.no_prefix then -- vanilla doesn't have a prefix, don't add the _ - object_key = deck[5] or deck[4] - else - object_key = deck[1] .. "_" .. (deck[5] or deck[4]) - end - - local suit_key = "" - if deck[1] == "" or deck.no_prefix then - suit_key = deck[4] - else - suit_key = deck[1] .. "_" .. deck[4] - end - - if deck[2] == "Edition" then - local obj = { - object_type = "Back", - name = deck_internal_name, - key = deck_key, - config = { cry_force_edition = object_key, cry_force_edition_shader = shader }, - pos = { x = deck[8], y = deck[9] }, - loc_txt = { - name = deck_name, - text = { - "All cards are {C:dark_edition,T:" .. object_key .. "}" .. deck[4] .. " Cards{}", - "Cards cannot change editions", - "{s:0.8,C:inactive}" .. deck[10], - }, - }, - } - if deck[7] then - obj.atlas = deck[7] - if string.find(deck[7], "_") then - obj.prefix_config = { atlas = false } - end - end - if not deck[11] then - obj.config.cry_no_edition_price = true - end - packs_to_add[#packs_to_add + 1] = obj - elseif deck[2] == "Enhancement" then - local obj = { - object_type = "Back", - name = deck_internal_name, - key = deck_key, - config = { cry_force_enhancement = "m_" .. object_key }, - pos = { x = deck[8], y = deck[9] }, - loc_txt = { - name = deck_name, - text = { - "All {C:attention}playing cards{}", - "are {C:attention,T:m_" .. object_key .. "}" .. deck[4] .. " Cards{}", - "Cards cannot change enhancements", - "{s:0.8,C:inactive}" .. deck[10], - }, - }, - } - - if deck[7] then - obj.atlas = deck[7] - if string.find(deck[7], "_") then - obj.prefix_config = { atlas = false } - end - end - packs_to_add[#packs_to_add + 1] = obj - elseif deck[2] == "Seal" then - local obj = { - object_type = "Back", - name = deck_internal_name, - key = deck_key, - config = { cry_force_seal = object_key }, - pos = { x = deck[8], y = deck[9] }, - loc_txt = { - name = deck_name, - text = { - "All cards have a {C:dark_edition}" .. deck[4] .. " Seal{}", - "Cards cannot change seals", - "{s:0.8,C:inactive}" .. deck[10], - }, - }, - } - - if deck[7] then - obj.atlas = deck[7] - if string.find(deck[7], "_") then - obj.prefix_config = { atlas = false } - end - end - packs_to_add[#packs_to_add + 1] = obj - elseif deck[2] == "Sticker" then - local obj = { - object_type = "Back", - name = deck_internal_name, - key = deck_key, - config = { cry_force_sticker = deck[5] }, -- stickers DON'T use object_key for SOME reason - pos = { x = deck[8], y = deck[9] }, - loc_txt = { - name = deck_name, - text = { - "All cards are {C:attention}" .. deck[4] .. "{}", - "{s:0.8,C:inactive}" .. deck[10], - }, - }, - } - - if deck[7] then - obj.atlas = deck[7] - if string.find(deck[7], "_") then - obj.prefix_config = { atlas = false } - end - end - packs_to_add[#packs_to_add + 1] = obj - elseif deck[2] == "Suit" then - local obj = { - object_type = "Back", - name = deck_internal_name, - key = deck_key, - config = { cry_force_suit = suit_key, cry_boss_blocked = deck[5] and { "bl_" .. object_key } }, - pos = { x = deck[8], y = deck[9] }, - loc_txt = { - name = deck_name, - text = { - "All playing cards are {C:dark_edition}" .. deck[4] .. "{}", - "and cannot change suits", - deck[10] or "{s:0}", - deck[5] and "{C:attention}The " .. string.upper(string.sub(deck[5], 1, 1)) .. string.sub( - deck[5], - 2 - ) .. "{} cannot appear", -- UGLY hack - }, - }, - } - - if deck[7] then - obj.atlas = deck[7] - if string.find(deck[7], "_") then - obj.prefix_config = { atlas = false } - end - end - packs_to_add[#packs_to_add + 1] = obj - end -end - -return { - name = "Enhanced Decks", - init = function() - local Backapply_to_runRef = Back.apply_to_run - function Back.apply_to_run(self) - Backapply_to_runRef(self) - - if self.effect.config.cry_force_enhancement then - if self.effect.config.cry_force_enhancement ~= "random" then - G.GAME.modifiers.cry_force_enhancement = self.effect.config.cry_force_enhancement - end - G.E_MANAGER:add_event(Event({ - func = function() - for c = #G.playing_cards, 1, -1 do - if self.effect.config.cry_force_enhancement == "random" then - local enh = {} - for i = 1, #G.P_CENTER_POOLS.Enhanced do - enh[#enh + 1] = G.P_CENTER_POOLS.Enhanced[i] - end - enh[#enh + 1] = "CCD" - local random_enhancement = pseudorandom_element(enh, pseudoseed("cry_ant_enhancement")) - if random_enhancement.key and G.P_CENTERS[random_enhancement.key] then - G.playing_cards[c]:set_ability(G.P_CENTERS[random_enhancement.key]) - else - G.playing_cards[c]:set_ability(get_random_consumable("cry_ant_ccd", nil, true)) - end - else - G.playing_cards[c]:set_ability(G.P_CENTERS[self.effect.config.cry_force_enhancement]) - end - end - - return true - end, - })) - end - if self.effect.config.cry_force_edition then - if self.effect.config.cry_force_edition ~= "random" then - G.GAME.modifiers.cry_force_edition = self.effect.config.cry_force_edition - else - G.GAME.modifiers.cry_force_random_edition = true - end - for k, v in pairs(G.P_TAGS) do - if v.config and v.config.edition then - G.GAME.banned_keys[k] = true - end - end - G.E_MANAGER:add_event(Event({ - func = function() - for c = #G.playing_cards, 1, -1 do - local ed_table = {} - if self.effect.config.cry_force_edition == "random" then - local random_edition = - pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_ant_edition")) - while random_edition.key == "e_base" do - random_edition = - pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_ant_edition")) - end - ed_table[random_edition.key:sub(3)] = true - G.playing_cards[c]:set_edition(ed_table, true, true) - else - ed_table[self.effect.config.cry_force_edition] = true - G.playing_cards[c]:set_edition(ed_table, true, true) - end - end - - return true - end, - })) - end - if self.effect.config.cry_force_seal then - if self.effect.config.cry_force_seal ~= "random" then - G.GAME.modifiers.cry_force_seal = self.effect.config.cry_force_seal - end - G.E_MANAGER:add_event(Event({ - func = function() - for c = #G.playing_cards, 1, -1 do - if self.effect.config.cry_force_seal == "random" then - local random_seal = - pseudorandom_element(G.P_CENTER_POOLS.Seal, pseudoseed("cry_ant_seal")) - G.playing_cards[c]:set_seal(random_seal.key, true) - else - G.playing_cards[c]:set_seal(self.effect.config.cry_force_seal, true) - end - end - return true - end, - })) - end - if self.effect.config.cry_force_sticker then - G.GAME.modifiers.cry_force_sticker = self.effect.config.cry_force_sticker - G.E_MANAGER:add_event(Event({ - func = function() - for c = #G.playing_cards, 1, -1 do - G.playing_cards[c].config.center.eternal_compat = true - G.playing_cards[c].config.center.perishable_compat = true - if - SMODS.Stickers[self.effect.config.cry_force_sticker] - and SMODS.Stickers[self.effect.config.cry_force_sticker].apply - then - SMODS.Stickers[self.effect.config.cry_force_sticker]:apply(G.playing_cards[c], true) - else - G.playing_cards[c]["set_" .. self.effect.config.cry_force_sticker]( - G.playing_cards[c], - true - ) - end - end - return true - end, - })) - end - if self.effect.config.cry_force_suit then - G.GAME.modifiers.cry_force_suit = self.effect.config.cry_force_suit - G.E_MANAGER:add_event(Event({ - func = function() - for c = #G.playing_cards, 1, -1 do - G.playing_cards[c]:change_suit(self.effect.config.cry_force_suit) - end - return true - end, - })) - end - if self.effect.config.cry_boss_blocked then - for _, v in pairs(self.effect.config.cry_boss_blocked) do - G.GAME.bosses_used[v] = 1e308 - end - end - if self.effect.config.cry_no_edition_price then - G.GAME.modifiers.cry_no_edition_price = true - end - end - local sa = Card.set_ability - function Card:set_ability(center, y, z) - --adding immutable to cards because - -- A they are hardcoded and unaffected by misprintize but still have a description that changes because of it - -- B so they ignore misprintize in order to keep vanilla descripton accurate (ex hack shouldn't be able to trigger more than once) - -- C so Gemini doesn't say they are compatible when they are not - -- D Invisible Joker - - if center.name == "Fortune Teller" - or center.name == "Shoot the Moon" - or center.name == "Riff-raff" - or center.name == "Chaos the Clown" - or center.name == "Dusk" - or center.name == "Mime" - or center.name == "Hack" - or center.name == "Sock and Buskin" - or center.name == "Invisible Joker" - or center.name == "Swashbuckler" - or center.name == "Smeared Joker" - or center.name == "Certificate" - or center.name == "Mr. Bones" - or center.name == "Diet Cola" - or center.name == "Luchador" - or center.name == "Midas Mask" - or center.name == "Shortcut" - or center.name == "Seance" - or center.name == "Superposition" - or center.name == "Sixth Sense" - or center.name == "DNA" - or center.name == "Splash" - or center.name == "Supernova" - or center.name == "Pareidolia" - or center.name == "Raised Fist" - or center.name == "Marble Joker" - or center.name == "Four Fingers" - or center.name == "Joker Stencil" - or center.name == "Showman" - or center.name == "Blueprint" - or center.name == "Oops! All 6s" - or center.name == "Brainstorm" - or center.name == "Cartomancer" - or center.name == "Astronomer" - or center.name == "Burnt Joker" - or center.name == "Chicot" - or center.name == "Perkeo" - then - self.config.center.immutable = true - end - - if center and center.set == "Enhanced" then - return sa( - self, - (not self.no_forced_enhancement and G.GAME.modifiers.cry_force_enhancement) and G.P_CENTERS[G.GAME.modifiers.cry_force_enhancement] - or center, - y, - z - ) - else - return sa(self, center, y, z) - end - end - local se = Card.set_edition - function Card:set_edition(edition, y, z, force) - if not force then - return se(self, (not self.no_forced_edition and G.GAME.modifiers.cry_force_edition) and { [G.GAME.modifiers.cry_force_edition] = true } or edition, y, z) - end - return se(self, edition, y, z) - end - local ss = Card.set_seal - function Card:set_seal(seal, y, z) - return ss(self, not self.no_forced_seal and G.GAME.modifiers.cry_force_seal or seal, y, z) - end - local cs = Card.change_suit - function Card:change_suit(new_suit) - return cs(self, not self.no_forced_suit and G.GAME.modifiers.cry_force_suit or new_suit) - end - local sc = Card.set_cost - function Card:set_cost() - if self.edition and G.GAME.modifiers.cry_no_edition_price then - local m = cry_deep_copy(self.edition) - self.edition = nil - sc(self) - self.edition = m - else - sc(self) - end - end - end, - order = 1000000, - items = packs_to_add, -} diff --git a/Cryptid/Items/dummy_https.lua b/Cryptid/Items/dummy_https.lua deleted file mode 100644 index 6b513af..0000000 --- a/Cryptid/Items/dummy_https.lua +++ /dev/null @@ -1,3 +0,0 @@ --- dummy file to add https option to mod menu -return { name = "HTTPS Module" } --- someone should make a system for this, engineers are crying diff --git a/Cryptid/Items/dummy_timerblinds.lua b/Cryptid/Items/dummy_timerblinds.lua deleted file mode 100644 index 68ee4e3..0000000 --- a/Cryptid/Items/dummy_timerblinds.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Dummy file, only here to add the timer blinds toggle to the menu ---Jevonn was here [MMMMMMM] -return { name = "Timer Mechanics" } --- ^^^ M spotted diff --git a/Cryptid/README.md b/Cryptid/README.md index bf4c4ff..3d39599 100644 --- a/Cryptid/README.md +++ b/Cryptid/README.md @@ -1,7 +1,7 @@ # Cryptid An unbalanced Balatro mod. -Note: Cryptid requires [Steamodded **1.0.0-Alpha** (old calc)](https://github.com/Steamodded/smods/archive/refs/tags/old-calc.zip) and [Talisman](https://github.com/MathIsFun0/Talisman/releases/latest). +Note: Cryptid requires [Steamodded **1.0.0-Alpha**](https://github.com/Steamopollys/Steamodded/archive/refs/heads/main.zip) and [Talisman](https://github.com/MathIsFun0/Talisman/releases/latest). Cryptid currently adds: ![image](https://github.com/user-attachments/assets/0a03d6b2-d57f-4f92-9f42-a9ff201c5f2f) diff --git a/Cryptid/assets/1x/atlaseditiondeck.png b/Cryptid/assets/1x/atlaseditiondeck.png new file mode 100644 index 0000000..32d3cea Binary files /dev/null and b/Cryptid/assets/1x/atlaseditiondeck.png differ diff --git a/Cryptid/assets/1x/atlasepic.png b/Cryptid/assets/1x/atlasepic.png index 7fe18ae..fd9138b 100644 Binary files a/Cryptid/assets/1x/atlasepic.png and b/Cryptid/assets/1x/atlasepic.png differ diff --git a/Cryptid/assets/1x/atlasexotic.png b/Cryptid/assets/1x/atlasexotic.png index e97a2da..e96113a 100644 Binary files a/Cryptid/assets/1x/atlasexotic.png and b/Cryptid/assets/1x/atlasexotic.png differ diff --git a/Cryptid/assets/1x/atlasnotjokers.png b/Cryptid/assets/1x/atlasnotjokers.png index d5230c5..e143fbb 100644 Binary files a/Cryptid/assets/1x/atlasnotjokers.png and b/Cryptid/assets/1x/atlasnotjokers.png differ diff --git a/Cryptid/assets/1x/atlastwo.png b/Cryptid/assets/1x/atlastwo.png index 1ee7684..08d1bfc 100644 Binary files a/Cryptid/assets/1x/atlastwo.png and b/Cryptid/assets/1x/atlastwo.png differ diff --git a/Cryptid/assets/1x/atlasvoucher.png b/Cryptid/assets/1x/atlasvoucher.png index dafa9a6..2bcaca9 100644 Binary files a/Cryptid/assets/1x/atlasvoucher.png and b/Cryptid/assets/1x/atlasvoucher.png differ diff --git a/Cryptid/assets/1x/bl_cry.png b/Cryptid/assets/1x/bl_cry.png index 3fb6a3a..b52122f 100644 Binary files a/Cryptid/assets/1x/bl_cry.png and b/Cryptid/assets/1x/bl_cry.png differ diff --git a/Cryptid/assets/1x/cry_gameset.png b/Cryptid/assets/1x/cry_gameset.png new file mode 100644 index 0000000..07dcd3b Binary files /dev/null and b/Cryptid/assets/1x/cry_gameset.png differ diff --git a/Cryptid/assets/1x/old.png b/Cryptid/assets/1x/old.png new file mode 100644 index 0000000..24d438e Binary files /dev/null and b/Cryptid/assets/1x/old.png differ diff --git a/Cryptid/assets/1x/sticker_cry.png b/Cryptid/assets/1x/sticker_cry.png index 07c37c4..61d1191 100644 Binary files a/Cryptid/assets/1x/sticker_cry.png and b/Cryptid/assets/1x/sticker_cry.png differ diff --git a/Cryptid/assets/2x/atlaseditiondeck.png b/Cryptid/assets/2x/atlaseditiondeck.png new file mode 100644 index 0000000..b3adaf7 Binary files /dev/null and b/Cryptid/assets/2x/atlaseditiondeck.png differ diff --git a/Cryptid/assets/2x/atlasepic.png b/Cryptid/assets/2x/atlasepic.png index cbfc46c..878bffe 100644 Binary files a/Cryptid/assets/2x/atlasepic.png and b/Cryptid/assets/2x/atlasepic.png differ diff --git a/Cryptid/assets/2x/atlasexotic.png b/Cryptid/assets/2x/atlasexotic.png index 6a3be46..c1afaea 100644 Binary files a/Cryptid/assets/2x/atlasexotic.png and b/Cryptid/assets/2x/atlasexotic.png differ diff --git a/Cryptid/assets/2x/atlasnotjokers.png b/Cryptid/assets/2x/atlasnotjokers.png index 292b8a0..dae27ab 100644 Binary files a/Cryptid/assets/2x/atlasnotjokers.png and b/Cryptid/assets/2x/atlasnotjokers.png differ diff --git a/Cryptid/assets/2x/atlastwo.png b/Cryptid/assets/2x/atlastwo.png index 43430a3..7a7664e 100644 Binary files a/Cryptid/assets/2x/atlastwo.png and b/Cryptid/assets/2x/atlastwo.png differ diff --git a/Cryptid/assets/2x/atlasvoucher.png b/Cryptid/assets/2x/atlasvoucher.png index 5f99e8c..6d2d0d3 100644 Binary files a/Cryptid/assets/2x/atlasvoucher.png and b/Cryptid/assets/2x/atlasvoucher.png differ diff --git a/Cryptid/assets/2x/bl_cry.png b/Cryptid/assets/2x/bl_cry.png index d179068..db40845 100644 Binary files a/Cryptid/assets/2x/bl_cry.png and b/Cryptid/assets/2x/bl_cry.png differ diff --git a/Cryptid/assets/2x/cry_gameset.png b/Cryptid/assets/2x/cry_gameset.png new file mode 100644 index 0000000..cd0dd47 Binary files /dev/null and b/Cryptid/assets/2x/cry_gameset.png differ diff --git a/Cryptid/assets/2x/old.png b/Cryptid/assets/2x/old.png new file mode 100644 index 0000000..d47d990 Binary files /dev/null and b/Cryptid/assets/2x/old.png differ diff --git a/Cryptid/assets/2x/sticker_cry.png b/Cryptid/assets/2x/sticker_cry.png index 66429b7..50cc5c8 100644 Binary files a/Cryptid/assets/2x/sticker_cry.png and b/Cryptid/assets/2x/sticker_cry.png differ diff --git a/Cryptid/assets/shaders/astral.fs b/Cryptid/assets/shaders/astral.fs index 8229603..ea106c1 100644 --- a/Cryptid/assets/shaders/astral.fs +++ b/Cryptid/assets/shaders/astral.fs @@ -24,7 +24,7 @@ vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); @@ -110,7 +110,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float t = astral.y*2.221 + mod(time,1.); vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba; vec2 uv_scaled_centered = (floored_uv - 0.5) * 50.; - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/shaders/blur.fs b/Cryptid/assets/shaders/blur.fs index 551ab5b..2933211 100644 --- a/Cryptid/assets/shaders/blur.fs +++ b/Cryptid/assets/shaders/blur.fs @@ -35,12 +35,12 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba; float two_pi = 6.28318530718; - + vec2 radius = size/image_details.xy; vec4 original_pixel = Texel(texture, texture_coords); vec4 blurred_pixel = Texel(texture, texture_coords); - + // Blur calculations float d_step = two_pi / direction; float i_step = 1.0 / quality; @@ -50,8 +50,8 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords blurred_pixel += Texel( texture, texture_coords + vec2(cos(d), sin(d)) * radius * i); } } - - // Final processing + + // Final processing blurred_pixel /= quality * direction + 1.; vec4 final_pixel = vec4(blurred_pixel.rgb, original_pixel.a); @@ -62,7 +62,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float t = blur.y*2.221 + mod(time,1.); vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba; vec2 uv_scaled_centered = (floored_uv - 0.5) * 50.; - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); @@ -137,7 +137,7 @@ vec4 dissolve_mask(vec4 final_pixel, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/shaders/glass.fs b/Cryptid/assets/shaders/glass.fs index d7d3a3d..f931c53 100644 --- a/Cryptid/assets/shaders/glass.fs +++ b/Cryptid/assets/shaders/glass.fs @@ -62,7 +62,7 @@ vec4 dissolve_mask(vec4 final_pixel, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/shaders/glitched.fs b/Cryptid/assets/shaders/glitched.fs index a0de150..0564c1b 100644 --- a/Cryptid/assets/shaders/glitched.fs +++ b/Cryptid/assets/shaders/glitched.fs @@ -24,7 +24,7 @@ vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); @@ -108,19 +108,19 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords vec2 texCoordsR = texture_coords; vec2 texCoordsG = texture_coords; vec2 texCoordsB = texture_coords; - + float iTime = tan(2. * time); texCoordsR.x += (0.004 * rand(vec2(iTime, uv.y))) - 0.002 + (POLY_THROWAWAY * 0.0000001); texCoordsG.x += (0.007 * rand(vec2(iTime*2., uv.y*0.9))) - 0.0035 + (POLY_THROWAWAY * 0.0000001); texCoordsB.x += (0.010 * rand(vec2(iTime*3., uv.y*0.8))) - 0.005 + (POLY_THROWAWAY_2 * 0.0000001); - + vec4 texR = Texel(texture, texCoordsR); vec4 texG = Texel(texture, texCoordsG); vec4 texB = Texel(texture, texCoordsB); - + vec4 tex = vec4(texR.r, texG.g, texB.b, texR.a); - + return dissolve_mask(tex*colour, texture_coords, uv); } diff --git a/Cryptid/assets/shaders/gold.fs b/Cryptid/assets/shaders/gold.fs index cb3d4b2..ba79329 100644 --- a/Cryptid/assets/shaders/gold.fs +++ b/Cryptid/assets/shaders/gold.fs @@ -49,7 +49,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords } else { tex.a = 0.05; } - + float avg = (pixel.r + pixel.g + pixel.b) / 3.; pixel = vec4(gold_color.rgb * avg + tex.rgb * tex.a, pixel.a); @@ -67,7 +67,7 @@ vec4 dissolve_mask(vec4 final_pixel, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/shaders/m.fs b/Cryptid/assets/shaders/m.fs index 40199a7..0bc1e43 100644 --- a/Cryptid/assets/shaders/m.fs +++ b/Cryptid/assets/shaders/m.fs @@ -24,11 +24,11 @@ float sdParabola(vec2 pos, float wi, float he) float q = pos.x*ik*ik*0.25; float h = q*q - p*p*p; float r = sqrt(abs(h)); - float x = (h>0.0) ? + float x = (h>0.0) ? pow(q+r,1.0/3.0) - pow(abs(q-r),1.0/3.0)*sign(r-q) : 2.0*cos(atan(r/q)/3.0)*sqrt(p); x = min(x,wi); - return length(pos-vec2(x,he-x*x/ik)) * + return length(pos-vec2(x,he-x*x/ik)) * sign(ik*(pos.y-he)+pos.x*pos.x); } @@ -88,7 +88,7 @@ vec4 dissolve_mask(vec4 final_pixel, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/shaders/mosaic.fs b/Cryptid/assets/shaders/mosaic.fs index fd4cf65..dd3ea25 100644 --- a/Cryptid/assets/shaders/mosaic.fs +++ b/Cryptid/assets/shaders/mosaic.fs @@ -24,7 +24,7 @@ vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); @@ -103,7 +103,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float t = mosaic.y*7.221 + time; vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba; vec2 uv_scaled_centered = (floored_uv - 0.5) * 250.; - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); @@ -111,7 +111,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float field = (1.+ ( cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) + cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.; - + float res = (.5 + .5* cos( (mosaic.x) * 2.612 + ( field + -.5 ) *3.14)); number low = min(tex.b, min(tex.g, tex.r)); @@ -120,13 +120,13 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords number gridsize = 0.6; number fac = max(max(0., 7.*abs(cos(uv.x*gridsize*20.))-6.), max(0., 7.*cos(uv.y*gridsize*45.)-6.)); - + hsl.x = hsl.x + res + fac; - hsl.y = hsl.y*1.3; + hsl.y = hsl.y*1.3; hsl.z = hsl.z*0.6+0.4; tex =(1.-delta)*tex + delta*RGB(hsl)*vec4(0.6,0.5,1.4,tex.a); - + return dissolve_mask(tex*colour, texture_coords, uv); } diff --git a/Cryptid/assets/shaders/noisy.fs b/Cryptid/assets/shaders/noisy.fs index f7862f3..6ccfc37 100644 --- a/Cryptid/assets/shaders/noisy.fs +++ b/Cryptid/assets/shaders/noisy.fs @@ -31,7 +31,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float random = rand(uv); if (pixel.a > 0.) pixel.a += 0.1*sin(noisy.x) - 0.51; - + return dissolve_mask(vec4(pixel.rgb * random, pixel.a), texture_coords, uv); } @@ -46,7 +46,7 @@ vec4 dissolve_mask(vec4 final_pixel, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/shaders/oversat.fs b/Cryptid/assets/shaders/oversat.fs index a4fe9e3..090a388 100644 --- a/Cryptid/assets/shaders/oversat.fs +++ b/Cryptid/assets/shaders/oversat.fs @@ -24,7 +24,7 @@ vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv) float t = time * 10.0 + 2003.; vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a); vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a); - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); @@ -134,12 +134,12 @@ vec4 RGBtoHSV(vec4 rgb) vec4 HSVtoRGB(vec4 hsv) { vec4 rgb; - + float h = hsv.x * 6.0; float c = hsv.z * hsv.y; float x = c * (1.0 - abs(mod(h, 2.0) - 1.0)); float m = hsv.z - c; - + if (h < 1.0) { rgb = vec4(c, x, 0.0, hsv.a); } else if (h < 2.0) { @@ -153,19 +153,19 @@ vec4 HSVtoRGB(vec4 hsv) { } else { rgb = vec4(c, 0.0, x, hsv.a); } - + rgb.rgb += m; - + return rgb; } vec3 increaseContrast(vec3 color, float amount) { // Convert from [0,1] to [-0.5,0.5] range vec3 centered = color - 0.5; - + // Increase contrast centered *= amount; - + // Convert back to [0,1] range and clamp return clamp(centered + 0.5, 0.0, 1.0); } @@ -173,7 +173,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords { vec4 tex = Texel(texture, texture_coords); vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba; - + // Dummy, doesn't do anything but at least it makes the shader useable if (uv.x > uv.x * 2.){ uv = oversat; @@ -192,7 +192,7 @@ vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords float t = oversat.y*2.221 + time; vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba; vec2 uv_scaled_centered = (floored_uv - 0.5) * 50.; - + vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324)); vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532)); vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000)); diff --git a/Cryptid/assets/sounds/music_madness.ogg b/Cryptid/assets/sounds/music_madness.ogg new file mode 100644 index 0000000..c4ee2b4 Binary files /dev/null and b/Cryptid/assets/sounds/music_madness.ogg differ diff --git a/Cryptid/assets/sounds/music_mainline.ogg b/Cryptid/assets/sounds/music_mainline.ogg new file mode 100644 index 0000000..99657fd Binary files /dev/null and b/Cryptid/assets/sounds/music_mainline.ogg differ diff --git a/Cryptid/assets/sounds/music_modest.ogg b/Cryptid/assets/sounds/music_modest.ogg new file mode 100644 index 0000000..e6ee80d Binary files /dev/null and b/Cryptid/assets/sounds/music_modest.ogg differ diff --git a/Cryptid/config.lua b/Cryptid/config.lua index b252ad1..2972677 100644 --- a/Cryptid/config.lua +++ b/Cryptid/config.lua @@ -1,26 +1,11 @@ return { - ["More Stakes"] = true, - ["M Jokers"] = true, - ["Misc."] = true, - ["Tags"] = true, - ["Challenges"] = true, - ["Spectrals"] = true, - ["Vouchers"] = true, - ["Timer Mechanics"] = true, - ["Achievements"] = true, - ["Planets"] = true, - ["Cryptid"] = { ["jimball_music"] = true, ["code_music"] = true, ["exotic_music"] = true, ["big_music"] = true }, - ["Epic Jokers"] = true, - ["Antimatter Deck"] = true, - ["Misc. Jokers"] = true, - ["Code Cards"] = true, - ["Misc. Decks"] = true, - ["Exotic Jokers"] = true, - ["Enhanced Decks"] = true, - ["Blinds"] = true, - ["HTTPS Module"] = false, - ["JokerDisplay"] = true, - ["PokerHands"] = true, - ["Spooky"] = true, - ["Menu"] = true, + ["Cryptid"] = { + ["jimball_music"] = true, + ["code_music"] = true, + ["exotic_music"] = true, + ["big_music"] = true, + ["alt_bg_music"] = true, + }, + ["family_mode"] = false, + ["experimental"] = false, } diff --git a/Cryptid/https/thread.lua b/Cryptid/https/thread.lua index 10c767a..b1cd796 100644 --- a/Cryptid/https/thread.lua +++ b/Cryptid/https/thread.lua @@ -1,4 +1,4 @@ -require "love.system" +require("love.system") -- mac/linux support? @@ -10,9 +10,9 @@ package.cpath = script_dir .. "?.so;" .. package.cpath local index_os = love.system.getOS() -if index_os == 'OS X' then +if index_os == "OS X" then loc_https = require("macos-https") -elseif index_os == 'Linux' then +elseif index_os == "Linux" then loc_https = require("linux-https") else loc_https = require("https") @@ -24,11 +24,13 @@ while true do if (os.time() - last_update_time >= 60) or initial then initial = nil last_update_time = os.time() - local resp, txt = loc_https.request("https://discord.com/api/v10/invites/eUf9Ur6RyB?with_counts=true".."&v=" .. tostring(os.time())) + local resp, txt = loc_https.request( + "https://discord.com/api/v10/invites/eUf9Ur6RyB?with_counts=true" .. "&v=" .. tostring(os.time()) + ) if resp == 200 then - love.thread.getChannel('member_count'):push(txt) + love.thread.getChannel("member_count"):push(txt) else - love.thread.getChannel('member_error'):push("Failed to get count: "..resp) + love.thread.getChannel("member_error"):push("Failed to get count: " .. resp) end end -end \ No newline at end of file +end diff --git a/Cryptid/Items/Achievements.lua b/Cryptid/items/achievement.lua similarity index 99% rename from Cryptid/Items/Achievements.lua rename to Cryptid/items/achievement.lua index 03b68af..c0059ae 100644 --- a/Cryptid/Items/Achievements.lua +++ b/Cryptid/items/achievement.lua @@ -447,4 +447,4 @@ local achievement_objects = { traffic_jam, perfectly_balanced, } -return { name = "Achievements", init = function() end, items = achievement_objects } +return { name = "Achievements", items = achievement_objects } diff --git a/Cryptid/Items/Blinds.lua b/Cryptid/items/blind.lua similarity index 70% rename from Cryptid/Items/Blinds.lua rename to Cryptid/items/blind.lua index 6567bc6..53d59d8 100644 --- a/Cryptid/Items/Blinds.lua +++ b/Cryptid/items/blind.lua @@ -1,70 +1,10 @@ ---extra blind functions for use by bosses -function Blind:cry_ante_base_mod(dt) - if not self.disabled then - local obj = self.config.blind - if obj.cry_ante_base_mod and type(obj.cry_ante_base_mod) == "function" then - return obj:cry_ante_base_mod(dt) - end - end - return 0 -end -function Blind:cry_round_base_mod(dt) - if not self.disabled then - local obj = self.config.blind - if obj.cry_round_base_mod and type(obj.cry_round_base_mod) == "function" then - return obj:cry_round_base_mod(dt) - end - end - return 1 -end -function Blind:cry_cap_score(score) - if not self.disabled then - local obj = self.config.blind - if obj.cry_cap_score and type(obj.cry_cap_score) == "function" then - return obj:cry_cap_score(score) - end - end - return score -end -function Blind:cry_after_play() - if not self.disabled then - local obj = self.config.blind - if obj.cry_after_play and type(obj.cry_after_play) == "function" then - return obj:cry_after_play() - end - end -end -function Blind:cry_before_play() - if not self.disabled then - local obj = self.config.blind - if obj.cry_before_play and type(obj.cry_before_play) == "function" then - return obj:cry_before_play() - end - end -end -function Blind:cry_calc_ante_gain() - if G.GAME.modifiers.cry_spooky then --here is the best place to check when spooky should apply - local card - if pseudorandom(pseudoseed("cry_spooky_curse")) < G.GAME.modifiers.cry_curse_rate then - card = create_card("Joker", G.jokers, nil, "cry_cursed", nil, nil, nil, "cry_spooky") - else - card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_spooky") - end - card:add_to_deck() - card:start_materialize() - G.jokers:emplace(card) - end - if not self.disabled then - local obj = self.config.blind - if obj.cry_calc_ante_gain and type(obj.cry_calc_ante_gain) == "function" then - return obj:cry_calc_ante_gain() - end - end - return 1 -end - local oldox = { object_type = "Blind", + dependencies = { + items = { + "set_cry_blind", + }, + }, name = "cry-oldox", key = "oldox", pos = { x = 0, y = 0 }, @@ -85,6 +25,11 @@ local oldox = { } local oldhouse = { object_type = "Blind", + dependencies = { + items = { + "set_cry_blind", + }, + }, name = "cry-oldhouse", key = "oldhouse", pos = { x = 0, y = 2 }, @@ -107,6 +52,11 @@ local oldhouse = { end, } local oldarm = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldarm", key = "oldarm", @@ -130,6 +80,11 @@ local oldarm = { end, } local oldfish = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldfish", key = "oldfish", @@ -150,6 +105,11 @@ local oldfish = { end, } local oldmanacle = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldmanacle", key = "oldmanacle", @@ -170,6 +130,11 @@ local oldmanacle = { end, } local oldserpent = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldserpent", key = "oldserpent", @@ -182,14 +147,19 @@ local oldserpent = { order = 9, boss_colour = HEX("4f6367"), modify_hand = function(self, cards, poker_hands, text, mult, hand_chips) - if to_big(G.GAME.hands[text].level) > to_big(1) then + if G.GAME.hands[text].level > to_big(1) then G.GAME.blind.triggered = true - return math.floor( mult / to_big(G.GAME.hands[text].level) ), hand_chips, true + return math.floor(mult / G.GAME.hands[text].level), hand_chips, true end return mult, hand_chips, false end, } local oldpillar = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldpillar", key = "oldpillar", @@ -213,6 +183,11 @@ local oldpillar = { end, } local oldflint = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldflint", key = "oldflint", @@ -236,6 +211,11 @@ local oldflint = { end, } local oldmark = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-oldmark", key = "oldmark", @@ -259,6 +239,11 @@ local oldmark = { end, } local tax = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-Tax", key = "tax", @@ -271,11 +256,11 @@ local tax = { order = 2, boss_colour = HEX("40ff40"), loc_vars = function(self, info_queue, card) - return { vars = { 0.4 * get_blind_amount(G.GAME.round_resets.ante)*2*G.GAME.starting_params.ante_scaling } } -- no bignum? + return { vars = { 0.4 * get_blind_amount(G.GAME.round_resets.ante) * 2 * G.GAME.starting_params.ante_scaling } } -- no bignum? + end, + collection_loc_vars = function(self) + return { vars = { localize("cry_tax_placeholder") } } end, - collection_loc_vars = function(self) - return { vars = { localize("cry_tax_placeholder") }} - end, cry_cap_score = function(self, score) return math.floor(math.min(0.4 * G.GAME.blind.chips, score) + 0.5) end, @@ -284,6 +269,11 @@ local tax = { end, } local box = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-box", key = "box", @@ -303,6 +293,12 @@ local box = { end, } local clock = { + dependencies = { + items = { + "set_cry_blind", + "set_cry_timer", + }, + }, object_type = "Blind", name = "cry-Clock", key = "clock", @@ -328,10 +324,19 @@ local clock = { G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) end, cry_ante_base_mod = function(self, dt) - return 0.1 * dt / 3 + if G.SETTINGS.paused then + return 0 + else + return 0.1 * dt / 3 + end end, } local trick = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-Trick", key = "trick", @@ -350,20 +355,24 @@ local trick = { v:flip() end end - --[[if #G.hand.cards > 1 then - G.E_MANAGER:add_event(Event({ trigger = 'after', delay = 0.2, func = function() - G.E_MANAGER:add_event(Event({ func = function() G.hand:shuffle('cry_trick'); play_sound('cardSlide1', 0.85);return true end })) + --[[if #G.hand.cards > 1 then + G.E_MANAGER:add_event(Event({ trigger = 'after', delay = 0.2, func = function() + G.E_MANAGER:add_event(Event({ func = function() G.hand:shuffle('cry_trick'); play_sound('cardSlide1', 0.85);return true end })) delay(0.15) - G.E_MANAGER:add_event(Event({ func = function() G.hand:shuffle('cry_trick'); play_sound('cardSlide1', 1.15);return true end })) + G.E_MANAGER:add_event(Event({ func = function() G.hand:shuffle('cry_trick'); play_sound('cardSlide1', 1.15);return true end })) delay(0.15) - G.E_MANAGER:add_event(Event({ func = function() G.hand:shuffle('cry_trick'); play_sound('cardSlide1', 1);return true end })) + G.E_MANAGER:add_event(Event({ func = function() G.hand:shuffle('cry_trick'); play_sound('cardSlide1', 1);return true end })) delay(0.5) - return true end })) + return true end })) end--]] end, } - local joke = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-Joke", key = "joke", @@ -376,11 +385,18 @@ local joke = { order = 15, boss_colour = HEX("00ffaa"), loc_vars = function(self) - return { vars = { G.GAME.win_ante or 8, (G.GAME.win_ante and G.GAME.round_resets.ante) and math.floor(G.GAME.round_resets.ante + (G.GAME.win_ante - G.GAME.round_resets.ante % G.GAME.win_ante)) or 8 } } + return { + vars = { + G.GAME.win_ante or 8, + (G.GAME.win_ante and G.GAME.round_resets.ante) and math.floor( + G.GAME.round_resets.ante + (G.GAME.win_ante - G.GAME.round_resets.ante % G.GAME.win_ante) + ) or 8, + }, + } + end, + collection_loc_vars = function(self) + return { vars = { "8", localize("cry_joke_placeholder") } } end, - collection_loc_vars = function(self) - return { vars = { '8', localize('cry_joke_placeholder') }} - end, cry_calc_ante_gain = function(self) if to_big(G.GAME.chips) >= to_big(G.GAME.blind.chips) * 2 then if G.GAME.round_resets.ante == 1 then @@ -392,6 +408,11 @@ local joke = { end, } local hammer = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-hammer", key = "hammer", @@ -422,6 +443,11 @@ local hammer = { end, } local magic = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-magic", key = "magic", @@ -452,6 +478,11 @@ local magic = { end, } local windmill = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-windmill", key = "windmill", @@ -471,6 +502,11 @@ local windmill = { end, } local striker = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-striker", key = "striker", @@ -490,6 +526,11 @@ local striker = { end, } local shackle = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-shackle", key = "shackle", @@ -502,25 +543,24 @@ local shackle = { order = 18, boss_colour = HEX("010466"), in_pool = function() - if G.GAME.modifiers.cry_force_edition and G.GAME.modifiers.cry_force_edition == "negative" then return false end - if not G.jokers then + if G.GAME.modifiers.cry_force_edition and G.GAME.modifiers.cry_force_edition == "negative" then return false end - for i, j in pairs(G.jokers.cards) do - if j.edition and j.edition.negative == true then - return true - end - end - return false + return #advanced_find_joker(nil, nil, "e_negative", nil, true) ~= 0 end, recalc_debuff = function(self, card, from_blind) - if (card.area == G.jokers) and not G.GAME.blind.disabled and card.edition and card.edition.negative == true then + if (card.area == G.jokers) and not G.GAME.blind.disabled and safe_get(card, "edition", "negative") == true then return true end return false end, } local pin = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-pin", key = "pin", @@ -532,49 +572,38 @@ local pin = { atlas = "blinds", order = 17, boss_colour = HEX("452703"), + --Todo: whitelist candy jokers in_pool = function() - if not G.jokers then + if not G.jokers or not G.jokers.cards then return false end - for i, j in pairs(G.jokers.cards) do - if - not ((j.config.center.rarity == 1) or (j.config.center.rarity == 2) or (j.config.center.rarity == 3) or (j.config.center.rarity == 5)) - then - return true - end - end - return false + return #advanced_find_joker(nil, { 1, 2, 3 }, nil, nil, true) < #G.jokers.cards end, recalc_debuff = function(self, card, from_blind) if (card.area == G.jokers) and not G.GAME.blind.disabled - and (card.config.center.rarity ~= 3 and card.config.center.rarity ~= 2 and card.config.center.rarity ~= 1 and card.config.center.rarity ~= 5) + and ( + card.config.center.rarity ~= 3 + and card.config.center.rarity ~= 2 + and card.config.center.rarity ~= 1 + and card.config.center.rarity ~= 5 + ) then return true end return false end, } - --It seems Showdown blind order is seperate from normal blind collection order? convenient for me at least --Nvm they changed it - -local pinkbow = { --TODO: Add effect for this later. NOTE TO SELF: DO NOT FORGET!!! - object_type = "Blind", - name = "cry-pinkbow", - key = "pinkbow", - pos = { x = 0, y = 11 }, - dollars = 8, - boss = { - min = 3, - max = 10, - showdown = true, - }, - atlas = "blinds", - boss_colour = HEX("ff00cc"), -} local lavender_loop = { + dependencies = { + items = { + "set_cry_blind", + "set_cry_timer", + }, + }, object_type = "Blind", name = "cry-Lavender Loop", key = "lavender_loop", @@ -604,14 +633,23 @@ local lavender_loop = { and G.GAME.cry_ach_conditions.patience_virtue_earnable ~= true then G.GAME.cry_ach_conditions.patience_virtue_timer = G.GAME.cry_ach_conditions.patience_virtue_timer - - dt * (G.GAME.modifiers.cry_rush_hour_iii and 0.5 or 1) + - dt * (G.GAME.modifiers.cry_rush_hour_iii and 0.5 or 1) * (G.SETTINGS.paused and 0 or 1) elseif G.GAME.current_round.hands_played == 0 then G.GAME.cry_ach_conditions.patience_virtue_earnable = true end - return 1.25 ^ (dt / 1.5) + if G.SETTINGS.paused then + return 1 + else + return 1.25 ^ (dt / 1.5) + end end, } local tornado = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-tornado", key = "tornado", @@ -627,26 +665,18 @@ local tornado = { order = 94, boss_colour = HEX("3dd9ca"), loc_vars = function(self) - return { vars = { "" .. ((G.GAME and G.GAME.probabilities.normal or 1) * 2), 3 } } + return { vars = { "" .. ((safe_get(G.GAME, "probabilities", "normal") or 1) * 2), 3 } } end, set_blind = function(self, reset, silent) if not reset then - G.GAME.blind.tornado_guarantee = pseudorandom(pseudoseed("tornado"),1,G.GAME.round_resets.hands) + G.GAME.blind.tornado_guarantee = pseudorandom(pseudoseed("tornado"), 1, G.GAME.round_resets.hands) end end, in_pool = function() - if not G.jokers then - return true - end - for i, j in pairs(G.jokers.cards) do - if j.ability.name == "Oops! All 6s" and j.ability.eternal == true then - return false - end - end - return true + return #advanced_find_joker("Oops! All 6s", nil, nil, { "eternal" }, nil) == 0 end, collection_loc_vars = function(self) - return { vars = { "" .. ((G.GAME and G.GAME.probabilities.normal or 1) * 2), 3 } } + return { vars = { "" .. ((safe_get(G.GAME, "probabilities", "normal") or 1) * 2), 3 } } end, debuff_hand = function(self, cards, hand, handname, check) if @@ -655,7 +685,10 @@ local tornado = { and not G.GAME.blind.disabled then --check for guarantee - if G.GAME.probabilities.normal <= 1 and G.GAME.current_round.hands_left+1 == G.GAME.blind.tornado_guarantee then + if + G.GAME.probabilities.normal <= 1 + and G.GAME.current_round.hands_left + 1 == G.GAME.blind.tornado_guarantee + then return false end @@ -667,6 +700,11 @@ local tornado = { } --todo: disable get_local_debuff_text for this local vermillion_virus = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-Vermillion Virus", key = "vermillion_virus", @@ -685,7 +723,14 @@ local vermillion_virus = { local idx = pseudorandom(pseudoseed("cry_vermillion_virus"), 1, #G.jokers.cards) if G.jokers.cards[idx] then if G.jokers.cards[idx].config.center.immune_to_vermillion then - card_eval_status_text(G.jokers.cards[idx], 'extra', nil, nil, nil, {message = localize('k_nope_ex'), colour = G.C.JOKER_GREY}) + card_eval_status_text( + G.jokers.cards[idx], + "extra", + nil, + nil, + nil, + { message = localize("k_nope_ex"), colour = G.C.JOKER_GREY } + ) else _card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "cry_vermillion_virus_gen") G.jokers.cards[idx]:remove_from_deck() @@ -700,8 +745,12 @@ local vermillion_virus = { end end, } - local sapphire_stamp = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-Sapphire Stamp", key = "sapphire_stamp", @@ -735,8 +784,12 @@ local sapphire_stamp = { end end, } - local obsidian_orb = { + dependencies = { + items = { + "set_cry_blind", + }, + }, object_type = "Blind", name = "cry-Obsidian Orb", key = "obsidian_orb", @@ -1023,7 +1076,7 @@ local obsidian_orb = { end if s.name == "The Arm" then G.GAME.blind.triggered = false - if G.GAME.hands[handname].level > 1 then + if to_big(G.GAME.hands[handname].level) > to_big(1) then G.GAME.blind.triggered = true if not check then level_up_hand(G.GAME.blind.children.animatedSprite, handname, nil, -1) @@ -1227,28 +1280,40 @@ local obsidian_orb = { return disp_text end, } - -local blind_sprites = { - object_type = "Atlas", - key = "blinds", - atlas_table = "ANIMATION_ATLAS", - path = "bl_cry.png", - px = 34, - py = 34, - frames = 21, +local trophy = { + dependencies = { + items = { + "set_cry_blind", + }, + }, + mult = 1, + object_type = "Blind", + name = "cry-Lemon Trophy", + key = "trophy", + pos = { x = 0, y = 17 }, + dollars = 8, + boss = { + min = 3, + max = 10, + showdown = true, + }, + atlas = "blinds", + order = 95, + boss_colour = HEX("bbdb44"), + set_blind = function(self, reset, silent) + G.GAME.trophymod = true + end, + defeat = function(self, silent) + if G.GAME.trophymod then + G.GAME.trophymod = nil + end + end, + disable = function(self, silent) + if G.GAME.trophymod then + G.GAME.trophymod = nil + end + end, } -local nostalgia_sprites = { - object_type = "Atlas", - key = "nostalgia", - atlas_table = "ANIMATION_ATLAS", - path = "bl_nostalgia.png", - px = 34, - py = 34, - frames = 21, -} - ---this list contains all of the blinds to be registered, if Blinds are enabled-- ---to disable a blind, comment it out or remove it from this list-- local items_togo = { oldox, oldhouse, @@ -1273,213 +1338,8 @@ local items_togo = { tornado, sapphire_stamp, obsidian_orb, - blind_sprites, - nostalgia_sprites, -} - -if Cryptid.enabled["Timer Mechanics"] then - table.insert(items_togo, clock) - table.insert(items_togo, lavender_loop) -end - ---Fix an issue with adding bosses mid-run -local gnb = get_new_boss -function get_new_boss() - for k, v in pairs(G.P_BLINDS) do - if not G.GAME.bosses_used[k] then - G.GAME.bosses_used[k] = 0 - end - end - local bl = gnb() - if G.GAME.modifiers.cry_beta and Cryptid.enabled["Blinds"] then - local bl_key = string.sub(bl,4) - local nostalgicblinds = { - arm = true, - fish = true, - flint = true, - house = true, - manacle = true, - mark = true, - ox = true, - pillar = true, - serpent = true - } - if nostalgicblinds[bl_key] then - return "bl_cry_old"..bl_key - end - end - return bl -end - -return { - name = "Blinds", - init = function() - --Clock Patches - local upd = Game.update - function Game:update(dt) - upd(self, dt) - local choices = { "Small", "Big", "Boss" } - G.GAME.CRY_BLINDS = G.GAME.CRY_BLINDS or {} - for _, c in pairs(choices) do - if - G.GAME - and G.GAME.round_resets - and G.GAME.round_resets.blind_choices - and G.GAME.round_resets.blind_choices[c] - and G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].cry_ante_base_mod - then - if - G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult ~= 0 - and G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult_ante ~= G.GAME.round_resets.ante - then - if G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].name == "cry-Obsidian Orb" then - for i = 1, #G.GAME.defeated_blinds do - G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult = G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult - * G.P_BLINDS[G.GAME.defeated_blinds[i]] - / 2 - end - else - G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult = 0 - end - G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult_ante = G.GAME.round_resets.ante - end - if - G.GAME.round_resets.blind_states[c] ~= "Current" - and G.GAME.round_resets.blind_states[c] ~= "Defeated" - then - G.GAME.CRY_BLINDS[c] = ( - G.GAME.CRY_BLINDS[c] or G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult - ) - + ( - G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].cry_ante_base_mod - and G.P_BLINDS[G.GAME.round_resets.blind_choices[c]]:cry_ante_base_mod( - dt * (G.GAME.modifiers.cry_rush_hour_iii and 2 or 1) - ) - or 0 - ) - --Update UI - --todo: in blinds screen, too - if G.blind_select_opts then - local blind_UI = - G.blind_select_opts[string.lower(c)].definition.nodes[1].nodes[1].nodes[1].nodes[1] - local chip_text_node = blind_UI.nodes[1].nodes[3].nodes[1].nodes[2].nodes[2].nodes[3] - if chip_text_node then - chip_text_node.config.text = number_format( - get_blind_amount(G.GAME.round_resets.blind_ante) - * G.GAME.starting_params.ante_scaling - * G.GAME.CRY_BLINDS[c] - ) - chip_text_node.config.scale = score_number_scale( - 0.9, - get_blind_amount(G.GAME.round_resets.blind_ante) - * G.GAME.starting_params.ante_scaling - * G.GAME.CRY_BLINDS[c] - ) - end - G.blind_select_opts[string.lower(c)]:recalculate() - end - elseif - G.GAME.round_resets.blind_states[c] ~= "Defeated" - and not G.GAME.blind.disabled - and to_big(G.GAME.chips) < to_big(G.GAME.blind.chips) - then - G.GAME.blind.chips = G.GAME.blind.chips - + G.GAME.blind:cry_ante_base_mod(dt * (G.GAME.modifiers.cry_rush_hour_iii and 2 or 1)) - * get_blind_amount(G.GAME.round_resets.ante) - * G.GAME.starting_params.ante_scaling - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - end - end - if - G.GAME.round_resets.blind_states[c] == "Current" - and G.GAME - and G.GAME.blind - and not G.GAME.blind.disabled - and to_big(G.GAME.chips) < to_big(G.GAME.blind.chips) - then - G.GAME.blind.chips = G.GAME.blind.chips - * G.GAME.blind:cry_round_base_mod(dt * (G.GAME.modifiers.cry_rush_hour_iii and 2 or 1)) - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - end - end - end - --Trick Patches - local gfep = G.FUNCS.evaluate_play - function G.FUNCS.evaluate_play(e) - gfep(e) - G.GAME.blind:cry_after_play() - end - --Sapphire Stamp Patches - local pcfh = G.FUNCS.play_cards_from_highlighted - function G.FUNCS.play_cards_from_highlighted(e) - G.GAME.blind:cry_before_play() - pcfh(e) - end - --Obsidian Orb Patches - local dft = Blind.defeat - function Blind:defeat(s) - dft(self, s) - local obj = self.config.blind - if obj.boss and (obj.boss.no_orb or obj.boss.epic or obj.loc_vars) then - return - end - if - self.name ~= "cry-Obsidian Orb" - and self.name ~= "The Sink" - and (self.name ~= "cry-oldarm" or not G.GAME.defeated_blinds["bl_psychic"]) - and (self.name ~= "The Psychic" or not G.GAME.defeated_blinds["bl_cry_oldarm"]) - and (self.name ~= "The Eye" or not G.GAME.defeated_blinds["bl_mouth"]) - and (self.name ~= "The Mouth" or not G.GAME.defeated_blinds["bl_eye"]) - and (self.name ~= "cry-Lavender Loop" or not G.GAME.defeated_blinds["bl_cry_tax"]) - and (self.name ~= "cry-Tax" or not G.GAME.defeated_blinds["bl_cry_lavender_loop"]) - and (self.name ~= "The Needle" or not G.GAME.defeated_blinds["bl_cry_tax"]) - and (self.name ~= "cry-Tax" or not G.GAME.defeated_blinds["bl_needle"]) - then - G.GAME.defeated_blinds[self.config.blind.key] = true - end - end - local sr = Game.start_run - function Game:start_run(args) - sr(self, args) - if G.P_BLINDS.bl_cry_clock then - G.P_BLINDS.bl_cry_clock.mult = 0 - end - if not G.GAME.defeated_blinds then - G.GAME.defeated_blinds = {} - end - end - --patch for multiple Clocks to tick separately and load separately - local bsb = Blind.set_blind - function Blind:set_blind(blind, y, z) - local c = "Boss" - if string.sub(G.GAME.subhash or "", -1) == "S" then - c = "Small" - end - if string.sub(G.GAME.subhash or "", -1) == "B" then - c = "Big" - end - if - G.GAME.CRY_BLINDS - and G.GAME.CRY_BLINDS[c] - and not y - and blind - and blind.mult - and blind.cry_ante_base_mod - then - blind.mult = G.GAME.CRY_BLINDS[c] - end - bsb(self, blind, y, z) - end - local rb = reset_blinds - function reset_blinds() - if G.GAME.round_resets.blind_states.Boss == "Defeated" then - G.GAME.CRY_BLINDS = {} - if G.P_BLINDS.bl_cry_clock then - G.P_BLINDS.bl_cry_clock.mult = 0 - end - end - rb() - end - end, - items = items_togo, + clock, + lavender_loop, + trophy, } +return { name = "Blinds", items = items_togo } diff --git a/Cryptid/Items/Challenges.lua b/Cryptid/items/challenge.lua similarity index 85% rename from Cryptid/Items/Challenges.lua rename to Cryptid/items/challenge.lua index 5e3a40e..a4e05a6 100644 --- a/Cryptid/Items/Challenges.lua +++ b/Cryptid/items/challenge.lua @@ -53,7 +53,7 @@ local ballin = { }, }, jokers = { - { id = "j_cry_jimball", eternal = true }, + { id = "j_cry_jimball", stickers = { "cry_absolute" } }, }, deck = { type = "Challenge Deck", @@ -70,6 +70,7 @@ local ballin = { { id = "c_justice" }, { id = "c_devil" }, { id = "c_tower" }, + { id = "c_cry_seraph" }, { id = "c_familiar" }, { id = "c_grim" }, { id = "c_incantation" }, @@ -140,7 +141,7 @@ local rush_hour_iii = { modifiers = {}, }, jokers = { - { id = "j_hit_the_road", eternal = true, edition = "negative" }, + { id = "j_hit_the_road", stickers = { "cry_absolute" }, edition = "negative" }, }, deck = { type = "Challenge Deck", @@ -227,7 +228,7 @@ local boss_rush = { modifiers = {}, }, jokers = { - { id = "j_cry_apjoker", eternal = true }, + { id = "j_cry_apjoker", stickers = { "cry_absolute" } }, }, deck = { type = "Challenge Deck", @@ -285,10 +286,10 @@ local dagger_war = { { id = "j_cry_cryptidmoment", edition = "negative" }, { id = "j_gift", edition = "negative" }, { id = "j_gift", edition = "negative" }, - { id = "j_ceremonial", eternal = true }, - { id = "j_cry_unjust_dagger", eternal = true }, - { id = "j_cry_monkey_dagger", eternal = true }, - { id = "j_cry_pirate_dagger", eternal = true }, + { id = "j_ceremonial", stickers = { "cry_absolute" } }, + { id = "j_cry_unjust_dagger", stickers = { "cry_absolute" } }, + { id = "j_cry_monkey_dagger", stickers = { "cry_absolute" } }, + { id = "j_cry_pirate_dagger", stickers = { "cry_absolute" } }, }, deck = { type = "Challenge Deck", @@ -301,7 +302,7 @@ local onlycard = { rules = { custom = {}, modifiers = { - {id = 'dollars', value = 10}, + { id = "dollars", value = 10 }, }, }, restrictions = { @@ -309,7 +310,7 @@ local onlycard = { { id = "tag_charm" }, { id = "tag_meteor" }, { id = "tag_buffoon" }, - { id = "tag_ethereal" } + { id = "tag_ethereal" }, }, banned_cards = { { id = "j_marble" }, @@ -319,29 +320,53 @@ local onlycard = { { id = "c_grim" }, { id = "c_incantation" }, { id = "c_cryptid" }, - {id = 'p_celestial_normal_1', ids = { - 'p_celestial_normal_1','p_celestial_normal_2', - 'p_celestial_normal_3','p_celestial_normal_4', - 'p_celestial_jumbo_1','p_celestial_jumbo_2', - 'p_celestial_mega_1','p_celestial_mega_2',} - }, - {id = 'p_arcana_normal_1', ids = { - 'p_arcana_normal_1','p_arcana_normal_2', - 'p_arcana_normal_3','p_arcana_normal_4', - 'p_arcana_jumbo_1','p_arcana_jumbo_2', - 'p_arcana_mega_1','p_arcana_mega_2',} - }, - {id = 'p_spectral_normal_1', ids = { - 'p_spectral_normal_1','p_spectral_normal_2', - 'p_spectral_jumbo_1','p_spectral_mega_1',} - }, - {id = 'p_buffoon_normal_1', ids = { - 'p_buffoon_normal_1','p_buffoon_normal_2', - 'p_buffoon_jumbo_1','p_buffoon_mega_1',} - }, + { + id = "p_celestial_normal_1", + ids = { + "p_celestial_normal_1", + "p_celestial_normal_2", + "p_celestial_normal_3", + "p_celestial_normal_4", + "p_celestial_jumbo_1", + "p_celestial_jumbo_2", + "p_celestial_mega_1", + "p_celestial_mega_2", + }, + }, + { + id = "p_arcana_normal_1", + ids = { + "p_arcana_normal_1", + "p_arcana_normal_2", + "p_arcana_normal_3", + "p_arcana_normal_4", + "p_arcana_jumbo_1", + "p_arcana_jumbo_2", + "p_arcana_mega_1", + "p_arcana_mega_2", + }, + }, + { + id = "p_spectral_normal_1", + ids = { + "p_spectral_normal_1", + "p_spectral_normal_2", + "p_spectral_jumbo_1", + "p_spectral_mega_1", + }, + }, + { + id = "p_buffoon_normal_1", + ids = { + "p_buffoon_normal_1", + "p_buffoon_normal_2", + "p_buffoon_jumbo_1", + "p_buffoon_mega_1", + }, + }, }, banned_other = { - { id = 'bl_house', type = 'blind' }, + { id = "bl_house", type = "blind" }, }, }, jokers = { @@ -350,7 +375,7 @@ local onlycard = { deck = { type = "Challenge Deck", cards = { - { s = "C", r = "A", g='Blue' }, + { s = "C", r = "A", g = "Blue" }, }, }, } @@ -367,8 +392,8 @@ local joker_poker = { { id = "cry_no_consumables" }, }, modifiers = { - {id = "consumable_slots", value = 0}, - {id = "discards", value = 0} + { id = "consumable_slots", value = 0 }, + { id = "discards", value = 0 }, }, }, deck = { @@ -376,37 +401,37 @@ local joker_poker = { }, restrictions = { banned_cards = { - {id = "j_banner"}, - {id = "j_8_ball"}, - {id = "j_chaos"}, - {id = "j_delayed_grat"}, - {id = "j_sixth_sense"}, - {id = "j_faceless"}, - {id = "j_superposition"}, - {id = "j_red_card"}, - {id = "j_seance"}, - {id = "j_vagabond"}, - {id = "j_mail"}, - {id = "j_hallucination"}, - {id = "j_fortune_teller"}, - {id = "j_drunkard"}, - {id = "j_trading"}, - {id = "j_flash"}, - {id = "j_castle"}, - {id = "j_merry_andy"}, - {id = "j_hit_the_road"}, - {id = "j_satellite"}, - {id = "j_cartomancer"}, - {id = "j_astronomer"}, - {id = "j_burnt"}, - {id = "j_yorick"}, - {id = "j_perkeo"}, - {id = "j_constellation"} + { id = "j_banner" }, + { id = "j_8_ball" }, + { id = "j_chaos" }, + { id = "j_delayed_grat" }, + { id = "j_sixth_sense" }, + { id = "j_faceless" }, + { id = "j_superposition" }, + { id = "j_red_card" }, + { id = "j_seance" }, + { id = "j_vagabond" }, + { id = "j_mail" }, + { id = "j_hallucination" }, + { id = "j_fortune_teller" }, + { id = "j_drunkard" }, + { id = "j_trading" }, + { id = "j_flash" }, + { id = "j_castle" }, + { id = "j_merry_andy" }, + { id = "j_hit_the_road" }, + { id = "j_satellite" }, + { id = "j_cartomancer" }, + { id = "j_astronomer" }, + { id = "j_burnt" }, + { id = "j_yorick" }, + { id = "j_perkeo" }, + { id = "j_constellation" }, }, banned_other = { - { id = 'bl_hook', type = 'blind' }, - { id = 'bl_arm', type = 'blind' }, - { id = 'bl_water', type = 'blind' }, + { id = "bl_hook", type = "blind" }, + { id = "bl_arm", type = "blind" }, + { id = "bl_water", type = "blind" }, }, }, } @@ -414,7 +439,7 @@ local gfcr = G.FUNCS.can_reroll function G.FUNCS.can_reroll(e) if G.GAME.modifiers.cry_no_rerolls then e.config.colour = G.C.UI.BACKGROUND_INACTIVE - e.config.button = nil + e.config.button = nil else return gfcr(e) end @@ -429,7 +454,8 @@ end --Add banned cards when specific features/mods are enabled here --TODO other mods if Cryptid.enabled["Blinds"] then - joker_poker.restrictions.banned_other[#joker_poker.restrictions.banned_other + 1] = { id = 'bl_cry_oldmanacle', type = 'blind' } + joker_poker.restrictions.banned_other[#joker_poker.restrictions.banned_other + 1] = + { id = "bl_cry_oldmanacle", type = "blind" } end if Cryptid.enabled["Tags"] then onlycard.restrictions.banned_tags[#onlycard.restrictions.banned_tags + 1] = { id = "tag_cry_bundle" } @@ -443,8 +469,10 @@ if Cryptid.enabled["Tags"] then end if Cryptid.enabled["Misc."] then ballin.restrictions.banned_cards[#ballin.restrictions.banned_cards + 1] = { id = "c_cry_eclipse" } - rng.restrictions.banned_cards[#rng.restrictions.banned_cards + 1] = {id = 'p_cry_meme_1', ids = {'p_cry_meme_1','p_cry_meme_two','p_cry_meme_three'}} - onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = {id = 'p_cry_meme_1', ids = {'p_cry_meme_1','p_cry_meme_two','p_cry_meme_three'}} + rng.restrictions.banned_cards[#rng.restrictions.banned_cards + 1] = + { id = "p_cry_meme_1", ids = { "p_cry_meme_1", "p_cry_meme_two", "p_cry_meme_three" } } + onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = + { id = "p_cry_meme_1", ids = { "p_cry_meme_1", "p_cry_meme_two", "p_cry_meme_three" } } end if Cryptid.enabled["Misc. Jokers"] then rush_hour_ii.restrictions.banned_cards[#rush_hour_ii.restrictions.banned_cards + 1] = { id = "j_cry_pickle" } @@ -473,7 +501,10 @@ if Cryptid.enabled["Code Cards"] then ballin.restrictions.banned_cards[#ballin.restrictions.banned_cards + 1] = { id = "c_cry_class" } rng.restrictions.banned_cards[#rng.restrictions.banned_cards + 1] = { id = "c_cry_delete" } onlycard.restrictions.banned_tags[#onlycard.restrictions.banned_tags + 1] = { id = "tag_cry_console" } - onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = {id = 'p_cry_code_normal_1', ids = {'p_cry_code_normal_1','p_cry_code_normal_2','p_cry_code_jumbo_1','p_cry_code_mega_1',}} + onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { + id = "p_cry_code_normal_1", + ids = { "p_cry_code_normal_1", "p_cry_code_normal_2", "p_cry_code_jumbo_1", "p_cry_code_mega_1" }, + } joker_poker.restrictions.banned_cards[#joker_poker.restrictions.banned_cards + 1] = { id = "j_cry_cut" } joker_poker.restrictions.banned_cards[#joker_poker.restrictions.banned_cards + 1] = { id = "j_cry_CodeJoker" } joker_poker.restrictions.banned_cards[#joker_poker.restrictions.banned_cards + 1] = { id = "j_cry_copypaste" } @@ -482,8 +513,8 @@ if Cryptid.enabled["Code Cards"] then end if Cryptid.enabled["Spectrals"] then sticker_sheet.restrictions.banned_cards[#sticker_sheet.restrictions.banned_cards + 1] = { id = "c_cry_lock" } - sticker_sheet_plus.restrictions.banned_cards[#sticker_sheet_plus.restrictions.banned_cards + 1] = { id = "c_cry_lock" } - dagger_war.restrictions.banned_cards[#dagger_war.restrictions.banned_cards + 1] = { id = "c_cry_lock" } + sticker_sheet_plus.restrictions.banned_cards[#sticker_sheet_plus.restrictions.banned_cards + 1] = + { id = "c_cry_lock" } onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_cry_replica" } end if Cryptid.enabled["Vouchers"] then @@ -494,7 +525,8 @@ if Cryptid.enabled["Vouchers"] then rush_hour_iii.restrictions.banned_cards[#rush_hour_iii.restrictions.banned_cards + 1] = { id = "v_cry_tag_printer" } boss_rush.restrictions.banned_cards[#boss_rush.restrictions.banned_cards + 1] = { id = "v_cry_tag_printer" } rush_hour_ii.restrictions.banned_cards[#rush_hour_ii.restrictions.banned_cards + 1] = { id = "v_cry_clone_machine" } - rush_hour_iii.restrictions.banned_cards[#rush_hour_iii.restrictions.banned_cards + 1] = { id = "v_cry_clone_machine" } + rush_hour_iii.restrictions.banned_cards[#rush_hour_iii.restrictions.banned_cards + 1] = + { id = "v_cry_clone_machine" } boss_rush.restrictions.banned_cards[#boss_rush.restrictions.banned_cards + 1] = { id = "v_cry_clone_machine" } end if (SMODS.Mods["jen"] or {}).can_load then @@ -532,7 +564,8 @@ if (SMODS.Mods["jen"] or {}).can_load then onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_justice" } onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_devil" } onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_tower" } - onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_high_priestess" } + onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = + { id = "c_jen_reverse_high_priestess" } onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_emperor" } onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_death" } onlycard.restrictions.banned_cards[#onlycard.restrictions.banned_cards + 1] = { id = "c_jen_reverse_star" } @@ -573,4 +606,4 @@ for k, v in pairs(G.P_CENTERS) do end end -return { name = "Challenges", init = function() end, items = challenges } +return { name = "Challenges", items = challenges } diff --git a/Cryptid/items/code.lua b/Cryptid/items/code.lua new file mode 100644 index 0000000..e4c5235 --- /dev/null +++ b/Cryptid/items/code.lua @@ -0,0 +1,4971 @@ +--note to self: refer to https://docs.google.com/document/d/1LNaIouU3vrtWIuPBdFCqLyjYAjVtq7t64xjHnckEY50/edit for order of remaining consumables +local code = { + --[[ + I'm assuming this won't work so it's commented out for now - Jevonn + dependencies = { + items = { + "set_cry_code", + }, + }, + ]] + -- + object_type = "ConsumableType", + key = "Code", + primary_colour = HEX("14b341"), + secondary_colour = HEX("12f254"), + collection_rows = { 4, 4 }, -- 4 pages for all code cards + shop_rate = 0.0, + loc_txt = {}, + default = (SMODS.Mods["jen"] or {}).can_load and "c_cry_oboe" or "c_cry_crash", + can_stack = true, + can_divide = true, +} +local pack1 = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Booster", + key = "code_normal_1", + kind = "Code", + atlas = "pack", + pos = { x = 0, y = 0 }, + config = { extra = 2, choose = 1 }, + cost = 4, + order = 1, + weight = 0.96, + create_card = function(self, card) + return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") + end, + ease_background_colour = function(self) + ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) + ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) + end, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } + end, + group_key = "k_cry_program_pack", +} +local pack2 = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Booster", + key = "code_normal_2", + kind = "Code", + atlas = "pack", + pos = { x = 1, y = 0 }, + config = { extra = 2, choose = 1 }, + cost = 4, + order = 2, + weight = 0.96, + create_card = function(self, card) + return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") + end, + ease_background_colour = function(self) + ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) + ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) + end, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } + end, + group_key = "k_cry_program_pack", +} +local packJ = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Booster", + key = "code_jumbo_1", + kind = "Code", + atlas = "pack", + pos = { x = 2, y = 0 }, + config = { extra = 4, choose = 1 }, + cost = 6, + order = 3, + weight = 0.48, + create_card = function(self, card) + return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") + end, + ease_background_colour = function(self) + ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) + ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) + end, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } + end, + group_key = "k_cry_program_pack", +} +local packM = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Booster", + key = "code_mega_1", + kind = "Code", + atlas = "pack", + pos = { x = 3, y = 0 }, + config = { extra = 4, choose = 2 }, + cost = 8, + order = 4, + weight = 0.12, + create_card = function(self, card) + return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program") + end, + ease_background_colour = function(self) + ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code) + ease_background_colour({ new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2 }) + end, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } + end, + group_key = "k_cry_program_pack", +} +local console = { + dependencies = { + items = { + "p_cry_code_normal_1", + }, + }, + object_type = "Tag", + atlas = "tag_cry", + name = "cry-Console Tag", + order = 26, + pos = { x = 3, y = 2 }, + config = { type = "new_blind_choice" }, + key = "console", + min_ante = 2, + loc_vars = function(self, info_queue) + info_queue[#info_queue + 1] = { set = "Other", key = "p_cry_code_normal_1", specific_vars = { 1, 2 } } + return { vars = {} } + end, + apply = function(self, tag, context) + if context.type == "new_blind_choice" then + tag:yep("+", G.C.SECONDARY_SET.Code, function() + local key = "p_cry_code_normal_1" + local card = Card( + G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2, + G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2, + G.CARD_W * 1.27, + G.CARD_H * 1.27, + G.P_CARDS.empty, + G.P_CENTERS[key], + { bypass_discovery_center = true, bypass_discovery_ui = true } + ) + card.cost = 0 + card.from_tag = true + G.FUNCS.use_card({ config = { ref_table = card } }) + if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then + card:set_edition(nil, true, true) + elseif G.GAME.modifiers.cry_force_random_edition then + local edition = cry_poll_random_edition() + card:set_edition(edition, true, true) + end + card:start_materialize() + return true + end) + tag.triggered = true + return true + end + end, +} +local crash = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Crash", + key = "crash", + pos = { x = 0, y = 0 }, + config = {}, + cost = 4, + atlas = "code", + order = 1, + can_use = function(self, card) + return true + end, + use = function(self, card, area, copier) + if not G.PROFILES[G.SETTINGS.profile].consumeable_usage["c_cry_crash"] then + set_consumeable_usage(card) + end + -- I'm being VERY safe here, game gets really weird and sometimes does and doesn't save ://CRASH use + G:save_settings() + G:save_progress() + local f = pseudorandom_element(crashes, pseudoseed("cry_crash")) + f(self, card, area, copier) + end, + init = function(self) + function create_UIBox_crash(card) + G.E_MANAGER:add_event(Event({ + blockable = false, + func = function() + G.REFRESH_ALERTS = true + return true + end, + })) + local t = create_UIBox_generic_options({ + no_back = true, + colour = HEX("04200c"), + outline_colour = G.C.SECONDARY_SET.Code, + contents = { + { + n = G.UIT.R, + nodes = { + create_text_input({ + colour = G.C.SET.Code, + hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), + w = 4.5, + h = 1, + max_length = 2500, + extended_corpus = true, + prompt_text = "???", + ref_table = G, + ref_value = "ENTERED_ACE", + keyboard_offset = 1, + }), + }, + }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + UIBox_button({ + colour = G.C.SET.Code, + button = "ca", + label = { localize("cry_code_execute") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + }, + }) + return t + end + G.FUNCS.ca = function() + G.GAME.USING_CODE = false + loadstring(G.ENTERED_ACE)() --Scary! + glitched_intensity = 0 + G.SETTINGS.GRAPHICS.crt = 0 + check_for_unlock({ type = "ach_cry_used_crash" }) + G.CHOOSE_ACE:remove() + G.ENTERED_ACE = nil + end + + crashes = { + function() + G:save_settings() + G:save_progress() + --instantly quit the game, no error log + function love.errorhandler() end + print(crash.crash.crash) + end, + function() + G:save_settings() + G:save_progress() + --removes draw loop, you're frozen and can still weirdly interact with the game a bit + function love.draw() end + end, + function() + G:save_settings() + G:save_progress() + --by WilsonTheWolf and MathIsFun_, funky error screen with random funny message + messages = { + "Oops.", + "Your cards have been TOASTED, extra crispy for your pleasure.", + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "What we have here is a certified whoopsidaisy", + "Why don't you buy more jonkers? Are you stupid?", + "lmao", + "How about a game of YOU MUST DIE?", + "Sorry, I was in the bathroom. What'd I mi'Where'd... Where is everyone?", + "Peter? What are you doing? Cards. WHAT THE FUCK?", + "what if it was called freaklatro", + "4", + "I SAWED THIS GAME IN HALF!", + "is this rush hour 4", + "You missed a semicolon on line 19742, you buffoon", + "you are an idiot", + "You do not recognise the cards in the deck.", + ":( Your P", + "Assertion failed", + "Play ULTRAKILL", + "Play Nova Drift", + "Play Balatro- wait", + "what if instead of rush hour it was called kush hour and you just smoked a massive blunt", + "death.fell.accident.water", + "Balatro's innards were made outards", + "i am going to club yrou", + "But the biggest joker of them all, it was you all along!", + "fission mailed successfully", + "table index is nil", + "index is nil table", + "nil is index table", + "nildex is in table", + "I AM THE TABLE", + "I'm never going back this casino agai-", + "what did you think would happen?", + "DO THE EARTHQUAKE! [screams]", + "fuck you", + "Screaming in the casino prank! AAAAAAAAAAAAAAAAAA", + "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + "You musn't tear or crease it.", + "Sure, but the point is to do it without making a hole.", + "The end of all things! As was foretold in the prophecy!", + "Do it again. It'd be funny", + "", + ":3", + "Looks like a skill issue to me.", + "it turns out that card was ligma", + "YouJustLostTheCasinoGame", + "Nah fuck off", + "attempt to call global your_mom (value too large)", + "Killed by intentional game design", + "attempt to index field 'attempt to call global to_big (too big)' (a nil value)", + "what.avi", + "The C", + "Shoulda kept Chicot", + "Maybe next time don't do that?", + "[recursion]", + "://SHART", + "It's converging time.", + "This is the last error message.", + } + function corruptString(str) + -- replace each character with a random valid ascii character + local newStr = "" + local len + if type(str) == "string" then + len = #str + else + len = str + end + for i = 1, len do + -- newStr = newStr .. string.char(math.random(33, 122)) + local c = math.random(33, 122) + newStr = newStr .. string.char(c) + if c == 92 then -- backslash + newStr = newStr .. string.char(c) + end + end + return newStr + end + + function getDebugInfoForCrash() + local info = "Additional Context:\nBalatro Version: " + .. VERSION + .. "\nModded Version: " + .. MODDED_VERSION + local major, minor, revision, codename = love.getVersion() + info = info + .. "\nLove2D Version: " + .. corruptString(string.format("%d.%d.%d", major, minor, revision)) + + local lovely_success, lovely = pcall(require, "lovely") + if lovely_success then + info = info .. "\nLovely Version: " .. corruptString(lovely.version) + end + if SMODS.mod_list then + info = info .. "\nSteamodded Mods:" + local enabled_mods = {} + for _, v in ipairs(SMODS.mod_list) do + if v.can_load then + table.insert(enabled_mods, v) + end + end + for k, v in ipairs(enabled_mods) do + info = info + .. "\n " + .. k + .. ": " + .. v.name + .. " by " + .. table.concat(v.author, ", ") + .. " [ID: " + .. v.id + .. (v.priority ~= 0 and (", Priority: " .. v.priority) or "") + .. (v.version and v.version ~= "0.0.0" and (", Version: " .. v.version) or "") + .. "]" + local debugInfo = v.debug_info + if debugInfo then + if type(debugInfo) == "string" then + if #debugInfo ~= 0 then + info = info .. "\n " .. debugInfo + end + elseif type(debugInfo) == "table" then + for kk, vv in pairs(debugInfo) do + if type(vv) ~= "nil" then + vv = tostring(vv) + end + if #vv ~= 0 then + info = info .. "\n " .. kk .. ": " .. vv + end + end + end + end + end + end + return info + end + + VERSION = corruptString(VERSION) + MODDED_VERSION = corruptString(MODDED_VERSION) + + if SMODS.mod_list then + for i, mod in ipairs(SMODS.mod_list) do + mod.can_load = true + mod.name = corruptString(mod.name) + mod.id = corruptString(mod.id) + mod.author = { corruptString(20) } + mod.version = corruptString(mod.version) + mod.debug_info = corruptString(math.random(5, 100)) + end + end + + do + local utf8 = require("utf8") + local linesize = 100 + + -- Modifed from https://love2d.org/wiki/love.errorhandler + function love.errorhandler(msg) + msg = tostring(msg) + + if not love.window or not love.graphics or not love.event then + return + end + + if not love.graphics.isCreated() or not love.window.isOpen() then + local success, status = pcall(love.window.setMode, 800, 600) + if not success or not status then + return + end + end + + -- Reset state. + if love.mouse then + love.mouse.setVisible(true) + love.mouse.setGrabbed(false) + love.mouse.setRelativeMode(false) + if love.mouse.isCursorSupported() then + love.mouse.setCursor() + end + end + if love.joystick then + -- Stop all joystick vibrations. + for i, v in ipairs(love.joystick.getJoysticks()) do + v:setVibration() + end + end + if love.audio then + love.audio.stop() + end + + love.graphics.reset() + local font = love.graphics.setNewFont("resources/fonts/m6x11plus.ttf", 20) + + local background = { math.random() * 0.3, math.random() * 0.3, math.random() * 0.3 } + love.graphics.clear(background) + love.graphics.origin() + + local sanitizedmsg = {} + for char in msg:gmatch(utf8.charpattern) do + table.insert(sanitizedmsg, char) + end + sanitizedmsg = table.concat(sanitizedmsg) + + local err = {} + + table.insert(err, "Oops! The game crashed:") + table.insert(err, sanitizedmsg) + + if #sanitizedmsg ~= #msg then + table.insert(err, "Invalid UTF-8 string in error message.") + end + + local success, msg = pcall(getDebugInfoForCrash) + if success and msg then + table.insert(err, "\n" .. msg) + else + table.insert(err, "\n" .. "Failed to get additional context :/") + end + + local p = table.concat(err, "\n") + + p = p:gsub("\t", "") + p = p:gsub('%[string "(.-)"%]', "%1") + + local scrollOffset = 0 + local endHeight = 0 + love.keyboard.setKeyRepeat(true) + + local function scrollDown(amt) + if amt == nil then + amt = 18 + end + scrollOffset = scrollOffset + amt + if scrollOffset > endHeight then + scrollOffset = endHeight + end + end + + local function scrollUp(amt) + if amt == nil then + amt = 18 + end + scrollOffset = scrollOffset - amt + if scrollOffset < 0 then + scrollOffset = 0 + end + end + + local pos = 70 + local arrowSize = 20 + + local function calcEndHeight() + local font = love.graphics.getFont() + local rw, lines = font:getWrap(p, love.graphics.getWidth() - pos * 2) + local lineHeight = font:getHeight() + local atBottom = scrollOffset == endHeight and scrollOffset ~= 0 + endHeight = #lines * lineHeight - love.graphics.getHeight() + pos * 2 + if endHeight < 0 then + endHeight = 0 + end + if scrollOffset > endHeight or atBottom then + scrollOffset = endHeight + end + end + + local function draw() + if not love.graphics.isActive() then + return + end + love.graphics.clear(background) + calcEndHeight() + local time = love.timer.getTime() + if not G.SETTINGS.reduced_motion then + background = { math.random() * 0.3, math.random() * 0.3, math.random() * 0.3 } + p = p + .. "\n" + .. corruptString(math.random(linesize - linesize / 2, linesize + linesize * 2)) + linesize = linesize + linesize / 25 + end + love.graphics.printf(p, pos, pos - scrollOffset, love.graphics.getWidth() - pos * 2) + if scrollOffset ~= endHeight then + love.graphics.polygon( + "fill", + love.graphics.getWidth() - (pos / 2), + love.graphics.getHeight() - arrowSize, + love.graphics.getWidth() - (pos / 2) + arrowSize, + love.graphics.getHeight() - (arrowSize * 2), + love.graphics.getWidth() - (pos / 2) - arrowSize, + love.graphics.getHeight() - (arrowSize * 2) + ) + end + if scrollOffset ~= 0 then + love.graphics.polygon( + "fill", + love.graphics.getWidth() - (pos / 2), + arrowSize, + love.graphics.getWidth() - (pos / 2) + arrowSize, + arrowSize * 2, + love.graphics.getWidth() - (pos / 2) - arrowSize, + arrowSize * 2 + ) + end + love.graphics.present() + end + + local fullErrorText = p + local function copyToClipboard() + if not love.system then + return + end + love.system.setClipboardText(fullErrorText) + p = p .. "\nCopied to clipboard!" + end + + if G then + -- Kill threads (makes restarting possible) + if G.SOUND_MANAGER and G.SOUND_MANAGER.channel then + G.SOUND_MANAGER.channel:push({ + type = "kill", + }) + end + if G.SAVE_MANAGER and G.SAVE_MANAGER.channel then + G.SAVE_MANAGER.channel:push({ + type = "kill", + }) + end + if G.HTTP_MANAGER and G.HTTP_MANAGER.channel then + G.HTTP_MANAGER.channel:push({ + type = "kill", + }) + end + end + + return function() + love.event.pump() + + for e, a, b, c in love.event.poll() do + if e == "quit" then + return 1 + elseif e == "keypressed" and a == "escape" then + return 1 + elseif e == "keypressed" and a == "c" and love.keyboard.isDown("lctrl", "rctrl") then + copyToClipboard() + elseif e == "keypressed" and a == "r" then + return "restart" + elseif e == "keypressed" and a == "down" then + scrollDown() + elseif e == "keypressed" and a == "up" then + scrollUp() + elseif e == "keypressed" and a == "pagedown" then + scrollDown(love.graphics.getHeight()) + elseif e == "keypressed" and a == "pageup" then + scrollUp(love.graphics.getHeight()) + elseif e == "keypressed" and a == "home" then + scrollOffset = 0 + elseif e == "keypressed" and a == "end" then + scrollOffset = endHeight + elseif e == "wheelmoved" then + scrollUp(b * 20) + elseif e == "gamepadpressed" and b == "dpdown" then + scrollDown() + elseif e == "gamepadpressed" and b == "dpup" then + scrollUp() + elseif e == "gamepadpressed" and b == "a" then + return "restart" + elseif e == "gamepadpressed" and b == "x" then + copyToClipboard() + elseif e == "gamepadpressed" and (b == "b" or b == "back" or b == "start") then + return 1 + elseif e == "touchpressed" then + local name = love.window.getTitle() + if #name == 0 or name == "Untitled" then + name = "Game" + end + local buttons = { "OK", localize("cry_code_cancel"), "Restart" } + if love.system then + buttons[4] = "Copy to clipboard" + end + local pressed = love.window.showMessageBox("Quit " .. name .. "?", "", buttons) + if pressed == 1 then + return 1 + elseif pressed == 3 then + return "restart" + elseif pressed == 4 then + copyToClipboard() + end + end + end + + draw() + + if love.timer then + love.timer.sleep(0.1) + end + end + end + end + + load("error(messages[math.random(1, #messages)])", corruptString(30), "t")() + end, + function() + check_for_unlock({ type = "ach_cry_used_crash" }) + --fills screen with Crash cards + glitched_intensity = 100 + G.SETTINGS.GRAPHICS.crt = 101 + G.E_MANAGER:add_event( + Event({ + trigger = "immediate", + blockable = false, + no_delete = true, + func = function() + G.GAME.accel = G.GAME.accel or 1.1 + for i = 1, G.GAME.accel do + local c = create_card("Code", nil, nil, nil, nil, nil, "c_cry_crash") + c.T.x = math.random(-G.CARD_W, G.TILE_W) + c.T.y = math.random(-G.CARD_H, G.TILE_H) + end + G.GAME.accel = G.GAME.accel ^ (1.005 + G.GAME.accel / 20000) + return false + end, + }), + "other" + ) + end, + function() + G:save_settings() + G:save_progress() + -- Fake lovely panic + love.window.showMessageBox( + "lovely-injector", + 'lovely-injector has crashed:\npanicked at crates/lovely-core/src/lib.rs:420:69:\nFailed to parse patch at "C:\\\\users\\\\jimbo\\\\AppData\\\\Roaming\\\\Balatro\\\\Mods\\\\Cryptid\\\\lovely.toml":\nError { inner: TomlError { message: "expected `.`, `=`", original: Some("' + .. "\"According to all known laws of aviation, there is no way a bee should be able to fly.\\nIts wings are too small to get its fat little body off the ground.\\nThe bee, of course, flies anyway because bees don't care what humans think is impossible.\\nYellow, black. Yellow, black. Yellow, black. Yellow, black.\\nOoh, black and yellow!\\nLet's shake it up a little.\\nBarry! Breakfast is ready!\\nComing!\\nHang on a second.\\nHello?\\nBarry?\\nAdam?\\nCan you believe this is happening?\\nI can't.\\nI'll pick you up.\\nLooking sharp.\\nUse the stairs, Your father paid good money for those.\\nSorry. I'm excited.\\nHere's the graduate.\\nWe're very proud of you, son.\\nA perfect report card, all B's.\\nVery proud.\\nMa! I got a thing going here.\\nYou got lint on your fuzz.\\nOw! That's me!\\nWave to us! We'll be in row 118,000.\\nBye!\\nBarry, I told you, stop flying in the house!\\nHey, Adam.\\nHey, Barry.\\nIs that fuzz gel?\\nA little. Special day, graduation.\\nNever thought I'd make it.\\nThree days grade school, three days high school.\\nThose were awkward.\\nThree days college. I'm glad I took a day and hitchhiked around The Hive.\\nYou did come back different.\\nHi, Barry. Artie, growing a mustache? Looks good.\\nHear about Frankie?\\nYeah.\\nYou going to the funeral?\\nNo, I'm not going.\\nEverybody knows, sting someone, you die.\\nDon't waste it on a squirrel.\\nSuch a hothead.\\nI guess he could have just gotten out of the way.\\nI love this incorporating an amusement park into our day.\\nThat's why we don't need vacations.\\nBoy, quite a bit of pomp under the circumstances.\\nWell, Adam, today we are men.\\nWe are!\\nBee-men.\\nAmen!\\nHallelujah!\\nStudents, faculty, distinguished bees,\\nplease welcome Dean Buzzwell.\\nWelcome, New Hive City graduating class of 9:15.\\nThat concludes our ceremonies And begins your career at Honex Industries!\\nWill we pick our job today?\\nI heard it's just orientation.\\nHeads up! Here we go.\\nKeep your hands and antennas inside the tram at all times.\\nWonder what it'll be like?\\nA little scary.\\nWelcome to Honex, a division of Honesco and a part of the Hexagon Group.\\nThis is it!\\nWow.\\nWow.\\nWe know that you, as a bee, have worked your whole life to get to the point where you can work for your whole life.\\nHoney begins when our valiant Pollen Jocks bring the nectar to The Hive.\\nOur top-secret formula is automatically color-corrected, scent-adjusted and bubble-contoured into this soothing sweet syrup with its distinctive golden glow you know as... Honey!\\nThat girl was hot.\\nShe's my cousin!\\nShe is?\\nYes, we're all cousins.\\nRight. You're right.\\nAt Honex, we constantly strive to improve every aspect of bee existence.\\nThese bees are stress-testing a new helmet technology.\\nWhat do you think he makes?\\nNot enough.\\nHere we have our latest advancement, the Krelman.\\nWhat does that do?\\nCatches that little strand of honey that hangs after you pour it.\\nSaves us millions.\\nCan anyone work on the Krelman?\\nOf course. Most bee jobs are small ones.\\nBut bees know that every small job, if it's done well, means a lot.\\nBut choose carefully because you'll stay in the job you pick for the rest of your life.\\nThe same job the rest of your life? I didn't know that.\\nWhat's the difference?\\nYou'll be happy to know that bees, as a species, haven't had one day off in 27 million years.\\nSo you'll just work us to death?\\nWe'll sure try.\\nWow! That blew my mind!\\n\\\"What's the difference?\\\"\\nHow can you say that?\\nOne job forever?\\nThat's an insane choice to have to make.\\nI'm relieved. Now we only have to make one decision in life.\\nBut, Adam, how could they never have told us that?\\nWhy would you question anything? We're bees.\\nWe're the most perfectly functioning society on Earth.\\nYou ever think maybe things work a little too well here?\\nLike what? Give me one example.\\nI don't know. But you know what I'm talking about.\\nPlease clear the gate. Royal Nectar Force on approach.\\nWait a second. Check it out.\\nHey, those are Pollen Jocks!\\nWow.\\nI've never seen them this close.\\nThey know what it's like outside The Hive.\\nYeah, but some don't come back.\\nHey, Jocks!\\nHi, Jocks!\\nYou guys did great!\\nYou're monsters!\\nYou're sky freaks! I love it! I love it!\\nI wonder where they were.\\nI don't know.\\nTheir day's not planned.\\nOutside The Hive, flying who knows where, doing who knows what.\\nYou can't just decide to be a Pollen Jock. You have to be bred for that.\\nRight.\\nLook. That's more pollen than you and I will see in a lifetime.\\nIt's just a status symbol.\\nBees make too much of it.\\nPerhaps. Unless you're wearing it and the ladies see you wearing it.\\nThose ladies?\\nAren't they our cousins too?\\nDistant. Distant.\\nLook at these two.\\nCouple of Hive Harrys.\\nLet's have fun with them.\\nIt must be dangerous being a Pollen Jock.\\nYeah. Once a bear pinned me against a mushroom!\\nHe had a paw on my throat, and with the other, he was slapping me!\\nOh, my!\\nI never thought I'd knock him out.\\nWhat were you doing during this?\\nTrying to alert the authorities.\\nI can autograph that.\\nA little gusty out there today, wasn't it, comrades?\\nYeah. Gusty.\\nWe're hitting a sunflower patch six miles from here tomorrow.\\nSix miles, huh?\\nBarry!\\nA puddle jump for us, but maybe you're not up for it.\\nMaybe I am.\\nYou are not!\\nWe're going 0900 at J-Gate.\\nWhat do you think, buzzy-boy?\\nAre you bee enough?\\nI might be. It all depends on what 0900 means.\\nHey, Honex!\\nDad, you surprised me.\\nYou decide what you're interested in?\\nWell, there's a lot of choices.\\nBut you only get one.\\nDo you ever get bored doing the same job every day?\\nSon, let me tell you about stirring.\\nYou grab that stick, and you just move it around, and you stir it around.\\nYou get yourself into a rhythm.\\nIt's a beautiful thing.\\nYou know, Dad, the more I think about it,\\nmaybe the honey field just isn't right for me.\\nYou were thinking of what, making balloon animals?\\nThat's a bad job for a guy with a stinger.\\nJanet, your son's not sure he wants to go into honey!\\nBarry, you are so funny sometimes.\\nI'm not trying to be funny.\\nYou're not funny! You're going into honey. Our son, the stirrer!\\nYou're gonna be a stirrer?\\nNo one's listening to me!\\nWait till you see the sticks I have.\\nI could say anything right now.\\nI'm gonna get an ant tattoo!\\nLet's open some honey and celebrate!\\nMaybe I'll pierce my thorax. Shave my antennae. Shack up with a grasshopper. Get a gold tooth and call everybody \\\"dawg\\\"!\\nI'm so proud.\\nWe're starting work today!\\nToday's the day.\\nCome on! All the good jobs will be gone.\\nYeah, right.\\nPollen counting, stunt bee, pouring, stirrer, front desk, hair removal...\\nIs it still available?\\nHang on. Two left!\\nOne of them's yours! Congratulations!\\nStep to the side.\\nWhat'd you get?\\nPicking crud out. Stellar!\\nWow!\\nCouple of newbies?\\nYes, sir! Our first day! We are ready!\\nMake your choice.\\nYou want to go first?\\nNo, you go.\\nOh, my. What's available?\\nRestroom attendant's open, not for the reason you think.\\nAny chance of getting the Krelman?\\nSure, you're on.\\nI'm sorry, the Krelman just closed out.\\nWax monkey's always open.\\nThe Krelman opened up again.\\nWhat happened?\\nA bee died. Makes an opening. See? He's dead. Another dead one.\\nDeady. Deadified. Two more dead.\\nDead from the neck up. Dead from the neck down. That's life!\\nOh, this is so hard!\\nHeating, cooling, stunt bee, pourer, stirrer, humming, inspector number seven, lint coordinator, stripe supervisor, mite wrangler.\\nBarry, what do you think I should... Barry?\\nBarry!\\nAll right, we've got the sunflower patch in quadrant nine...\\nWhat happened to you?\\nWhere are you?\\nI'm going out.\\nOut? Out where?\\nOut there.\\nOh, no!\\nI have to, before I go to work for the rest of my life.\\nYou're gonna die! You're crazy! Hello?\\nAnother call coming in.\\nIf anyone's feeling brave, there's a Korean deli on 83rd that gets their roses today.\\nHey, guys.\\nLook at that.\\nIsn't that the kid we saw yesterday?\\nHold it, son, flight deck's restricted.\\nIt's OK, Lou. We're gonna take him up.\\nReally? Feeling lucky, are you?\\nSign here, here. Just initial that.\\nThank you.\\nOK.\\nYou got a rain advisory today, and as you all know, bees cannot fly in rain.\\nSo be careful. As always, watch your brooms, hockey sticks, dogs, birds, bears and bats.\\nAlso, I got a couple of reports of root beer being poured on us.\\nMurphy's in a home because of it, babbling like a cicada!\\nThat's awful.\\nAnd a reminder for you rookies, bee law number one, absolutely no talking to humans!\\n All right, launch positions!\\nBuzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz! Buzz, buzz, buzz, buzz!\\nBlack and yellow!\\nHello!\\nYou ready for this, hot shot?\\nYeah. Yeah, bring it on.\\nWind, check.\\nAntennae, check.\\nNectar pack, check.\\nWings, check.\\nStinger, check.\\nScared out of my shorts, check.\\nOK, ladies,\\nlet's move it out!\\nPound those petunias, you striped stem-suckers!\\nAll of you, drain those flowers!\\nWow! I'm out!\\nI can't believe I'm out!\\nSo blue.\\nI feel so fast and free!\\nBox kite!\\nWow!\\nFlowers!\\nThis is Blue Leader, We have roses visual.\\nBring it around 30 degrees and hold.\\nRoses!\\n30 degrees, roger. Bringing it around.\\nStand to the side, kid.\\nIt's got a bit of a kick.\\nThat is one nectar collector!\\nEver see pollination up close?\\nNo, sir.\\nI pick up some pollen here, sprinkle it over here. Maybe a dash over there, a pinch on that one.\\nSee that? It's a little bit of magic.\\nThat's amazing. Why do we do that?\\nThat's pollen power. More pollen, more flowers, more nectar, more honey for us.\\nCool.\\nI'm picking up a lot of bright yellow, Could be daisies, Don't we need those?\\nCopy that visual.\\nWait. One of these flowers seems to be on the move.\\nSay again? You're reporting a moving flower?\\nAffirmative.\\nThat was on the line!\\nThis is the coolest. What is it?\\nI don't know, but I'm loving this color.\\nIt smells good.\\nNot like a flower, but I like it.\\nYeah, fuzzy.\\nChemical-y.\\nCareful, guys. It's a little grabby.\\nMy sweet lord of bees!\\nCandy-brain, get off there!\\nProblem!\\nGuys!\\nThis could be bad.\\nAffirmative.\\nVery close.\\nGonna hurt.\\nMama's little boy.\\nYou are way out of position, rookie!\\nComing in at you like a missile!\\nHelp me!\\nI don't think these are flowers.\\nShould we tell him?\\nI think he knows.\\nWhat is this?!\\nMatch point!\\nYou can start packing up, honey, because you're about to eat it!\\nYowser!\\nGross.\\nThere's a bee in the car!\\nDo something!\\nI'm driving!\\nHi, bee.\\nHe's back here!\\nHe's going to sting me!\\nNobody move. If you don't move, he won't sting you. Freeze!\\nHe blinked!\\nSpray him, Granny!\\nWhat are you doing?!\\nWow... the tension level out here is unbelievable.\\nI gotta get home.\\nCan't fly in rain. Can't fly in rain. Can't fly in rain.\\nMayday! Mayday! Bee going down!\\nKen, could you close the window please?\\nKen, could you close the window please?\\nCheck out my new resume. I made it into a fold-out brochure. You see? Folds out.\\nOh, no. More humans. I don't need this.\\nWhat was that?\\nMaybe this time. This time. This time. This time! This time! This... Drapes!\\nThat is diabolical.\\nIt's fantastic. It's got all my special skills, even my top-ten favorite movies.\\nWhat's number one? Star Wars?\\nNah, I don't go for that... kind of stuff.\\nNo wonder we shouldn't talk to them. They're out of their minds.\\nWhen I leave a job interview, they're flabbergasted, can't believe what I say.\\nThere's the sun. Maybe that's a way out.\\nI don't remember the sun having a big 75 on it.\\nI predicted global warming. I could feel it getting hotter. At first I thought it was just me.\\nWait! Stop! Bee!\\nStand back. These are winter boots.\\nWait!\\nDon't kill him!\\nYou know I'm allergic to them! This thing could kill me!\\nWhy does his life have less value than yours?\\nWhy does his life have any less value than mine? Is that your statement?\\nI'm just saying all life has value. You don't know what he's capable of feeling.\\nMy brochure!\\nThere you go, little guy.\\nI'm not scared of him.It's an allergic thing.\\n Put that on your resume brochure.\\nMy whole face could puff up.\\nMake it one of your special skills.\\nKnocking someone out is also a special skill.\\nRight. Bye, Vanessa. Thanks.\\nVanessa, next week? Yogurt night?\\nSure, Ken. You know, whatever.\\nYou could put carob chips on there.\\nBye.\\nSupposed to be less calories.\\nBye.\\nI gotta say something. She saved my life. I gotta say something.\\nAll right, here it goes.\\nNah.\\nWhat would I say?\\nI could really get in trouble. It's a bee law. You're not supposed to talk to a human.\\nI can't believe I'm doing this. I've got to.\\nOh, I can't do it. Come on!\\nNo. Yes. No. Do it. I can't.\\nHow should I start it? \\\"You like jazz?\\\" No, that's no good.\\nHere she comes! Speak, you fool!\\nHi!\\nI'm sorry. You're talking.\\nYes, I know.\\nYou're talking!\\nI'm so sorry.\\nNo, it's OK. It's fine.\\nI know I'm dreaming. But I don't recall going to bed.\\nWell, I'm sure this is very disconcerting.\\nThis is a bit of a surprise to me. I mean, you're a bee!\\nI am. And I'm not supposed to be doing this, but they were all trying to kill me.\\nAnd if it wasn't for you... I had to thank you. It's just how I was raised.\\nThat was a little weird. I'm talking with a bee.\\nYeah.\\nI'm talking to a bee. And the bee is talking to me!\\nI just want to say I'm grateful.\\nI'll leave now.\\nWait! How did you learn to do that?\\nWhat?\\nThe talking thing.\\nSame way you did, I guess. \\\"Mama, Dada, honey.\\\" You pick it up.\\nThat's very funny.\\nYeah.\\nBees are funny. If we didn't laugh, we'd cry with what we have to deal with.\\nAnyway... Can I... get you something?\\nLike what?\\nI don't know. I mean... I don't know. Coffee?\\nI don't want to put you out.\\nIt's no trouble. It takes two minutes.\\nIt's just coffee.\\nI hate to impose.\\nDon't be ridiculous!\\nActually, I would love a cup.\\nHey, you want rum cake?\\nI shouldn't.\\nHave some.\\nNo, I can't.\\nCome on!\\nI'm trying to lose a couple micrograms.\\nWhere?\\nThese stripes don't help.\\nYou look great!\\nI don't know if you know anything about fashion.\\nAre you all right?\\nNo.\\nHe's making the tie in the cab as they're flying up Madison.\\nHe finally gets there.\\nHe runs up the steps into the church.\\nThe wedding is on.\\nAnd he says, \\\"Watermelon?\\nI thought you said Guatemalan.\\nWhy would I marry a watermelon?\\\"\\nIs that a bee joke?\\nThat's the kind of stuff we do.\\nYeah, different.\\nSo, what are you gonna do, Barry?\\nAbout work? I don't know.\\nI want to do my part for The Hive, but I can't do it the way they want.\\nI know how you feel.\\nYou do?\\nSure.\\nMy parents wanted me to be a lawyer or a doctor, but I wanted to be a florist.\\nReally?\\nMy only interest is flowers.\\nOur new queen was just elected with that same campaign slogan.\\nAnyway, if you look... There's my hive right there. See it?\\nYou're in Sheep Meadow!\\nYes! I'm right off the Turtle Pond!\\nNo way! I know that area. I lost a toe ring there once.\\nWhy do girls put rings on their toes?\\nWhy not?\\nIt's like putting a hat on your knee.\\nMaybe I'll try that.\\nYou all right, ma'am?\\nOh, yeah. Fine.\\nJust having two cups of coffee!\\nAnyway, this has been great.\\nThanks for the coffee.\\nYeah, it's no trouble.\\nSorry I couldn't finish it. If I did, I'd be up the rest of my life.\\nAre you...?\\nCan I take a piece of this with me?\\nSure! Here, have a crumb.\\nThanks!\\nYeah.\\nAll right. Well, then... I guess I'll see you around. Or not.\\nOK, Barry.\\nAnd thank you so much again... for before.\\nOh, that? That was nothing.\\nWell, not nothing, but... Anyway...\\nThis can't possibly work.\\nHe's all set to go.\\nWe may as well try it.\\nOK, Dave, pull the chute.\\nSounds amazing.\\nIt was amazing!\\nIt was the scariest, happiest moment of my life.\\nHumans! I can't believe you were with humans!\\nGiant, scary humans!\\nWhat were they like?\\nHuge and crazy. They talk crazy.\\nThey eat crazy giant things.\\nThey drive crazy.\\nDo they try and kill you, like on TV?\\nSome of them. But some of them don't.\\nHow'd you get back?\\nPoodle.\\nYou did it, and I'm glad. You saw whatever you wanted to see.\\nYou had your \\\"experience.\\\" Now you can pick out yourjob and be normal.\\nWell...\\nWell?\\nWell, I met someone.\\nYou did? Was she Bee-ish?\\nA wasp?! Your parents will kill you!\\nNo, no, no, not a wasp.\\nSpider?\\nI'm not attracted to spiders.\\nI know it's the hottest thing, with the eight legs and all. I can't get by that face.\\nSo who is she?\\nShe's... human.\\nNo, no. That's a bee law. You wouldn't break a bee law.\\nHer name's Vanessa.\\nOh, boy.\\nShe's so nice. And she's a florist!\\nOh, no! You're dating a human florist!\\nWe're not dating.\\nYou're flying outside The Hive, talking to humans that attack our homes with power washers and M-80s! One-eighth a stick of dynamite!\\nShe saved my life! And she understands me.\\nThis is over!\\nEat this.\\nThis is not over! What was that?\\nThey call it a crumb.\\nIt was so stingin' stripey!\\nAnd that's not what they eat.\\nThat's what falls off what they eat!\\nYou know what a Cinnabon is?\\nNo.\\nIt's bread and cinnamon and frosting. They heat it up...\\nSit down!\\n...really hot!\\nListen to me!\\nWe are not them! We're us.\\nThere's us and there's them!\\n\"), keys: [], span: Some(10..11)}}}", + "error" + ) + love.window.showMessageBox( + "lovely-injector", + "lovely-injector has crashed:\npanicked at library/cors/src/panicking.rs:221:5:\npanic in a function that cannot unwind", + "error" + ) + + function love.errorhandler() end + print(crash.crash.crash) + end, + function() + --Arbitrary Code Execution + glitched_intensity = 100 + G.SETTINGS.GRAPHICS.crt = 100 + G.GAME.USING_CODE = true + G.ENTERED_ACE = "" + G.CHOOSE_ACE = UIBox({ + definition = create_UIBox_crash(card), + config = { + align = "bmi", + offset = { x = 0, y = G.ROOM.T.y + 29 }, + major = G.jokers, + bond = "Weak", + instance_type = "POPUP", + }, + }) + end, + } + end, +} +local payload = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Payload", + key = "payload", + pos = { x = 1, y = 0 }, + config = { interest_mult = 3 }, + loc_vars = function(self, info_queue, center) + return { vars = { self.config.interest_mult } } + end, + cost = 4, + atlas = "code", + order = 2, + can_use = function(self, card) + return true + end, + can_bulk_use = true, + use = function(self, card, area, copier) + G.GAME.cry_payload = to_big((G.GAME.cry_payload or 1)) * to_big(card.ability.interest_mult) + end, + bulk_use = function(self, card, area, copier, number) + G.GAME.cry_payload = to_big((G.GAME.cry_payload or 1)) * to_big(card.ability.interest_mult) ^ to_big(number) + end, +} +local reboot = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Reboot", + key = "reboot", + pos = { x = 2, y = 0 }, + config = {}, + cost = 4, + atlas = "code", + order = 3, + can_use = function(self, card) + return G.STATE == G.STATES.SELECTING_HAND + end, + use = function(self, card, area, copier) + G.FUNCS.draw_from_hand_to_discard() + G.FUNCS.draw_from_discard_to_deck() + ease_discard( + math.max(0, G.GAME.round_resets.discards + G.GAME.round_bonus.discards) - G.GAME.current_round.discards_left + ) + ease_hands_played( + math.max(1, G.GAME.round_resets.hands + G.GAME.round_bonus.next_hands) - G.GAME.current_round.hands_left + ) + for k, v in pairs(G.playing_cards) do + v.ability.wheel_flipped = nil + end + G.E_MANAGER:add_event(Event({ + trigger = "immediate", + func = function() + G.STATE = G.STATES.DRAW_TO_HAND + G.deck:shuffle("cry_reboot" .. G.GAME.round_resets.ante) + G.deck:hard_set_T() + G.STATE_COMPLETE = false + return true + end, + })) + end, +} +local revert = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Revert", + key = "revert", + pos = { x = 3, y = 0 }, + config = {}, + cost = 4, + atlas = "code", + order = 4, + can_use = function(self, card) + return G.GAME.cry_revert + end, + use = function(self, card, area, copier) + G.E_MANAGER:add_event( + Event({ + trigger = "after", + delay = G.SETTINGS.GAMESPEED, + func = function() + G:delete_run() + G:start_run({ + savetext = STR_UNPACK(G.GAME.cry_revert), + }) + end, + }), + "other" + ) + end, + init = function(self) + local sr = save_run + function save_run() + if G.GAME.round_resets.ante ~= G.GAME.cry_revert_ante then + G.GAME.cry_revert_ante = G.GAME.round_resets.ante + G.GAME.cry_revert = nil + sr() + G.GAME.cry_revert = STR_PACK(G.culled_table) + sr() + end + sr() + end + end, +} +local semicolon = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Semicolon", + key = "semicolon", + pos = { + x = 0, + y = 1, + }, + config = {}, + cost = 4, + atlas = "code", + order = 32, + can_use = function(self, card) + return G.STATE == G.STATES.SELECTING_HAND and not G.GAME.blind.boss + end, + use = function(self, card, area, copier) + G.E_MANAGER:add_event( + Event({ + trigger = "immediate", + func = function() + if G.STATE ~= G.STATES.SELECTING_HAND then + return false + end + G.GAME.current_round.semicolon = true + G.STATE = G.STATES.HAND_PLAYED + G.STATE_COMPLETE = true + end_round() + return true + end, + }), + "other" + ) + end, + init = function(self) + --don't evaluate round + local gfer = G.FUNCS.evaluate_round + function G.FUNCS.evaluate_round() + if G.GAME.current_round.semicolon then + add_round_eval_row({ dollars = 0, name = "blind1", pitch = 0.95, saved = true }) + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 1.3 * math.min(G.GAME.blind.dollars + 2, 7) / 2 * 0.15 + 0.5, + func = function() + G.GAME.blind:defeat() + return true + end, + })) + delay(0.2) + add_round_eval_row({ name = "bottom", dollars = 0 }) + else + return gfer() + end + end + end, +} +local malware = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Malware", + key = "malware", + pos = { + x = 1, + y = 1, + }, + config = {}, + cost = 4, + atlas = "code", + order = 9, + can_use = function(self, card) + return #G.hand.cards > 0 + end, + use = function(self, card, area, copier) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + card:juice_up(0.3, 0.5) + return true + end, + })) + for i = 1, #G.hand.cards do + local percent = 1.15 - (i - 0.999) / (#G.hand.cards - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.cards[i]:flip() + play_sound("card1", percent) + G.hand.cards[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.hand.cards do + local CARD = G.hand.cards[i] + local percent = 0.85 + (i - 0.999) / (#G.hand.cards - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + CARD:set_edition({ + cry_glitched = true, + }) + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + end, +} +local seed = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Seed", + key = "seed", + pos = { + x = 3, + y = 1, + }, + config = {}, + cost = 4, + atlas = "code", + order = 12, + can_use = function(self, card) + --the card itself and one other card + return #G.jokers.highlighted + + #G.hand.highlighted + + #G.consumeables.highlighted + + (G.pack_cards and #G.pack_cards.highlighted or 0) + == 2 + end, + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = { key = "cry_rigged", set = "Other", vars = {} } + end, + use = function(self, card, area, copier) + if area then + area:remove_from_highlighted(card) + end + if G.jokers.highlighted[1] then + G.jokers.highlighted[1].ability.cry_rigged = true + if G.jokers.highlighted[1].config.center.key == "j_cry_googol_play" then + check_for_unlock({ type = "googol_play_rigged" }) + end + end + if G.hand.highlighted[1] then + G.hand.highlighted[1].ability.cry_rigged = true + end + if G.consumeables.highlighted[1] then + G.consumeables.highlighted[1].ability.cry_rigged = true + end + if safe_get(G, "pack_cards", "highlighted", 1) then + G.pack_cards.highlighted[1].ability.cry_rigged = true + end + end, +} +local rigged = { + dependencies = { + items = { + "c_cry_seed", + }, + }, + object_type = "Sticker", + atlas = "sticker", + pos = { x = 6, y = 1 }, + key = "cry_rigged", + no_sticker_sheet = true, + prefix_config = { key = false }, + badge_colour = HEX("14b341"), + draw = function(self, card) --don't draw shine + if not G.shared_stickers["cry_rigged2"] then + G.shared_stickers["cry_rigged2"] = + Sprite(0, 0, G.CARD_W, G.CARD_H, G.ASSET_ATLAS["cry_sticker"], { x = 5, y = 1 }) + end -- no matter how late i init this, it's always late, so i'm doing it in the damn draw function + + G.shared_stickers[self.key].role.draw_major = card + G.shared_stickers["cry_rigged2"].role.draw_major = card + + G.shared_stickers[self.key]:draw_shader("dissolve", nil, nil, nil, card.children.center) + + card.hover_tilt = card.hover_tilt / 2 -- call it spaghetti, but it's what hologram does so... + G.shared_stickers["cry_rigged2"]:draw_shader("dissolve", nil, nil, nil, card.children.center) + G.shared_stickers["cry_rigged2"]:draw_shader( + "hologram", + nil, + card.ARGS.send_to_shader, + nil, + card.children.center + ) -- this doesn't really do much tbh, but the slight effect is nice + card.hover_tilt = card.hover_tilt * 2 + end, +} +local hook = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Hook", + key = "hook", + pos = { + x = 0, + y = 4, + }, + config = {}, + cost = 4, + atlas = "code", + order = 14, + no_pool_flag = "beta_deck", + can_use = function(self, card) + return #G.jokers.highlighted == 2 + end, + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = { key = "cry_hooked", set = "Other", vars = { "hooked Joker" } } + end, + use = function(self, card, area, copier) + G.jokers.highlighted[1].ability.cry_hooked = true + G.jokers.highlighted[2].ability.cry_hooked = true + G.jokers.highlighted[1].hook_id = G.jokers.highlighted[2].sort_id + G.jokers.highlighted[2].hook_id = G.jokers.highlighted[1].sort_id + end, + init = function(self) + --HOOK:// patches (probably broken) + --[[local cj = Card.calculate_joker + function Card:calculate_joker(context) + local ret, trig = cj(self, context) + if + (ret or trig) + and self.ability.cry_hooked + and not context.post_trigger + and not context.cry_hook + and not context.retrigger_joker_check + and not context.megatrigger_check + then + context.cry_hook = true + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].sort_id == self.hook_id then + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("cry_hooked_ex"), colour = G.C.SET.Code } + ) + cj(G.jokers.cards[i], context) + --I tried a few things to get the color of messages to be green from the other joker, but they haven't worked :( + end + end + context.cry_hook = nil + end + return ret, trig + end--]] + local Cardstart_dissolveRef = Card.start_dissolve + function Card:start_dissolve(dissolve_colours, silent, dissolve_time_fac, no_juice) + if G.jokers then + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].hook_id == self.sort_id then + G.jokers.cards[i].ability.cry_hooked = false + G.jokers.cards[i].hook_id = nil + end + end + end + Cardstart_dissolveRef(self, dissolve_colours, silent, dissolve_time_fac, no_juice) + end + end, +} +local hooked = { + dependencies = { + items = { + "c_cry_hook", + }, + }, + object_type = "Sticker", + atlas = "sticker", + pos = { x = 5, y = 3 }, + no_edeck = true, + loc_vars = function(self, info_queue, card) + local var + if not card or not card.hook_id then + var = "[" .. localize("k_joker") .. "]" + else + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].sort_id == card.hook_id then + var = localize({ type = "name_text", set = "Joker", key = G.jokers.cards[i].config.center.key }) + end + end + var = var or "[no joker found - " .. (card.hook_id or "nil") .. "]" + end + return { vars = { var or "hooked Joker" } } + end, + key = "cry_hooked", + no_sticker_sheet = true, + prefix_config = { key = false }, + badge_colour = HEX("14b341"), + draw = function(self, card) --don't draw shine + G.shared_stickers[self.key].role.draw_major = card + G.shared_stickers[self.key]:draw_shader("dissolve", nil, nil, nil, card.children.center) + end, +} +local variable = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "variable", + name = "cry-Variable", + atlas = "code", + pos = { + x = 2, + y = 1, + }, + cost = 4, + order = 8, + config = { max_highlighted = 2, extra = { enteredrank = "" } }, + loc_vars = function(self, info_queue, card) + return { vars = { safe_get(card, "ability", "max_highlighted") or self.config.max_highlighted } } + end, + use = function(self, card, area, copier) + G.GAME.USING_CODE = true + G.ENTERED_RANK = "" + G.CHOOSE_RANK = UIBox({ + definition = create_UIBox_variable(card), + config = { + align = "cm", + offset = { x = 0, y = 10 }, + major = G.ROOM_ATTACH, + bond = "Weak", + instance_type = "POPUP", + }, + }) + G.CHOOSE_RANK.alignment.offset.y = 0 + G.ROOM.jiggle = G.ROOM.jiggle + 1 + G.CHOOSE_RANK:align_to_major() + end, + init = function(self) + function create_UIBox_variable(card) + G.E_MANAGER:add_event(Event({ + blockable = false, + func = function() + G.REFRESH_ALERTS = true + return true + end, + })) + local t = create_UIBox_generic_options({ + no_back = true, + colour = HEX("04200c"), + outline_colour = G.C.SECONDARY_SET.Code, + contents = { + { + n = G.UIT.R, + nodes = { + create_text_input({ + colour = G.C.SET.Code, + hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), + w = 4.5, + h = 1, + max_length = 16, + extended_corpus = true, + prompt_text = localize("cry_code_rank"), + ref_table = G, + ref_value = "ENTERED_RANK", + keyboard_offset = 1, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.SET.Code, + button = "variable_apply", + label = { localize("cry_code_apply") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "variable_apply_previous", + label = { localize("cry_code_apply_previous") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "variable_cancel", + label = { localize("cry_code_cancel") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + }, + }) + return t + end + + G.FUNCS.variable_apply_previous = function() + if G.PREVIOUS_ENTERED_RANK then + G.ENTERED_RANK = G.PREVIOUS_ENTERED_RANK or "" + end + G.FUNCS.variable_apply() + end + + G.FUNCS.variable_apply = function() + local rank_table = { + {}, + { "2", "Two", "II" }, + { "3", "Three", "III" }, + { "4", "Four", "IV" }, + { "5", "Five", "V" }, + { "6", "Six", "VI" }, + { "7", "Seven", "VII" }, + { "8", "Eight", "VIII" }, + { "9", "Nine", "IX" }, + { "10", "1O", "Ten", "X", "T" }, + { "J", "Jack" }, + { "Q", "Queen" }, + { "K", "King" }, + { "A", "Ace", "One", "1", "I" }, + { "M" }, + { "nil" }, + } + + local rank_suffix = nil + + for i, v in pairs(rank_table) do + for j, k in pairs(v) do + if string.lower(G.ENTERED_RANK) == string.lower(k) then + rank_suffix = i + end + end + end + + if rank_suffix then + G.PREVIOUS_ENTERED_RANK = G.ENTERED_RANK + G.GAME.USING_CODE = false + if rank_suffix == 15 then + check_for_unlock({ type = "cheat_used" }) + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_jolly") + card:add_to_deck() + G.jokers:emplace(card) + elseif rank_suffix == 16 then + check_for_unlock({ type = "cheat_used" }) + local card = create_card("Code", G.consumeables, nil, nil, nil, nil, "c_cry_crash") + card:add_to_deck() + G.consumeables:emplace(card) + elseif rank_suffix == 17 then + check_for_unlock({ type = "cheat_used" }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + return true + end, + })) + for i = 1, #G.hand.highlighted do + local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.highlighted[i]:flip() + play_sound("card1", percent) + G.hand.highlighted[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.hand.highlighted do + local CARD = G.hand.highlighted[i] + local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + CARD:set_ability( + G.P_CENTERS[pseudorandom_element( + G.P_CENTER_POOLS.Consumeables, + pseudoseed("cry_variable") + ).key], + true, + nil + ) + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + else + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + return true + end, + })) + for i = 1, #G.hand.highlighted do + local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.highlighted[i]:flip() + play_sound("card1", percent) + G.hand.highlighted[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.hand.highlighted do + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + local card = G.hand.highlighted[i] + local suit_prefix = string.sub(card.base.suit, 1, 1) .. "_" + local r2suffix = nil + if rank_suffix < 10 then + r2suffix = tostring(rank_suffix) + elseif rank_suffix == 10 then + r2suffix = "T" + elseif rank_suffix == 11 then + r2suffix = "J" + elseif rank_suffix == 12 then + r2suffix = "Q" + elseif rank_suffix == 13 then + r2suffix = "K" + elseif rank_suffix == 14 then + r2suffix = "A" + end + card:set_base(G.P_CARDS[suit_prefix .. r2suffix]) + return true + end, + })) + end + for i = 1, #G.hand.highlighted do + local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.highlighted[i]:flip() + play_sound("tarot2", percent, 0.6) + G.hand.highlighted[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + G.hand:unhighlight_all() + return true + end, + })) + delay(0.5) + end + G.CHOOSE_RANK:remove() + end + end + + G.FUNCS.variable_cancel = function() + G.CHOOSE_RANK:remove() + G.GAME.USING_CODE = false + end + end, +} +local class = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "class", + name = "cry-Class", + atlas = "code", + pos = { + x = 4, + y = 1, + }, + cost = 4, + order = 16, + config = { max_highlighted = 1, extra = { enteredrank = "" } }, + loc_vars = function(self, info_queue, card) + return { vars = { safe_get(card, "ability", "max_highlighted") or self.config.max_highlighted } } + end, + use = function(self, card, area, copier) + G.GAME.USING_CODE = true + G.ENTERED_ENH = "" + G.CHOOSE_ENH = UIBox({ + definition = create_UIBox_class(card), + config = { + align = "cm", + offset = { x = 0, y = 10 }, + major = G.ROOM_ATTACH, + bond = "Weak", + instance_type = "POPUP", + }, + }) + G.CHOOSE_ENH.alignment.offset.y = 0 + G.ROOM.jiggle = G.ROOM.jiggle + 1 + G.CHOOSE_ENH:align_to_major() + end, + init = function(self) + function create_UIBox_class(card) + G.E_MANAGER:add_event(Event({ + blockable = false, + func = function() + G.REFRESH_ALERTS = true + return true + end, + })) + local t = create_UIBox_generic_options({ + no_back = true, + colour = HEX("04200c"), + outline_colour = G.C.SECONDARY_SET.Code, + contents = { + { + n = G.UIT.R, + nodes = { + create_text_input({ + colour = G.C.SET.Code, + hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), + w = 4.5, + h = 1, + max_length = 16, + prompt_text = localize("cry_code_enh"), + ref_table = G, + ref_value = "ENTERED_ENH", + keyboard_offset = 1, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.SET.Code, + button = "class_apply", + label = { localize("cry_code_apply") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "class_apply_previous", + label = { localize("cry_code_apply_previous") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "class_cancel", + label = { localize("cry_code_cancel") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + }, + }) + return t + end + + G.FUNCS.class_apply_previous = function() + if G.PREVIOUS_ENTERED_ENH then + G.ENTERED_ENH = G.PREVIOUS_ENTERED_ENH or "" + end + G.FUNCS.class_apply() + end + --todo: mod support + G.FUNCS.class_apply = function() + local enh_table = { + m_bonus = { "bonus" }, + m_mult = { "mult", "red" }, + m_wild = { "wild", "suit" }, + m_glass = { "glass", "xmult" }, + m_steel = { "steel", "metal", "grey" }, + m_stone = { "stone", "chip", "chips" }, + m_gold = { "gold", "money", "yellow" }, + m_lucky = { "lucky", "rng" }, + m_cry_echo = { "echo", "retrigger", "retriggers" }, + m_cry_light = { "light" }, + ccd = { "ccd" }, + null = { "nil" }, + } + + local enh_suffix = nil + + for i, v in pairs(enh_table) do + for j, k in pairs(v) do + if string.lower(G.ENTERED_ENH) == string.lower(k) then + enh_suffix = i + end + end + end + + if enh_suffix then + G.PREVIOUS_ENTERED_ENH = G.ENTERED_ENH + G.GAME.USING_CODE = false + if enh_suffix == "ccd" then + check_for_unlock({ type = "cheat_used" }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + return true + end, + })) + for i = 1, #G.hand.highlighted do + local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.highlighted[i]:flip() + play_sound("card1", percent) + G.hand.highlighted[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.hand.highlighted do + local CARD = G.hand.highlighted[i] + local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + CARD:set_ability(get_random_consumable("cry_class"), true, nil) + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + elseif enh_suffix == "null" then + local destroyed_cards = {} + check_for_unlock({ type = "cheat_used" }) + for i = #G.hand.highlighted, 1, -1 do + local card = G.hand.highlighted[i] + if not card.ability.eternal then + destroyed_cards[#destroyed_cards + 1] = G.hand.highlighted[i] + if card.ability.name == "Glass Card" then + card:shatter() + else + card:start_dissolve(nil, i == #G.hand.highlighted) + end + end + end + if destroyed_cards[1] then + for j = 1, #G.jokers.cards do + eval_card( + G.jokers.cards[j], + { cardarea = G.jokers, remove_playing_cards = true, removed = destroyed_cards } + ) + end + end + G.CHOOSE_ENH:remove() + return + else + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("tarot1") + return true + end, + })) + for i = 1, #G.hand.highlighted do + local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.highlighted[i]:flip() + play_sound("card1", percent) + G.hand.highlighted[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + delay(0.2) + for i = 1, #G.hand.highlighted do + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + G.hand.highlighted[i]:set_ability(G.P_CENTERS[enh_suffix]) + return true + end, + })) + end + for i = 1, #G.hand.highlighted do + local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + G.hand.highlighted[i]:flip() + play_sound("tarot2", percent, 0.6) + G.hand.highlighted[i]:juice_up(0.3, 0.3) + return true + end, + })) + end + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + G.hand:unhighlight_all() + return true + end, + })) + delay(0.5) + G.CHOOSE_ENH:remove() + end + end + + G.FUNCS.class_cancel = function() + G.GAME.USING_CODE = false + G.CHOOSE_ENH:remove() + end + end, +} +local commit = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "commit", + name = "cry-Commit", + atlas = "code", + pos = { + x = 1, + y = 2, + }, + cost = 4, + order = 31, + can_use = function(self, card) + return #G.jokers.highlighted == 1 + and not G.jokers.highlighted[1].ability.eternal + and not ( + type(G.jokers.highlighted[1].config.center.rarity) == "number" + and G.jokers.highlighted[1].config.center.rarity >= 5 + ) + end, + use = function(self, card, area, copier) + local deleted_joker_key = G.jokers.highlighted[1].config.center.key + local rarity = G.jokers.highlighted[1].config.center.rarity + local legendary = nil + --please someone add a rarity api to steamodded + if rarity == 1 then + rarity = 0 + elseif rarity == 2 then + rarity = 0.9 + elseif rarity == 3 then + rarity = 0.99 + elseif rarity == 4 then + rarity = nil + legendary = true + end -- Deleted check for "cry epic" it was giving rare jokers by setting rarity to 1 + local _first_dissolve = nil + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.75, + func = function() + G.jokers.highlighted[1]:start_dissolve(nil, _first_dissolve) + _first_dissolve = true + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + play_sound("timpani") + local card = create_card("Joker", G.jokers, legendary, rarity, nil, nil, nil, "cry_commit") + card:add_to_deck() + G.jokers:emplace(card) + card:juice_up(0.3, 0.5) + if card.config.center.key == deleted_joker_key then + check_for_unlock({ type = "pr_unlock" }) + end + return true + end, + })) + end, +} +local merge = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "merge", + name = "cry-Merge", + atlas = "code", + pos = { + x = 0, + y = 2, + }, + cost = 4, + order = 21, + can_use = function(self, card) + if #G.hand.highlighted ~= 1 + (card.area == G.hand and 1 or 0) then + return false + end + if #G.consumeables.highlighted ~= 1 + (card.area == G.consumeables and 1 or 0) then + return false + end + local n = 1 + if G.hand.highlighted[1] == card then + n = 2 + end + if G.hand.highlighted[n].ability.consumeable then + return false + end + local m = 1 + if G.consumeables.highlighted[1] == card then + m = 2 + end + if + G.consumeables.highlighted[m].ability.eternal + or G.consumeables.highlighted[m].ability.set == "Unique" + or not G.consumeables.highlighted[m].ability.consumeable + then + return false + end + return true + end, + use = function(self, card, area, copier) + G.E_MANAGER:add_event(Event({ + trigger = "immediate", + func = function() + G.cry_mergearea1 = + CardArea(G.play.T.x, G.play.T.y, G.play.T.w, G.play.T.h, { type = "play", card_limit = 5 }) + G.cry_mergearea2 = + CardArea(G.play.T.x, G.play.T.y, G.play.T.w, G.play.T.h, { type = "play", card_limit = 5 }) + area:remove_from_highlighted(card) + local key = G.consumeables.highlighted[1].config.center.key + local c = G.consumeables.highlighted[1] + local CARD = G.hand.highlighted[1] + card:start_dissolve() + play_sound("card1") + G.consumeables:remove_from_highlighted(c) + CARD.area = G.cry_mergearea1 + c.area = G.cry_mergearea2 + draw_card(G.hand, G.cry_mergearea1, 1, "up", true, CARD) + draw_card(G.consumeables, G.cry_mergearea2, 1, "up", true, c) + delay(0.2) + CARD:flip() + c:flip() + delay(0.2) + local percent = 0.85 + (1 - 0.999) / (#G.hand.highlighted - 0.998) * 0.3 + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("timpani") + c:start_dissolve(nil, nil, 0) + CARD:flip() + CARD:set_ability(G.P_CENTERS[key], true, nil) + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + delay(0.5) + draw_card(G.cry_mergearea1, G.hand, 1, "up", true, CARD) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.5, + func = function() + G.cry_mergearea2:remove_card(c) + G.cry_mergearea2:remove() + G.cry_mergearea1:remove() + G.cry_mergearea1 = nil + G.cry_mergearea2 = nil + return true + end, + })) + return true + end, + })) + end, +} +local multiply = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "multiply", + name = "cry-Multiply", + atlas = "code", + order = 24, + pos = { + x = 3, + y = 2, + }, + cost = 4, + can_use = function(self, card) + return #G.jokers.highlighted == 1 + and not Card.no(G.jokers.highlighted[1], "immune_to_chemach", true) + and not Card.no(G.jokers.highlighted[1], "immutable", true) + end, + use = function(self, card, area, copier) + if not G.jokers.highlighted[1].config.cry_multiply then + G.jokers.highlighted[1].config.cry_multiply = 1 + end + G.jokers.highlighted[1].config.cry_multiply = G.jokers.highlighted[1].config.cry_multiply * 2 + cry_with_deck_effects(G.jokers.highlighted[1], function(card) + cry_misprintize(card, { min = 2, max = 2 }, nil, true) + end) + end, + init = function(self) + --reset Jokers at end of round + local er = end_round + function end_round() + er() + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.cry_multiply then + m = G.jokers.cards[i].config.cry_multiply + cry_with_deck_effects(G.jokers.cards[i], function(card) + cry_misprintize(card, { min = 1 / m, max = 1 / m }, nil, true) + end) + G.jokers.cards[i].config.cry_multiply = nil + end + end + end + end, +} +local divide = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "divide", + name = "cry-Divide", + atlas = "code", + order = 23, + pos = { + x = 2, + y = 2, + }, + cost = 4, + can_use = function(self, card) + return G.STATE == G.STATES.SHOP + end, + can_bulk_use = true, + use = function(self, card, area, copier) + for i = 1, #G.shop_jokers.cards do + local c = G.shop_jokers.cards[i] + c.misprint_cost_fac = (c.misprint_cost_fac or 1) * 0.5 + c:set_cost() + end + for i = 1, #G.shop_booster.cards do + local c = G.shop_booster.cards[i] + c.misprint_cost_fac = (c.misprint_cost_fac or 1) * 0.5 + c:set_cost() + end + for i = 1, #G.shop_vouchers.cards do + local c = G.shop_vouchers.cards[i] + c.misprint_cost_fac = (c.misprint_cost_fac or 1) * 0.5 + c:set_cost() + end + end, + bulk_use = function(self, card, area, copier, number) + for i = 1, #G.shop_jokers.cards do + local c = G.shop_jokers.cards[i] + c.misprint_cost_fac = (c.misprint_cost_fac or 1) / (2 ^ number) + c:set_cost() + end + for i = 1, #G.shop_booster.cards do + local c = G.shop_booster.cards[i] + c.misprint_cost_fac = (c.misprint_cost_fac or 1) / (2 ^ number) + c:set_cost() + end + for i = 1, #G.shop_vouchers.cards do + local c = G.shop_vouchers.cards[i] + c.misprint_cost_fac = (c.misprint_cost_fac or 1) / (2 ^ number) + c:set_cost() + end + end, +} +local delete = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "delete", + name = "cry-Delete", + atlas = "code", + order = 18, + pos = { + x = 4, + y = 2, + }, + cost = 4, + config = { cry_multiuse = 3 }, + loc_vars = function(self, info_queue, card) + return { vars = { safe_get(card, "ability", "cry_multiuse") or self.config.cry_multiuse } } + end, + can_use = function(self, card) + return G.STATE == G.STATES.SHOP + and card.area == G.consumeables + and #G.shop_jokers.highlighted + #G.shop_booster.highlighted + #G.shop_vouchers.highlighted == 1 + and G.shop_jokers.highlighted[1] ~= self + and G.shop_booster.highlighted[1] ~= self + and G.shop_vouchers.highlighted[1] ~= self + end, + use = function(self, card, area, copier) + if not G.GAME.banned_keys then + G.GAME.banned_keys = {} + end -- i have no idea if this is always initialised already tbh + if not G.GAME.cry_banned_pcards then + G.GAME.cry_banned_pcards = {} + end + local a = nil + local c = nil + local _p = nil + if G.shop_jokers.highlighted[1] then + _p = not not G.shop_jokers.highlighted[1].base.value + a = G.shop_jokers + c = G.shop_jokers.highlighted[1] + end + if G.shop_booster.highlighted[1] then + a = G.shop_booster + c = G.shop_booster.highlighted[1] + end + if G.shop_vouchers.highlighted[1] then + a = G.shop_vouchers + c = G.shop_vouchers.highlighted[1] + if c.shop_voucher then + G.GAME.current_round.voucher = nil + G.GAME.current_round.cry_voucher_edition = nil + G.GAME.current_round.cry_voucher_stickers = + { eternal = false, perishable = false, rental = false, pinned = false, banana = false } + end + end + if c.config.center.rarity == "cry_exotic" then + check_for_unlock({ type = "what_have_you_done" }) + end + + G.GAME.cry_banished_keys[c.config.center.key] = true + + -- blanket ban all boosters of a specific type + if a == G.shop_booster then + local _center = c.config.center + for k, v in pairs(G.P_CENTER_POOLS.Booster) do + if + _center.kind == v.kind + and _center.config.extra == v.config.extra + and _center.config.choose == v.config.choose + then + G.GAME.cry_banished_keys[v.key] = true + end + end + end + + if _p then + for k, v in pairs(G.P_CARDS) do + -- blanket banning ranks here, probably more useful + if v.value == c.base.value then -- and v.suit == c.base.suit + G.GAME.cry_banned_pcards[k] = true + end + end + end + c:start_dissolve() + end, + init = function(self) + -- dumb hook because i don't feel like aggressively patching get_pack to do stuff + -- very inefficient + -- maybe smods should overwrite the function and make it more targetable? + local getpackref = get_pack + function get_pack(_key, _type) + local temp_banned = copy_table(G.GAME.banned_keys) + for k, v in pairs(G.GAME.cry_banished_keys) do + G.GAME.banned_keys[k] = v + end + local ret = getpackref(_key, _type) + G.GAME.banned_keys = copy_table(temp_banned) + return ret + end + end, + -- i was gonna use this function and all but... i don't like the way it does things + -- leaving it here so nobody screams at me + --[[ + keep_on_use = function(self, card) + if card.ability.cry_multiuse <= 1 then + return false + else + card.ability.cry_multiuse = card.ability.cry_multiuse - 1 + delay(0.3) + card:juice_up() + play_sound('tarot1') + card_eval_status_text(card, 'extra', nil, nil, nil, {message = card.ability.cry_multiuse, colour = G.C.SECONDARY_SET.Code}) + return true + end + end, + ]] +} +local spaghetti = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "spaghetti", + name = "cry-Spaghetti", + atlas = "code", + order = 13, + pos = { + x = 5, + y = 2, + }, + cost = 4, + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_glitched + info_queue[#info_queue + 1] = { set = "Other", key = "food_jokers" } + end, + can_use = function(self, card) + return true + end, + use = function(self, card, area, copier) + local card = create_card("Food", G.jokers, nil, nil, nil, nil, nil, "cry_spaghetti") + card:set_edition({ + cry_glitched = true, + }) + card:add_to_deck() + G.jokers:emplace(card) + end, +} +local machinecode = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Machine Code", + key = "machinecode", + pos = { x = 0, y = 3 }, + cost = 3, + atlas = "code", + order = 19, + can_use = function(self, card) + return true + end, + can_bulk_use = true, + loc_vars = function(self, info_queue, center) + return { + main_start = { + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + randomchar(codechars6), + }, + } + end, + use = function(self, card, area, copier) + local card = create_card( + "Consumeables", + G.consumables, + nil, + nil, + nil, + nil, + get_random_consumable("cry_machinecode", nil, "c_cry_machinecode").key, + c_cry_machinecode + ) + card:set_edition({ cry_glitched = true }) + card:add_to_deck() + G.consumeables:emplace(card) + end, + bulk_use = function(self, card, area, copier, number) + local a = {} + local b + for i = 1, number do + b = get_random_consumable("cry_machinecode", nil, "c_cry_machinecode") + a[b] = (a[b] or 0) + 1 + end + for k, v in pairs(a) do + local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, k.key) + card:set_edition({ cry_glitched = true }) + card:add_to_deck() + if Incantation then + card:setQty(v) + end + G.consumeables:emplace(card) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + func = function() + a = nil + return true + end, + })) + end, + init = function(self) + --Machine Code rendering + codechars2 = { "!", "'", ",", ".", ":", ";", "i", "l", "|", "¡", "¦", "ì", "í", "ı" } + codechars4 = { " ", "(", ")", "[", "]", "j", "î", "ī", "ĭ" } + codechars5 = { '"', "*", "<", ">", "{", "}", "¨", "°", "º", "×" } + codechars6 = { + "$", + "%", + "+", + "-", + "/", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "=", + "?", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "N", + "O", + "P", + "R", + "S", + "T", + "U", + "V", + "Y", + "Z", + "\\", + "^", + "_", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "k", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "y", + "z", + "~", + "¢", + "¥", + "§", + "¬", + "±", + "¿", + "À", + "Á", + "Â", + "Ã", + "Ä", + "Å", + "Ç", + "È", + "É", + "Ê", + "Ë", + "Ì", + "Í", + "Î", + "Ï", + "Ñ", + "Ò", + "Ó", + "Ô", + "Õ", + "Ö", + "Ù", + "Ú", + "Û", + "Ü", + "Ý", + "Þ", + "à", + "á", + "â", + "ã", + "ä", + "å", + "ç", + "è", + "é", + "ê", + "ë", + "ï", + "ñ", + "ò", + "ó", + "ô", + "õ", + "ö", + "÷", + "ù", + "ú", + "û", + "ü", + "ý", + "þ", + "ÿ", + "Ā", + "ā", + "Ă", + "ă", + "Ć", + "ć", + "Ē", + "ē", + "Ĕ", + "ĕ", + "Ğ", + "ğ", + "Ī", + "Ĭ", + "İ", + "ł", + "Ń", + "ń", + "Ō", + "ō", + "Ŏ", + "ŏ", + "Ś", + "ś", + "Ş", + "ş", + "Ū", + "ū", + "Ŭ", + "ŭ", + "Ÿ", + "Ź", + "ź", + "Ż", + "ż", + "Ǔ", + "ǔ", + "μ", + } + codechars7 = { "#", "Q", "X", "x", "£", "ß", "Ą", "ą", "Đ", "đ", "Ę", "ę" } + codechars8 = { "M", "W", "m", "w", "¤", "¶", "Ø", "ø", "Ł" } + codechars9 = { "&", "@", "©", "«", "®", "»" } + codechars10 = { "Æ", "æ", "Œ", "œ" } + function randomchar(arr) + return { + n = G.UIT.O, + config = { + object = DynaText({ + string = arr, + colours = { G.C.BLACK }, + pop_in_rate = 9999999, + silent = true, + random_element = true, + pop_delay = 0.1, + scale = 0.4, + min_cycle_time = 0, + }), + }, + } + end + end, +} +local run = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + name = "cry-Run", + key = "run", + pos = { x = 5, y = 0 }, + cost = 3, + atlas = "code", + order = 6, + can_use = function(self, card) + return safe_get(G.GAME, "blind", "in_blind") + end, + can_bulk_use = true, + use = function(self, card, area, copier) + G.cry_runarea = CardArea( + G.discard.T.x, + G.discard.T.y, + G.discard.T.w, + G.discard.T.h, + { type = "discard", card_limit = 1e100 } + ) + local hand_count = #G.hand.cards + for i = 1, hand_count do + draw_card(G.hand, G.cry_runarea, i * 100 / hand_count, "down", nil, nil, 0.07) + end + G.E_MANAGER:add_event(Event({ + trigger = "immediate", + func = function() + G.GAME.current_round.jokers_purchased = 0 + G.STATE = G.STATES.SHOP + G.GAME.USING_CODE = true + G.GAME.USING_RUN = true + G.GAME.RUN_STATE_COMPLETE = 0 + G.GAME.shop_free = nil + G.GAME.shop_d6ed = nil + G.STATE_COMPLETE = false + G.GAME.current_round.used_packs = {} + return true + end, + })) + end, + init = function(self) + local gfts = G.FUNCS.toggle_shop + G.FUNCS.toggle_shop = function(e) + gfts(e) + if G.GAME.USING_RUN then + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.5, + func = function() + G.GAME.USING_RUN = false + G.GAME.USING_CODE = false + return true + end, + })) + local hand_count = #G.cry_runarea.cards + for i = 1, hand_count do + draw_card(G.cry_runarea, G.hand, i * 100 / hand_count, "up", true) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.5, + func = function() + G.GAME.current_round.used_packs = {} + G.cry_runarea:remove() + G.cry_runarea = nil + G.STATE = G.STATES.SELECTING_HAND + return true + end, + })) + end + end + local gus = Game.update_shop + function Game:update_shop(dt) + gus(self, dt) + if G.GAME.USING_RUN and G.STATE_COMPLETE and G.GAME.RUN_STATE_COMPLETE < 60 then + G.shop.alignment.offset.y = -5.3 + G.GAME.RUN_STATE_COMPLETE = G.GAME.RUN_STATE_COMPLETE + 1 + end + end + local guis = G.UIDEF.shop + function G.UIDEF.shop() + local ret = guis() + if G.GAME.USING_RUN then + G.SHOP_SIGN:remove() + G.SHOP_SIGN = { + remove = function() + return true + end, + alignment = { offset = { y = 0 } }, + } + end + return ret + end + end, +} +local exploit = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "exploit", + name = "cry-Exploit", + atlas = "code", + pos = { + x = 1, + y = 3, + }, + cost = 4, + order = 28, + config = { cry_multiuse = 2, extra = { enteredhand = "" } }, -- i don't think this ever uses config...? + loc_vars = function(self, info_queue, card) + return { vars = { safe_get(card, "ability", "cry_multiuse") or self.config.cry_multiuse } } + end, + can_use = function(self, card) + return true + end, + use = function(self, card, area, copier) + G.GAME.USING_CODE = true + G.ENTERED_HAND = "" + G.CHOOSE_HAND = UIBox({ + definition = create_UIBox_exploit(card), + config = { + align = "cm", + offset = { x = 0, y = 10 }, + major = G.ROOM_ATTACH, + bond = "Weak", + instance_type = "POPUP", + }, + }) + G.CHOOSE_HAND.alignment.offset.y = 0 + G.ROOM.jiggle = G.ROOM.jiggle + 1 + G.CHOOSE_HAND:align_to_major() + end, + init = function(self) + function create_UIBox_exploit(card) + G.E_MANAGER:add_event(Event({ + blockable = false, + func = function() + G.REFRESH_ALERTS = true + return true + end, + })) + local t = create_UIBox_generic_options({ + no_back = true, + colour = HEX("04200c"), + outline_colour = G.C.SECONDARY_SET.Code, + contents = { + { + n = G.UIT.R, + nodes = { + create_text_input({ + colour = G.C.SET.Code, + hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), + w = 4.5, + h = 1, + max_length = 24, + extended_corpus = true, + prompt_text = localize("cry_code_hand"), + ref_table = G, + ref_value = "ENTERED_HAND", + keyboard_offset = 1, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.SET.Code, + button = "exploit_apply", + label = { localize("cry_code_exploit") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "exploit_apply_previous", + label = { localize("cry_code_exploit_previous") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "exploit_cancel", + label = { localize("cry_code_cancel") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + }, + }) + return t + end + G.FUNCS.exploit_apply_previous = function() + if G.PREVIOUS_ENTERED_HAND then + G.ENTERED_HAND = G.PREVIOUS_ENTERED_HAND or "" + end + G.FUNCS.exploit_apply() + end + G.FUNCS.exploit_apply = function() + local hand_table = { + ["High Card"] = { "high card", "high", "1oak", "1 of a kind", "haha one" }, + ["Pair"] = { "pair", "2oak", "2 of a kind", "m" }, + ["Two Pair"] = { "two pair", "2 pair", "mm" }, + ["Three of a Kind"] = { "three of a kind", "3 of a kind", "3oak", "trips", "triangle" }, + ["Straight"] = { "straight", "lesbian", "gay", "bisexual", "asexual" }, + ["Flush"] = { "flush", "skibidi", "toilet", "floosh" }, + ["Full House"] = { + "full house", + "full", + "that 70s show", + "modern family", + "family matters", + "the middle", + }, + ["Four of a Kind"] = { + "four of a kind", + "4 of a kind", + "4oak", + "22oakoak", + "quads", + "four to the floor", + }, + ["Straight Flush"] = { "straight flush", "strush", "slush", "slushie", "slushy" }, + ["Five of a Kind"] = { "five of a kind", "5 of a kind", "5oak", "quints" }, + ["Flush House"] = { "flush house", "flouse", "outhouse" }, + ["Flush Five"] = { "flush five", "fish", "you know what that means", "five of a flush" }, + ["cry_Bulwark"] = { "bulwark", "flush rock", "stoned", "stone flush", "flush stone" }, + ["cry_Clusterfuck"] = { "clusterfuck", "fuck", "wtf" }, + ["cry_UltPair"] = { "ultimate pair", "ultpair", "ult pair", "pairpairpair" }, + ["cry_WholeDeck"] = { "the entire fucking deck", "deck", "tefd", "fifty-two", "you are fuck deck" }, + } + local current_hand = nil + for k, v in pairs(SMODS.PokerHands) do + local index = v.key + local current_name = G.localization.misc.poker_hands[index] + if not hand_table[v.key] then + hand_table[v.key] = { current_name } + end + end + for i, v in pairs(hand_table) do + for j, k in pairs(v) do + if string.lower(G.ENTERED_HAND) == string.lower(k) then + current_hand = i + end + end + end + if current_hand and G.GAME.hands[current_hand].visible then + G.PREVIOUS_ENTERED_HAND = G.ENTERED_HAND + G.GAME.cry_exploit_override = current_hand + G.FUNCS.exploit_cancel() + return + end + end + G.FUNCS.exploit_cancel = function() + G.CHOOSE_HAND:remove() + G.GAME.USING_CODE = false + end + -- mess with poker hand evaluation + local evaluate_poker_hand_ref = evaluate_poker_hand + function evaluate_poker_hand(hand) + local results = evaluate_poker_hand_ref(hand) + if G.GAME.cry_exploit_override then + if not results[G.GAME.cry_exploit_override][1] then + for _, v in ipairs(G.handlist) do + if results[v][1] then + results[G.GAME.cry_exploit_override] = results[v] + break + end + end + end + end + return results + end + local htuis = G.FUNCS.hand_text_UI_set + G.FUNCS.hand_text_UI_set = function(e) + htuis(e) + if G.GAME.cry_exploit_override then + e.config.object.colours = { G.C.SECONDARY_SET.Code } + else + e.config.object.colours = { G.C.UI.TEXT_LIGHT } + end + e.config.object:update_text() + end + end, +} +local oboe = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "oboe", + name = "cry-oboe", + atlas = "code", + order = 10, + config = { extra = { choices = 1 } }, + pos = { + x = 2, + y = 3, + }, + cost = 4, + can_bulk_use = true, + loc_vars = function(self, info_queue, card) + if not card then + return { vars = { self.config.extra.choices, (safe_get(G.GAME, "cry_oboe") or 0) } } + end + return { vars = { card.ability.extra.choices, (safe_get(G.GAME, "cry_oboe") or 0) } } + end, + can_use = function(self, card) + return true + end, + use = function(self, card, area, copier) + G.GAME.cry_oboe = (G.GAME.cry_oboe or 0) + card.ability.extra.choices + end, + bulk_use = function(self, card, area, copier, number) + G.GAME.cry_oboe = (G.GAME.cry_oboe or 0) + (card.ability.extra.choices * number) + end, +} +local rework = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "rework", + name = "cry-Rework", + atlas = "code", + order = 25, + no_pool_flag = "beta_deck", + pos = { + x = 3, + y = 3, + }, + cost = 4, + loc_vars = function(self, info_queue) + info_queue[#info_queue + 1] = + { set = "Tag", key = "tag_cry_rework", specific_vars = { "[edition]", "[joker]" } } + return { vars = {} } + end, + can_use = function(self, card) + return #G.jokers.highlighted == 1 + and not G.jokers.highlighted[1].ability.eternal + and G.jokers.highlighted[1].ability.name ~= "cry-meteor" + and G.jokers.highlighted[1].ability.name ~= "cry-exoplanet" + and G.jokers.highlighted[1].ability.name ~= "cry-stardust" + and G.jokers.highlighted[1].config.center.rarity ~= "cry_cursed" + and (G.jokers.highlighted[1].ability.name ~= "Diet Cola" or Card.get_gameset(card) == "madness") + end, + use = function(self, card, area, copier) + local jkr = G.jokers.highlighted[1] + local found_index = 1 + if jkr.edition then + for i, v in ipairs(G.P_CENTER_POOLS.Edition) do + if v.key == jkr.edition.key then + found_index = i + break + end + end + end + found_index = found_index + 1 + if found_index > #G.P_CENTER_POOLS.Edition then + found_index = found_index - #G.P_CENTER_POOLS.Edition + end + local tag = Tag("tag_cry_rework") + if not tag.ability then + tag.ability = {} + end + if jkr.config.center.key == "c_base" then + jkr.config.center.key = "j_scholar" + end + tag.ability.rework_key = jkr.config.center.key + tag.ability.rework_edition = G.P_CENTER_POOLS.Edition[found_index].key + add_tag(tag) + --SMODS.Tags.tag_cry_rework.apply(tag, {type = "store_joker_create"}) + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.75, + func = function() + jkr:start_dissolve() + return true + end, + })) + end, +} +local rework_tag = { + dependencies = { + items = { + "c_cry_rework", + }, + }, + object_type = "Tag", + atlas = "tag_cry", + name = "cry-Rework Tag", + order = 19, + pos = { x = 0, y = 3 }, + config = { type = "store_joker_create" }, + key = "rework", + ability = { rework_edition = nil, rework_key = nil }, + loc_vars = function(self, info_queue, tag) + local function p(w) + r = "" + local vowels = { "a", "e", "i", "o", "u" } + for i, v in ipairs(vowels) do + if string.sub(string.lower(w), 1, 1) == v then + r = "n" + break + end + end + return r + end + local ed = safe_get(tag, "ability", "rework_edition") + and localize({ type = "name_text", set = "Edition", key = tag.ability.rework_edition }) + or "[" .. string.lower(localize("k_edition")) .. "]" + return { + vars = { + ed, + safe_get(tag, "ability", "rework_key") + and localize({ type = "name_text", set = "Joker", key = tag.ability.rework_key }) + or "[" .. string.lower(localize("k_joker")) .. "]", + string.sub(ed, 1, 1) ~= "[" and p(ed) or "n", + }, + } + end, + apply = function(self, tag, context) + if context.type == "store_joker_create" then + local card = create_card("Joker", context.area, nil, nil, nil, nil, (tag.ability.rework_key or "j_scholar")) + create_shop_card_ui(card, "Joker", context.area) + card:set_edition((tag.ability.rework_edition or "e_foil"), true, nil, true) + card.states.visible = false + tag:yep("+", G.C.FILTER, function() + card:start_materialize() + return true + end) + tag.triggered = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.5, + func = function() + save_run() --fixes savescum bugs hopefully? + return true + end, + })) + return card + end + end, + in_pool = function() + return false + end, +} +local patch = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "patch", + name = "cry-patch", + atlas = "code", + order = 26, + config = {}, + pos = { + x = 1, + y = 4, + }, + cost = 4, + can_bulk_use = true, + loc_vars = function(self, info_queue, card) + return {} + end, + can_use = function(self, card) + return true + end, + use = function(self, card, area, copier) + for i = 1, #G.hand.cards do + local CARD = G.hand.cards[i] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + return true + end, + })) + end + for i = 1, #G.jokers.cards do + local CARD = G.jokers.cards[i] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + return true + end, + })) + end + for i = 1, #G.consumeables.cards do + local CARD = G.consumeables.cards[i] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + CARD:flip() + return true + end, + })) + end + delay(0.2) + for i = 1, #G.hand.cards do + local CARD = G.hand.cards[i] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + if CARD.facing == "back" then + CARD:flip() + end + CARD.debuff = false + CARD.cry_debuff_immune = true + CARD.ability.perishable = nil + CARD.pinned = nil + CARD:set_rental(nil) + if not CARD.sob then + CARD:set_eternal(nil) + end + CARD.ability.banana = nil + if Cryptid.enabled["Spooky"] then + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) + end + play_sound("tarot2", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + for i = 1, #G.jokers.cards do + local CARD = G.jokers.cards[i] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + if CARD.facing == "back" then + CARD:flip() + end + CARD.debuff = false + CARD.ability.perishable = nil + CARD.pinned = nil + CARD:set_rental(nil) + if not CARD.sob then + CARD:set_eternal(nil) + end + CARD.ability.banana = nil + if Cryptid.enabled["Spooky"] then + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) + end + play_sound("card1", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + for i = 1, #G.consumeables.cards do + local CARD = G.consumeables.cards[i] + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.15, + func = function() + if CARD.facing == "back" then + CARD:flip() + end + CARD.debuff = false + CARD.ability.perishable = nil + CARD.pinned = nil + CARD:set_rental(nil) + if not CARD.sob then + CARD:set_eternal(nil) + end + CARD.ability.banana = nil + if Cryptid.enabled["Spooky"] then + CARD.ability.cry_possessed = nil + SMODS.Stickers.cry_flickering:apply(CARD, nil) + end + play_sound("card1", percent) + CARD:juice_up(0.3, 0.3) + return true + end, + })) + end + end, +} +local ctrl_v = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "ctrl_v", + name = "cry-Ctrl-V", + atlas = "code", + order = 27, + config = {}, + pos = { + x = 2, + y = 4, + }, + cost = 4, + can_bulk_use = true, + loc_vars = function(self, info_queue, card) + return {} + end, + can_use = function(self, card) + return #G.hand.highlighted + #G.consumeables.highlighted == 2 + end, + use = function(self, card, area, copier) + if area then + area:remove_from_highlighted(card) + end + if G.hand.highlighted[1] then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(G.hand.highlighted[1]) + card:add_to_deck() + table.insert(G.playing_cards, card) + G.hand:emplace(card) + return true + end, + })) + end + if G.consumeables.highlighted[1] then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(G.consumeables.highlighted[1]) + if card.ability.name and card.ability.name == "cry-Chambered" then + card.ability.extra.num_copies = 1 + end + card:add_to_deck() + if Incantation then + card:setQty(1) + end + G.consumeables:emplace(card) + return true + end, + })) + end + end, + bulk_use = function(self, card, area, copier, number) + for i = 1, number do + if area then + area:remove_from_highlighted(card) + end + if G.hand.highlighted[1] then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(G.hand.highlighted[1]) + card:add_to_deck() + G.hand:emplace(card) + return true + end, + })) + end + if G.consumeables.highlighted[1] then + G.E_MANAGER:add_event(Event({ + func = function() + local card = copy_card(G.consumeables.highlighted[1]) + if card.ability.name and card.ability.name == "cry-Chambered" then + card.ability.extra.num_copies = 1 + end + card:add_to_deck() + if Incantation then + card:setQty(1) + end + G.consumeables:emplace(card) + return true + end, + })) + end + end + end, +} +local inst = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "inst", + name = "cry-Inst", + atlas = "code", + order = 28, + config = {}, + pos = { + x = 3, + y = 4, + }, + cost = 4, + can_bulk_use = true, + loc_vars = function(self, info_queue, card) + return {} + end, + can_use = function(self, card) + local selected_cards = {} + for i = 1, #G.hand.highlighted do + if G.hand.highlighted[i] ~= card then + selected_cards[#selected_cards + 1] = G.hand.highlighted[i] + end + end + return #selected_cards == 1 + end, + use = function(self, card, area, copier) + local same = 0 + for i = 1, #G.deck.cards do + if G.deck.cards[i].base.value == G.hand.highlighted[1].base.value then + same = i + draw_card(G.deck, G.hand, nil, nil, false, G.deck.cards[i]) + break + end + end + for i = 1, #G.deck.cards do + if G.deck.cards[i].base.suit == G.hand.highlighted[1].base.suit and i ~= same then + draw_card(G.deck, G.hand, nil, nil, false, G.deck.cards[i]) + break + end + end + end, + bulk_use = function(self, card, area, copier, number) + for j = 1, number do + local same = 0 + for i = 1, #G.deck.cards do + if G.deck.cards[i].base.value == G.hand.highlighted[1].base.value then + same = i + draw_card(G.deck, G.hand, nil, nil, false, G.deck.cards[i]) + break + end + end + for i = 1, #G.deck.cards do + if G.deck.cards[i].base.suit == G.hand.highlighted[1].base.suit and i ~= same then + draw_card(G.deck, G.hand, nil, nil, false, G.deck.cards[i]) + break + end + end + end + end, +} +local alttab = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Code", + key = "alttab", + name = "cry-Alttab", + atlas = "code", + order = 28, + config = {}, + pos = { + x = 4, + y = 4, + }, + cost = 4, + can_bulk_use = true, + loc_vars = function(self, info_queue, card) + local ret = localize("k_none") + if safe_get(G.GAME, "blind", "in_blind") then + if G.GAME.blind:get_type() == "Small" then + ret = localize({ type = "name_text", key = G.GAME.round_resets.blind_tags.Small, set = "Tag" }) + elseif G.GAME.blind:get_type() == "Big" then + ret = localize({ type = "name_text", key = G.GAME.round_resets.blind_tags.Big, set = "Tag" }) + elseif G.GAME.blind:get_type() == "Boss" then + ret = "???" + end + end + return { vars = { ret } } + end, + can_use = function(self, card) + return safe_get(G.GAME, "blind", "in_blind") + end, + use = function(self, card, area, copier) + local used_consumable = copier or card + delay(0.4) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("tarot1") + local tag = nil + local type = G.GAME.blind:get_type() + if type == "Boss" then + tag = Tag(get_next_tag_key()) + else + tag = Tag(G.GAME.round_resets.blind_tags[type]) + end + add_tag(tag) + used_consumable:juice_up(0.8, 0.5) + return true + end, + })) + delay(1.2) + end, + bulk_use = function(self, card, area, copier, number) + local used_consumable = copier or card + delay(0.4) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + for j = 1, number do + play_sound("tarot1") + local tag = nil + local type = G.GAME.blind:get_type() + if type == "Boss" then + tag = Tag(get_next_tag_key()) + else + tag = Tag(G.GAME.round_resets.blind_tags[type]) + end + add_tag(tag) + used_consumable:juice_up(0.8, 0.5) + delay(0.1) + end + return true + end, + })) + delay(1.1) + end, +} +local automaton = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Tarot", + name = "cry-Automaton", + key = "automaton", + pos = { x = 5, y = 1 }, + config = { create = 1 }, + order = 5, + atlas = "code", + loc_vars = function(self, info_queue, card) + return { vars = { safe_get(card, "ability", "create") or self.config.create } } + end, + can_use = function(self, card) + return #G.consumeables.cards < G.consumeables.config.card_limit or card.area == G.consumeables + end, + use = function(self, card, area, copier) + for i = 1, math.min(card.ability.consumeable.create, G.consumeables.config.card_limit - #G.consumeables.cards) do + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + if G.consumeables.config.card_limit > #G.consumeables.cards then + play_sound("timpani") + local _card = create_card("Code", G.consumeables, nil, nil, nil, nil, nil, "cry_automaton") + _card:add_to_deck() + G.consumeables:emplace(_card) + card:juice_up(0.3, 0.5) + end + return true + end, + })) + end + delay(0.6) + end, +} +local green_seal = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Seal", + name = "cry-Green-Seal", + key = "green", + badge_colour = HEX("12f254"), --same as code cards + atlas = "cry_misc", + pos = { x = 1, y = 2 }, + + calculate = function(self, card, context) + if context.cardarea == "unscored" and context.main_scoring then + for k, v in ipairs(context.scoring_hand) do + v.cry_green_incompat = true + end + for k, v in ipairs(context.full_hand) do + if not v.cry_green_incompat then + G.E_MANAGER:add_event(Event({ + func = function() + if G.consumeables.config.card_limit > #G.consumeables.cards then + local c = create_card("Code", G.consumeables, nil, nil, nil, nil, nil, "cry_green_seal") + c:add_to_deck() + G.consumeables:emplace(c) + v:juice_up() + end + return true + end, + })) + end + end + for k, v in ipairs(context.scoring_hand) do + v.cry_green_incompat = nil + end + end + end, +} +local source = { + dependencies = { + items = { + "cry_green", + }, + }, + object_type = "Consumable", + set = "Spectral", + name = "cry-Source", + order = 9, + key = "source", + config = { + -- This will add a tooltip. + mod_conv = "cry_green_seal", + -- Tooltip args + max_highlighted = 1, + }, + loc_vars = function(self, info_queue, center) + -- Handle creating a tooltip with set args. + info_queue[#info_queue + 1] = { set = "Other", key = "cry_green_seal" } + return { vars = { center.ability.max_highlighted } } + end, + cost = 4, + atlas = "atlasnotjokers", + pos = { x = 2, y = 4 }, + use = function(self, card, area, copier) --Good enough + for i = 1, #G.hand.highlighted do + local highlighted = G.hand.highlighted[i] + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + highlighted:juice_up(0.3, 0.5) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + if highlighted then + highlighted:set_seal("cry_green") + end + return true + end, + })) + delay(0.5) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + G.hand:unhighlight_all() + return true + end, + })) + end + end, +} +local pointer = { + dependencies = { + items = { + "set_cry_code", + }, + }, + object_type = "Consumable", + set = "Spectral", + name = "cry-Pointer", + key = "pointer", + pos = { x = 4, y = 3 }, + hidden = true, + soul_set = "Code", + order = 41, + atlas = "code", + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + return { vars = { (SMODS.Mods["jen"] or {}).can_load and "and OMEGA consumables " or "" } } + end, + use = function(self, card, area, copier) + G.GAME.USING_CODE = true + G.GAME.USING_POINTER = true + G.ENTERED_CARD = "" + G.CHOOSE_CARD = UIBox({ + definition = create_UIBox_pointer(card), + config = { + align = "cm", + offset = { x = 0, y = 10 }, + major = G.ROOM_ATTACH, + bond = "Weak", + instance_type = "POPUP", + }, + }) + G.CHOOSE_CARD.alignment.offset.y = 0 + G.ROOM.jiggle = G.ROOM.jiggle + 1 + G.CHOOSE_CARD:align_to_major() + end, + init = function(self) + function create_UIBox_pointer(card) + G.E_MANAGER:add_event(Event({ + blockable = false, + func = function() + G.REFRESH_ALERTS = true + return true + end, + })) + local t = create_UIBox_generic_options({ + no_back = true, + colour = HEX("04200c"), + outline_colour = G.C.SECONDARY_SET.Code, + contents = { + { + n = G.UIT.R, + nodes = { + create_text_input({ + colour = G.C.SET.Code, + hooked_colour = darken(copy_table(G.C.SET.Code), 0.3), + w = 4.5, + h = 1, + max_length = 100, + extended_corpus = true, + prompt_text = localize("cry_code_enter_card"), + ref_table = G, + ref_value = "ENTERED_CARD", + keyboard_offset = 1, + }), + }, + }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + UIBox_button({ + colour = G.C.SET.Code, + button = "pointer_apply", + label = { localize("cry_code_create") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + UIBox_button({ + colour = G.C.SET.Code, + button = "your_collection", + label = { localize("b_collection_cap") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "pointer_apply_previous", + label = { localize("cry_code_create_previous") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + UIBox_button({ + colour = G.C.RED, + button = "pointer_cancel", + label = { localize("cry_code_cancel") }, + minw = 4.5, + focus_args = { snap_to = true }, + }), + }, + }, + }, + }) + return t + end + G.FUNCS.pointer_cancel = function() + G.CHOOSE_CARD:remove() + G.GAME.USING_CODE = false + G.GAME.USING_POINTER = false + end + G.FUNCS.pointer_apply_previous = function() + if G.PREVIOUS_ENTERED_CARD then + G.ENTERED_CARD = G.PREVIOUS_ENTERED_CARD or "" + end + G.FUNCS.pointer_apply() + end + local aliases = { + jimbo = "joker", + ["gary mccready"] = "joker", + greedy = "greedy joker", + lusty = "lusty joker", + wrathful = "wrathful joker", + gluttonous = "gluttonous joker", + jolly = "jolly joker", + zany = "zany joker", + mad = "mad joker", + crazy = "crazy joker", + droll = "droll joker", + sly = "sly joker", + wily = "wily joker", + clever = "clever joker", + devious = "devious joker", + crafty = "crafty joker", + half = "half joker", + stencil = "joker stencil", + dagger = "ceremonial dagger", + chaos = "chaos the clown", + fib = "fibonacci", + scary = "scary face", + abstract = "abstract joker", + delayedgrat = "delayed gratification", + banana = "gros michel", + steven = "even steven", + todd = "odd todd", + bus = "ride the bus", + faceless = "faceless joker", + todo = "to do list", + ["to-do"] = "to do list", + square = "square joker", + seance = "séance", + riffraff = "riff-raff", + cloudnine = "cloud 9", + trousers = "spare trousers", + ancient = "ancient joker", + mrbones = "mr. bones", + smeared = "smeared joker", + wee = "wee joker", + oopsall6s = "oops! all 6s", + all6s = "oops! all 6s", + oa6 = "oops! all 6s", + idol = "the idol", + duo = "the duo", + trio = "the trio", + family = "the family", + order = "the order", + tribe = "the tribe", + invisible = "invisible joker", + driverslicense = "driver's license", + burnt = "burnt joker", + caino = "canio", + house = "happy house", + queensgambit = "queen's gambit", + weefib = "weebonacci", + interest = "compound interest", + whip = "the whip", + triplet = "triplet rhythm", + pepper = "chili pepper", + krusty = "krusty the clown", + blurred = "blurred joker", + gofp = "garden of forking paths", + lutn = "light up the night", + nsnm = "no sound, no memory", + nosoundnomemory = "no sound, no memory", + lath = "...like antennas to heaven", + likeantennastoheaven = "...like antennas to heaven", + consumeable = "consume-able", + error = "j_cry_error", + ap = "ap joker", + rng = "rnjoker", + filler = "the filler", + duos = "the duos", + home = "the home", + nuts = "the nuts", + quintet = "the quintet", + unity = "the unity", + swarm = "the swarm", + crypto = "crypto coin", + googol = "googol play card", + googolplay = "googol play card", + google = "googol play card", + googleplay = "googol play card", + googleplaycard = "googol play card", + nostalgicgoogol = "nostalgic googol play card", + nostalgicgoogolplay = "nostalgic googol play card", + nostalgicgoogle = "nostalgic googol play card", + nostalgicgoogleplay = "nostalgic googol play card", + nostalgicgoogleplaycard = "nostalgic googol play card", + oldgoogol = "nostalgic googol play card", + oldgoogolplay = "nostalgic googol play card", + oldgoogle = "nostalgic googol play card", + oldgoogleplay = "nostalgic googol play card", + oldgoogleplaycard = "nostalgic googol play card", + localthunk = "supercell", + ["1fa"] = "one for all", + crust = "crustulum", + deathstar = "stella mortis", + ["jolly?"] = "jolly joker?", + scrabble = "scrabble tile", + ["13"] = "tredecim", + ["overstock+"] = "overstock plus", + directorscut = "director's cut", + ["3rs"] = "the 3 rs", + fool = "the fool", + magician = "the magician", + priestess = "the high priestess", + highpriestess = "the high priestess", + empress = "the empress", + emperor = "the emperor", + hierophant = "the hierophant", + lovers = "the lovers", + chariot = "the chariot", + hermit = "the hermit", + wheeloffortune = "the wheel of fortune", + hangedman = "the hanged man", + devil = "the devil", + tower = "the tower", + star = "the star", + moon = "the moon", + sun = "the sun", + world = "the world", + automaton = "the automaton", + eclipse = "c_cry_eclipse", + x = "planet x", + X = "planet x", + pointer = "pointer://", + payload = "://payload", + reboot = "://reboot", + revert = "://revert", + crash = "://crash", + semicolon = ";//", + [";"] = ";//", + malware = "://malware", + seed = "://seed", + variable = "://variable", + class = "://class", + commit = "://commit", + merge = "://merge", + multiply = "://multiply", + divide = "://divide", + delete = "://delete", + machinecode = "://machinecode", + run = "://run", + exploit = "://exploit", + offbyone = "://offbyone", + rework = "://rework", + patch = "://patch", + ctrlv = "://ctrl+v", + ["ctrl+v"] = "://ctrl+v", + ["ctrl v"] = "://ctrl+v", + instantiate = "://INSTANTIATE", + inst = "://INSTANTIATE", + spaghetti = "://spaghetti", + topuptag = "top-up tag", + gamblerstag = "gambler's tag", + hook = "hook://", + ox = "the ox", + wall = "the wall", + wheel = "the wheel", + arm = "the arm", + club = "the club", + fish = "the fish", + psychic = "the psychic", + goad = "the goad", + water = "the water", + window = "the window", + manacle = "the manacle", + eye = "the eye", + mouth = "the mouth", + plant = "the plant", + serpent = "the serpent", + pillar = "the pillar", + needle = "the needle", + head = "the head", + tooth = "the tooth", + flint = "the flint", + mark = "the mark", + oldox = "nostalgic ox", + oldhouse = "nostalgic house", + oldarm = "nostalgic arm", + oldfish = "nostalgic fish", + oldmanacle = "nostalgic manacle", + oldserpent = "nostalgic serpent", + oldpillar = "nostalgic pillar", + oldflint = "nostalgic flint", + oldmark = "nostalgic mark", + tax = "the tax", + trick = "the trick", + joke = "the joke", + hammer = "the hammer", + box = "the box", + windmill = "the windmill", + clock = "the clock", + code = "code joker", + copypaste = "copy/paste", + translucent = "translucent joker", + circulus = "circulus pistoris", + macabre = "macabre joker", + -- Jen's Almanac aliases + freddy = "freddy snowshoe", + paupovlin = "paupovlin revere", + poppin = "paupovlin revere", + jen = "jen walter", + dandy = 'Dandicus "Dandy" Dancifer', + --should I add "reverse ___" prefixes for the reverse tarots? + survivor = "the survivor", + monk = "the monk", + hunter = "the hunter", + gourmand = "the gourmand", + saint = "the saint", + genius = "the genius", + scientist = "the scientist", + peasant = "the peasant", + adversary = "the adversary", + rivals = "the rivals", + hitchhiker = "the hitchhiker", + angel = "the angel", + collapse = "the collapse", + lowlaywoman = "the low laywoman", + laywoman = "the low laywoman", + servant = "the servant", + extrovert = "the extrovert", + discofpenury = "the disc of penury", + flash = "the flash", + eclipsespectral = "c_jen_reverse_moon", + eclipsetorat = "c_jen_reverse_moon", + darkness = "the darkness", + void = "the void", + topuptoken = "top-up token", + sagittarius = "sagittarius a*", + ["sagitarius a*"] = "sagittarius a*", --minor spelling mistakes are forgiven + sagitarius = "sagittarius a*", --minor spelling mistakes are forgiven + } + for k, v in pairs(aliases) do + Cryptid.aliases[k] = v + end + G.FUNCS.pointer_apply = function() + local function apply_lower(str) + -- Remove content within {} and any remaining spaces + str = str:gsub("%b{}", ""):gsub("%s+", "") + --this weirdness allows you to get m and M separately + if string.len(str) == 1 then + return str + end + return string.lower(str) + end + local current_card + local entered_card = G.ENTERED_CARD + G.PREVIOUS_ENTERED_CARD = G.ENTERED_CARD + local aliases = Cryptid.aliases + if aliases[apply_lower(entered_card)] then + entered_card = aliases[apply_lower(entered_card)] + end + for i, v in pairs(G.P_CENTERS) do + if v.name and apply_lower(entered_card) == apply_lower(v.name) then + current_card = i + end + if apply_lower(entered_card) == apply_lower(i) then + current_card = i + end + if apply_lower(entered_card) == apply_lower(localize({ type = "name_text", set = v.set, key = i })) then + current_card = i + end + end + if current_card then + local created = false + if + G.P_CENTERS[current_card].set == "Joker" + and G.P_CENTERS[current_card].unlocked + and not G.GAME.banned_keys[current_card] + and (G.P_CENTERS[current_card].rarity ~= "cry_exotic" or #SMODS.find_card("j_jen_p03") > 0) + and not (Jen and Jen.overpowered(G.P_CENTERS[current_card].rarity)) + then + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, current_card) + card:add_to_deck() + G.jokers:emplace(card) + created = true + end + if + G.P_CENTERS[current_card].consumeable + and G.P_CENTERS[current_card].set ~= "jen_omegaconsumable" + and not G.GAME.banned_keys[current_card] + then + local card = create_card("Consumeable", G.consumeables, nil, nil, nil, nil, current_card) + if card.ability.name and card.ability.name == "cry-Chambered" then + card.ability.extra.num_copies = 1 + end + card:add_to_deck() + G.consumeables:emplace(card) + created = true + end + if + G.P_CENTERS[current_card].set == "Voucher" + and G.P_CENTERS[current_card].unlocked + and not G.GAME.banned_keys[current_card] + then + local area + if G.STATE == G.STATES.HAND_PLAYED then + if not G.redeemed_vouchers_during_hand then + G.redeemed_vouchers_during_hand = CardArea( + G.play.T.x, + G.play.T.y, + G.play.T.w, + G.play.T.h, + { type = "play", card_limit = 5 } + ) + end + area = G.redeemed_vouchers_during_hand + else + area = G.play + end + local card = create_card("Voucher", area, nil, nil, nil, nil, current_card) + card:start_materialize() + area:emplace(card) + card.cost = 0 + card.shop_voucher = false + local current_round_voucher = G.GAME.current_round.voucher + card:redeem() + G.GAME.current_round.voucher = current_round_voucher + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + card:start_dissolve() + return true + end, + })) + created = true + end + if + G.P_CENTERS[current_card].set == "Booster" + and not G.GAME.banned_keys[current_card] + and (G.P_CENTERS[current_card].name ~= "Exotic Buffoon Pack" or #SMODS.find_card("j_jen_p03") ~= 0) + and G.STATE ~= G.STATES.TAROT_PACK + and G.STATE ~= G.STATES.SPECTRAL_PACK + and G.STATE ~= G.STATES.STANDARD_PACK + and G.STATE ~= G.STATES.BUFFOON_PACK + and G.STATE ~= G.STATES.PLANET_PACK + and G.STATE ~= G.STATES.SMODS_BOOSTER_OPENED + then + local card = create_card("Booster", G.hand, nil, nil, nil, nil, current_card) + card.cost = 0 + card.from_tag = true + G.FUNCS.use_card({ config = { ref_table = card } }) + card:start_materialize() + created = true + end + if created then + G.CHOOSE_CARD:remove() + G.GAME.USING_CODE = false + G.GAME.USING_POINTER = false + return + end + end + for i, v in pairs(G.P_TAGS) do + if v.name and apply_lower(entered_card) == apply_lower(v.name) then + current_card = i + end + if apply_lower(entered_card) == apply_lower(i) then + current_card = i + end + if apply_lower(entered_card) == apply_lower(localize({ type = "name_text", set = v.set, key = i })) then + current_card = i + end + end + if current_card and not G.P_CENTERS[current_card] and not G.GAME.banned_keys[current_card] then + local created = false + local t = Tag(current_card, nil, "Big") + add_tag(t) + if current_card == "tag_orbital" then + local _poker_hands = {} + for k, v in pairs(G.GAME.hands) do + if v.visible then + _poker_hands[#_poker_hands + 1] = k + end + end + t.ability.orbital_hand = pseudorandom_element(_poker_hands, pseudoseed("cry_pointer_orbital")) + end + if current_card == "tag_cry_rework" then + --tbh this is the most unbalanced part of the card + t.ability.rework_edition = + pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_pointer_edition")).key + t.ability.rework_key = + pseudorandom_element(G.P_CENTER_POOLS.Joker, pseudoseed("cry_pointer_joker")).key + end + G.CHOOSE_CARD:remove() + G.GAME.USING_CODE = false + G.GAME.USING_POINTER = false + return + end + for i, v in pairs(G.P_BLINDS) do + if v.name and apply_lower(entered_card) == apply_lower(v.name) then + current_card = i + end + if apply_lower(entered_card) == apply_lower(i) then + current_card = i + end + if + apply_lower(entered_card) == apply_lower(localize({ type = "name_text", set = "Blind", key = i })) + then + current_card = i + end + end + if + current_card + and not G.P_CENTERS[current_card] + and not G.P_TAGS[current_card] + and not G.GAME.banned_keys[current_card] + then + local created = false + if not G.GAME.blind or (G.GAME.blind.name == "" or not G.GAME.blind.blind_set) then + --from debugplus + local par = G.blind_select_opts.boss.parent + G.GAME.round_resets.blind_choices.Boss = current_card + + G.blind_select_opts.boss:remove() + G.blind_select_opts.boss = UIBox({ + T = { par.T.x, 0, 0, 0 }, + definition = { + n = G.UIT.ROOT, + config = { + align = "cm", + colour = G.C.CLEAR, + }, + nodes = { + UIBox_dyn_container( + { create_UIBox_blind_choice("Boss") }, + false, + get_blind_main_colour("Boss"), + mix_colours(G.C.BLACK, get_blind_main_colour("Boss"), 0.8) + ), + }, + }, + config = { + align = "bmi", + offset = { + x = 0, + y = G.ROOM.T.y + 9, + }, + major = par, + xy_bond = "Weak", + }, + }) + par.config.object = G.blind_select_opts.boss + par.config.object:recalculate() + G.blind_select_opts.boss.parent = par + G.blind_select_opts.boss.alignment.offset.y = 0 + + for i = 1, #G.GAME.tags do + if G.GAME.tags[i]:apply_to_run({ + type = "new_blind_choice", + }) then + break + end + end + created = true + else + G.GAME.blind:set_blind(G.P_BLINDS[current_card]) + ease_background_colour_blind(G.STATE) + created = true + end + if created then + G.CHOOSE_CARD:remove() + G.GAME.USING_CODE = false + G.GAME.USING_POINTER = false + end + end + if not current_card then -- if card isn't created yet, try playing cards + local words = {} + for i in string.gmatch(string.lower(entered_card), "%S+") do -- not using apply_lower because we actually want the spaces here + table.insert(words, i) + end + + local rank_table = { + { "stone" }, + { "2", "Two", "II" }, + { "3", "Three", "III" }, + { "4", "Four", "IV" }, + { "5", "Five", "V" }, + { "6", "Six", "VI" }, + { "7", "Seven", "VII" }, + { "8", "Eight", "VIII" }, + { "9", "Nine", "IX" }, + { "10", "1O", "Ten", "X", "T" }, + { "J", "Jack" }, + { "Q", "Queen" }, + { "K", "King" }, + { "A", "Ace", "One", "1", "I" }, + } -- ty variable + local _rank = nil + for m = #words, 1, -1 do -- the legendary TRIPLE LOOP, checking from end since rank is most likely near the end + for i, v in pairs(rank_table) do + for j, k in pairs(v) do + if words[m] == string.lower(k) then + _rank = i + break + end + end + if _rank then + break + end + end + if _rank then + break + end + end + if _rank then -- a playing card is going to get created at this point, but we can find additional descriptors + local suit_table = { + ["Spades"] = { "spades" }, + ["Hearts"] = { "hearts" }, + ["Clubs"] = { "clubs" }, + ["Diamonds"] = { "diamonds" }, + } + for k, v in pairs(SMODS.Suits) do + local index = v.key + local current_name = G.localization.misc.suits_plural[index] + if not suit_table[v.key] then + suit_table[v.key] = { string.lower(current_name) } + end + end + -- i'd rather be pedantic and not forgive stuff like "spade", there's gonna be a lot of checks + -- can change that if need be + local enh_table = { + ["m_lucky"] = { "lucky" }, + ["m_mult"] = { "mult" }, + ["m_bonus"] = { "bonus" }, + ["m_wild"] = { "wild" }, + ["m_steel"] = { "steel" }, + ["m_glass"] = { "glass" }, + ["m_gold"] = { "gold" }, + ["m_stone"] = { "stone" }, + ["m_cry_echo"] = { "echo" }, + } + for k, v in pairs(G.P_CENTER_POOLS.Enhanced) do + local index = v.key + local current_name = G.localization.descriptions.Enhanced[index].name + current_name = current_name:gsub(" Card$", "") + if not enh_table[v.key] then + enh_table[v.key] = { string.lower(current_name) } + end + end + local ed_table = { + ["e_base"] = { "base" }, + ["e_foil"] = { "foil" }, + ["e_holo"] = { "holo" }, + ["e_polychrome"] = { "polychrome" }, + ["e_negative"] = { "negative" }, + ["e_cry_mosaic"] = { "mosaic" }, + ["e_cry_oversat"] = { "oversat" }, + ["e_cry_glitched"] = { "glitched" }, + ["e_cry_astral"] = { "astral" }, + ["e_cry_blur"] = { "blurred" }, + ["e_cry_gold"] = { "golden" }, + ["e_cry_glass"] = { "fragile" }, + ["e_cry_m"] = { "jolly" }, + ["e_cry_noisy"] = { "noisy" }, + ["e_cry_double_sided"] = { "double-sided", "double_sided", "double" }, -- uhhh sure + } + for k, v in pairs(G.P_CENTER_POOLS.Edition) do + local index = v.key + local current_name = G.localization.descriptions.Edition[index].name + if not ed_table[v.key] then + ed_table[v.key] = { string.lower(current_name) } + end + end + local seal_table = { + ["Red"] = { "red" }, + ["Blue"] = { "blue" }, + ["Purple"] = { "purple" }, + ["Gold"] = { "gold", "golden" }, -- don't worry we're handling seals differently + ["cry_azure"] = { "azure" }, + ["cry_green"] = { "green" }, + } + local sticker_table = { + ["eternal"] = { "eternal" }, + ["perishable"] = { "perishable" }, + ["rental"] = { "rental" }, + ["pinned"] = { "pinned" }, + ["banana"] = { "banana" }, -- no idea why this evades prefixing + ["cry_rigged"] = { "rigged" }, + ["cry_flickering"] = { "flickering" }, + ["cry_possessed"] = { "possessed" }, + ["cry_absolute"] = { "absolute" }, + } + local function parsley(_table, _word) + for i, v in pairs(_table) do + for j, k in pairs(v) do + if _word == string.lower(k) then + return i + end + end + end + return "" + end + local function to_rank(rrank) + if rrank <= 10 then + return tostring(rrank) + elseif rrank == 11 then + return "Jack" + elseif rrank == 12 then + return "Queen" + elseif rrank == 13 then + return "King" + elseif rrank == 14 then + return "Ace" + end + end + + -- ok with all that fluff out the way now we can figure out what on earth we're creating + + local _seal_att = false + local _suit = "" + local _enh = "" + local _ed = "" + local _seal = "" + local _stickers = {} + for m = #words, 1, -1 do + -- we have a word. figure out what that word is + -- this is dodgy spaghetti but w/ever + local wword = words[m] + if _suit == "" then + _suit = parsley(suit_table, wword) + end + if _enh == "" then + _enh = parsley(enh_table, wword) + if _enh == "m_gold" and _seal_att == true then + _enh = "" + end + end + if _ed == "" then + _ed = parsley(ed_table, wword) + if _ed == "e_cry_gold" and _seal_att == true then + _ed = "" + end + end + if _seal == "" then + _seal = parsley(seal_table, wword) + if _seal == "Gold" and _seal_att == false then + _seal = "" + end + end + local _st = parsley(sticker_table, wword) + if _st then + _stickers[#_stickers + 1] = _st + end + if wword == "seal" or wword == "sealed" then + _seal_att = true + else + _seal_att = false + end -- from end so the next word should describe the seal + end + + -- now to construct the playing card + -- i'm doing this by applying everything but maybe it's a bit janky? + + G.CHOOSE_CARD:remove() + G.GAME.USING_CODE = false + G.GAME.USING_POINTER = false + + G.E_MANAGER:add_event(Event({ + func = function() + G.playing_card = (G.playing_card and G.playing_card + 1) or 1 + local _card = create_card("Base", G.play, nil, nil, nil, nil, nil, "pointer") + SMODS.change_base( + _card, + _suit ~= "" and _suit + or pseudorandom_element( + { "Spades", "Hearts", "Diamonds", "Clubs" }, + pseudoseed("sigil") + ), + _rank > 1 and to_rank(_rank) or nil + ) + if _enh ~= "" then + _card:set_ability(G.P_CENTERS[_enh]) + end + if _rank == 1 then + _card:set_ability(G.P_CENTERS["m_stone"]) + end + if _seal ~= "" then + _card:set_seal(_seal, true, true) + end + if _ed ~= "" then + _card:set_edition(_ed, true, true) + end + for i = 1, #_stickers do + _card.ability[_stickers[i]] = true + if _stickers[i] == "pinned" then + _card.pinned = true + end + end + _card:start_materialize() + G.play:emplace(_card) + table.insert(G.playing_cards, _card) + playing_card_joker_effects({ _card }) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + func = function() + G.deck.config.card_limit = G.deck.config.card_limit + 1 + return true + end, + })) + draw_card(G.play, G.deck, 90, "up", nil) + end + end + end + end, +} +local encoded = { + dependencies = { + items = { + "set_cry_code", + "set_cry_deck", + }, + }, + object_type = "Back", + name = "cry-Encoded", + key = "encoded", + order = 11, + pos = { x = 2, y = 5 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.joker_rate = 0 + G.GAME.planet_rate = 0 + G.GAME.tarot_rate = 0 + G.GAME.code_rate = 1e100 + G.E_MANAGER:add_event(Event({ + func = function() + if G.jokers then + 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, +} +local CodeJoker = { + dependencies = { + items = { + "set_cry_epic", + "set_cry_code", + }, + }, + object_type = "Joker", + name = "cry-CodeJoker", + key = "CodeJoker", + pos = { x = 2, y = 4 }, + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = { key = "e_negative_consumable", set = "Edition", config = { extra = 1 } } + end, + rarity = "cry_epic", + cost = 11, + order = 109, + blueprint_compat = true, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.setting_blind and not (context.blueprint_card or self).getting_sliced then + play_sound("timpani") + local card = create_card("Code", G.consumables, nil, nil, nil, nil) + card:set_edition({ + negative = true, + }) + card:add_to_deck() + G.consumeables:emplace(card) + card:juice_up(0.3, 0.5) + return nil, true + end + end, + cry_credits = { + idea = { + "Kailen", + }, + art = { + "Kailen", + }, + code = { + "Kailen", + }, + }, + unlocked = false, + check_for_unlock = function(self, args) + if G.P_CENTER_POOLS["Code"] then + local count = 0 + local count2 = 0 + for k, v in pairs(G.P_CENTER_POOLS["Code"]) do + count2 = count2 + 1 + if safe_get(v, "discovered") == true then + count = count + 1 + end + end + if count == count2 then + unlock_card(self) + end + 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 copypaste = { + dependencies = { + items = { + "set_cry_epic", + "set_cry_code", + }, + }, + object_type = "Joker", + name = "cry-copypaste", + key = "copypaste", + pos = { x = 3, y = 4 }, + order = 110, + immune_to_chemach = true, + config = { extra = { odds = 2, ckt = nil } }, -- what is a ckt + rarity = "cry_epic", + cost = 14, + blueprint_compat = true, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and cry_prob( + math.min(card.ability.extra.odds / 2, card.ability.cry_prob or 1), + card.ability.extra.odds, + card.ability.cry_rigged + ) or 1, + card and card.ability.extra.odds or 2, + }, -- this effectively prevents a copypaste from ever initially misprinting at above 50% odds. still allows rigging/oops + key = Card.get_gameset(card) ~= "madness" and "j_cry_copypaste" or "j_cry_copypaste2", + } + end, + atlas = "atlasepic", + calculate = function(self, card, context) + if + context.using_consumeable + and context.consumeable.ability.set == "Code" + and not context.consumeable.beginning_end + and not card.ability.extra.ckt + then + if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then + if + pseudorandom("cry_copypaste_joker") + < cry_prob( + math.min(card.ability.extra.odds / 2, card.ability.cry_prob), + card.ability.extra.odds, + card.ability.cry_rigged + ) + / card.ability.extra.odds + then + G.E_MANAGER:add_event(Event({ + func = function() + local cards = copy_card(context.consumeable) + cards:add_to_deck() + G.consumeables:emplace(cards) + return true + end, + })) + card_eval_status_text( + context.blueprint_cards or card, + "extra", + nil, + nil, + nil, + { message = localize("k_copied_ex") } + ) + if Card.get_gameset(card) ~= "madness" then + card.ability.extra.ckt = true + end + end + end + elseif + context.end_of_round + and not context.retrigger_joker + and not context.blueprint + and card.ability.extra.ckt + then + card.ability.extra.ckt = nil + return { + message = localize("k_reset"), + card = card, + } + end + end, + cry_credits = { + idea = { + "Auto Watto", + }, + art = { + "Kailen", + }, + code = { + "Auto Watto", + }, + }, +} +local cut = { + dependencies = { + items = { + "set_cry_code", + "set_cry_misc_joker", + }, + }, + object_type = "Joker", + name = "cry-cut", + key = "cut", + config = { extra = { Xmult = 1, Xmult_mod = 0.5 } }, + pos = { x = 2, y = 2 }, + rarity = 2, + cost = 7, + order = 108, + blueprint_compat = true, + perishable_compat = false, + atlas = "atlasthree", + calculate = function(self, card, context) + if context.ending_shop then + local destructable_codecard = {} + for i = 1, #G.consumeables.cards do + if + G.consumeables.cards[i].ability.set == "Code" + and not G.consumeables.cards[i].getting_sliced + and not G.consumeables.cards[i].ability.eternal + then + destructable_codecard[#destructable_codecard + 1] = G.consumeables.cards[i] + end + end + local codecard_to_destroy = #destructable_codecard > 0 + and pseudorandom_element(destructable_codecard, pseudoseed("cut")) + or nil + + if codecard_to_destroy then + codecard_to_destroy.getting_sliced = true + card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod + G.E_MANAGER:add_event(Event({ + func = function() + (context.blueprint_card or card):juice_up(0.8, 0.8) + codecard_to_destroy:start_dissolve({ G.C.RED }, nil, 1.6) + return true + end, + })) + if not (context.blueprint_card or self).getting_sliced then + card_eval_status_text((context.blueprint_card or card), "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { number_format(to_big(card.ability.extra.Xmult)) }, + }), + }) + end + return nil, true + end + end + if context.joker_main and (to_big(card.ability.extra.Xmult) > to_big(1)) then + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { + number_format(card.ability.extra.Xmult), + }, + }), + Xmult_mod = card.ability.extra.Xmult, + colour = G.C.MULT, + } + end + end, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.Xmult_mod, center.ability.extra.Xmult } } + end, + cry_credits = { + idea = { + "Auto Watto", + }, + art = { + "Kailen", + }, + code = { + "Auto Watto", + }, + }, +} +local blender = { + dependencies = { + items = { + "set_cry_code", + "set_cry_misc_joker", + }, + }, + object_type = "Joker", + name = "cry-blender", + key = "blender", + pos = { x = 3, y = 2 }, + rarity = 1, + cost = 5, + blueprint_compat = true, + atlas = "atlasthree", + order = 111, + calculate = function(self, card, context) + if + context.using_consumeable + and context.consumeable.ability.set == "Code" + and not context.consumeable.beginning_end + then + if #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then + local card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, nil, "cry_blender") + card:add_to_deck() + G.consumeables:emplace(card) + end + end + end, + cry_credits = { + idea = { + "HexaCryonic", + }, + art = { + "Kailen", + }, + code = { + "Kailen", + }, + }, +} +local python = { + dependencies = { + items = { + "set_cry_code", + "set_cry_misc_joker", + }, + }, + object_type = "Joker", + name = "cry-python", + key = "python", + config = { extra = { Xmult = 1, Xmult_mod = 0.15 } }, + pos = { x = 4, y = 2 }, + rarity = 2, + cost = 7, + blueprint_compat = true, + perishable_compat = false, + atlas = "atlasthree", + order = 112, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.Xmult_mod, center.ability.extra.Xmult } } + end, + calculate = function(self, card, context) + if + context.using_consumeable + and context.consumeable.ability.set == "Code" + and not context.consumeable.beginning_end + then + card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod + G.E_MANAGER:add_event(Event({ + func = function() + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { card.ability.extra.Xmult }, + }), + }) + return true + end, + })) + return + end + if context.joker_main and (to_big(card.ability.extra.Xmult) > to_big(1)) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), + Xmult_mod = card.ability.extra.Xmult, + } + end + end, + cry_credits = { + idea = { + "HexaCryonic", + }, + art = { + "Kailen", + }, + code = { + "Kailen", + }, + }, +} +local code_cards = { + code, + pack1, + pack2, + packJ, + packM, + console, + automaton, + green_seal, + source, + pointer, + cut, + blender, + python, + payload, + reboot, + revert, + crash, + semicolon, + malware, + seed, + rigged, + --hook, + hooked, + variable, + class, + commit, + merge, + multiply, + divide, + delete, + machinecode, + run, + exploit, + oboe, + rework, + rework_tag, + --patch, + ctrl_v, + inst, + alttab, + encoded, + spaghetti, + CodeJoker, + copypaste, +} +return { + name = "Code Cards", + init = function() + --allow Program Packs to let you keep the cards + local G_UIDEF_use_and_sell_buttons_ref = G.UIDEF.use_and_sell_buttons + function G.UIDEF.use_and_sell_buttons(card) + if (card.area == G.pack_cards and G.pack_cards) and card.ability.consumeable then --Add a use button + if card.ability.set == "Code" then + return { + n = G.UIT.ROOT, + config = { padding = -0.1, colour = G.C.CLEAR }, + nodes = { + { + n = G.UIT.R, + config = { + ref_table = card, + r = 0.08, + padding = 0.1, + align = "bm", + minw = 0.5 * card.T.w - 0.15, + minh = 0.7 * card.T.h, + maxw = 0.7 * card.T.w - 0.15, + hover = true, + shadow = true, + colour = G.C.UI.BACKGROUND_INACTIVE, + one_press = true, + button = "use_card", + func = "can_reserve_card", + }, + nodes = { + { + n = G.UIT.T, + config = { + text = localize("b_pull"), + colour = G.C.UI.TEXT_LIGHT, + scale = 0.55, + shadow = true, + }, + }, + }, + }, + { + n = G.UIT.R, + config = { + ref_table = card, + r = 0.08, + padding = 0.1, + align = "bm", + minw = 0.5 * card.T.w - 0.15, + maxw = 0.9 * card.T.w - 0.15, + minh = 0.1 * card.T.h, + hover = true, + shadow = true, + colour = G.C.UI.BACKGROUND_INACTIVE, + one_press = true, + button = "Do you know that this parameter does nothing?", + func = "can_use_consumeable", + }, + nodes = { + { + n = G.UIT.T, + config = { + text = localize("b_use"), + colour = G.C.UI.TEXT_LIGHT, + scale = 0.45, + shadow = true, + }, + }, + }, + }, + { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, + { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, + { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, + { n = G.UIT.R, config = { align = "bm", w = 7.7 * card.T.w } }, + -- Betmma can't explain it, neither can I + }, + } + end + end + return G_UIDEF_use_and_sell_buttons_ref(card) + end + --Code from Betmma's Vouchers + G.FUNCS.can_reserve_card = function(e) + if #G.consumeables.cards < G.consumeables.config.card_limit then + e.config.colour = G.C.GREEN + e.config.button = "reserve_card" + else + e.config.colour = G.C.UI.BACKGROUND_INACTIVE + e.config.button = nil + end + end + G.FUNCS.reserve_card = function(e) + local c1 = e.config.ref_table + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + c1.area:remove_card(c1) + c1:add_to_deck() + if c1.children.price then + c1.children.price:remove() + end + c1.children.price = nil + if c1.children.buy_button then + c1.children.buy_button:remove() + end + c1.children.buy_button = nil + remove_nils(c1.children) + G.consumeables:emplace(c1) + G.GAME.pack_choices = G.GAME.pack_choices - 1 + if G.GAME.pack_choices <= 0 then + G.FUNCS.end_consumeable(nil, delay_fac) + end + return true + end, + })) + end + --some code to make typing more characters better + G.FUNCS.text_input_key = function(args) + args = args or {} + local hook = G.CONTROLLER.text_input_hook + if not hook.config.ref_table.extended_corpus then + if args.key == "[" or args.key == "]" then + return + end + if args.key == "0" then + args.key = "o" + end + else + if string.byte(args.key, 1) >= 128 then + print(string.byte(args.key, 1)) + args.key = "?" --fix for lovely bugging out + end + end + + --shortcut to hook config + local hook_config = G.CONTROLLER.text_input_hook.config.ref_table + hook_config.orig_colour = hook_config.orig_colour or copy_table(hook_config.colour) + + args.key = args.key or "%" + args.caps = args.caps or G.CONTROLLER.capslock or hook_config.all_caps --capitalize if caps lock or hook requires + + --Some special keys need to be mapped accordingly before passing through the corpus + local keymap = { + space = " ", + backspace = "BACKSPACE", + delete = "DELETE", + ["return"] = "RETURN", + right = "RIGHT", + left = "LEFT", + } + local corpus = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + .. (hook.config.ref_table.extended_corpus and " 0!$&()<>?:{}+-=,.[]_" or "") + + if hook.config.ref_table.extended_corpus then + local lower_ext = "1234567890-=;',./" + local upper_ext = '!@#$%^&*()_+:"<>?' + if args.caps then + if args.key == "." then + args.key = ">" + end + if args.key == "[" then + args.key = "{" + end + if args.key == "]" then + args.key = "}" + end + if args.key == "\\" then + args.key = "|" + end + end + + pcall(function() + if string.find(lower_ext, args.key) and args.caps then + args.key = string.sub(string.sub(upper_ext, string.find(lower_ext, args.key)), 0, 1) + end + end) + end + local text = hook_config.text + + --set key to mapped key or upper if caps is true + args.key = keymap[args.key] or (args.caps and string.upper(args.key) or args.key) + + --Start by setting the cursor position to the correct location + TRANSPOSE_TEXT_INPUT(0) + + if string.len(text.ref_table[text.ref_value]) > 0 and args.key == "BACKSPACE" then --If not at start, remove preceding letter + MODIFY_TEXT_INPUT({ + letter = "", + text_table = text, + pos = text.current_position, + delete = true, + }) + TRANSPOSE_TEXT_INPUT(-1) + elseif string.len(text.ref_table[text.ref_value]) > 0 and args.key == "DELETE" then --if not at end, remove following letter + MODIFY_TEXT_INPUT({ + letter = "", + text_table = text, + pos = text.current_position + 1, + delete = true, + }) + TRANSPOSE_TEXT_INPUT(0) + elseif args.key == "RETURN" then --Release the hook + if hook.config.ref_table.callback then + hook.config.ref_table.callback() + end + hook.parent.parent.config.colour = hook_config.colour + local temp_colour = copy_table(hook_config.orig_colour) + hook_config.colour[1] = G.C.WHITE[1] + hook_config.colour[2] = G.C.WHITE[2] + hook_config.colour[3] = G.C.WHITE[3] + ease_colour(hook_config.colour, temp_colour) + G.CONTROLLER.text_input_hook = nil + elseif args.key == "LEFT" then --Move cursor position to the left + TRANSPOSE_TEXT_INPUT(-1) + elseif args.key == "RIGHT" then --Move cursor position to the right + TRANSPOSE_TEXT_INPUT(1) + elseif + hook_config.max_length > string.len(text.ref_table[text.ref_value]) + and (string.len(args.key) == 1) + and (string.find(corpus, args.key, 1, true) or hook.config.ref_table.extended_corpus) + then --check to make sure the key is in the valid corpus, add it to the string + MODIFY_TEXT_INPUT({ + letter = args.key, + text_table = text, + pos = text.current_position + 1, + }) + TRANSPOSE_TEXT_INPUT(1) + end + end + local yc = G.FUNCS.your_collection + G.FUNCS.your_collection = function(e) + if G.CHOOSE_CARD then + G.CHOOSE_CARD:remove() + G.CHOOSE_CARD = nil + end + yc(e) + end + end, + items = code_cards, +} diff --git a/Cryptid/items/deck.lua b/Cryptid/items/deck.lua new file mode 100644 index 0000000..d83b951 --- /dev/null +++ b/Cryptid/items/deck.lua @@ -0,0 +1,1013 @@ +local very_fair = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "Very Fair Deck", + key = "very_fair", + config = { hands = -2, discards = -2 }, + pos = { x = 4, y = 0 }, + order = 1, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_no_vouchers = true + end, + init = function(self) + very_fair_quip = {} + end, +} +local equilibrium = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Equilibrium", + key = "equilibrium", + order = 3, + config = { vouchers = { "v_overstock_norm", "v_overstock_plus" } }, + pos = { x = 0, y = 1 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_equilibrium = true + end, + init = function(self) + local gp = get_pack + function get_pack(k, t) + if G.GAME.modifiers.cry_equilibrium then + if not P_CRY_ITEMS then + P_CRY_ITEMS = {} + local valid_pools = { "Joker", "Consumeables", "Voucher", "Booster" } + for _, id in ipairs(valid_pools) do + for k, v in pairs(G.P_CENTER_POOLS[id]) do + if not center_no(v, "doe", k) then + P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key + end + end + end + for k, v in pairs(G.P_CARDS) do + if not center_no(v, "doe", k) then + P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key + end + end + end + return G.P_CENTERS[pseudorandom_element( + P_CRY_ITEMS, + pseudoseed("cry_equipackbrium" .. G.GAME.round_resets.ante) + )] + end + return gp(k, t) + end + end, +} +local misprint = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Misprint", + key = "misprint", + order = 4, + config = { cry_misprint_min = 0.1, cry_misprint_max = 10 }, + pos = { x = 4, y = 2 }, + atlas = "atlasdeck", + 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 + end, +} +local infinite = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Infinite", + key = "infinite", + order = 2, + config = { cry_highlight_limit = 1e20, hand_size = 1 }, + pos = { x = 3, y = 0 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_highlight_limit = self.config.cry_highlight_limit + end, +} +local conveyor = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Conveyor", + key = "conveyor", + order = 7, + pos = { x = 1, y = 1 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_conveyor = true + end, +} +local CCD = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-CCD", + key = "CCD", + order = 5, + config = { cry_ccd = true }, + pos = { x = 0, y = 0 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_ccd = true + end, +} +local wormhole = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + "set_cry_exotic", + }, + }, + name = "cry-Wormhole", + key = "wormhole", + order = 6, + config = { cry_negative_rate = 20, joker_slot = -2 }, + pos = { x = 3, y = 4 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_negative_rate = self.config.cry_negative_rate + 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_wormhole") + card:add_to_deck() + card:start_materialize() + G.jokers:emplace(card) + return true + end + end, + })) + end, + init = function(self) + SMODS.Edition:take_ownership("negative", { + get_weight = function(self) + return self.weight * (G.GAME.modifiers.cry_negative_rate or 1) + end, + }, true) + end, +} +local redeemed = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Redeemed", + key = "redeemed", + order = 8, + pos = { x = 4, y = 4 }, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_redeemed = true + end, + init = function(self) + local cr = Card.redeem + function Card:redeem() + cr(self) + if G.GAME.modifiers.cry_redeemed then + if + #G.play.cards == 0 + and (not G.redeemed_vouchers_during_hand or #G.redeemed_vouchers_during_hand.cards == 0) + then + G.cry_redeemed_buffer = {} + end + for k, v in pairs(G.P_CENTER_POOLS["Voucher"]) do + if v.requires and not G.GAME.used_vouchers[v] then + for _, vv in pairs(v.requires) do + if vv == self.config.center.key then + --redeem extra voucher code based on Betmma's Vouchers + local area + if G.STATE == G.STATES.HAND_PLAYED then + if not G.redeemed_vouchers_during_hand then + G.redeemed_vouchers_during_hand = CardArea( + G.play.T.x, + G.play.T.y, + G.play.T.w, + G.play.T.h, + { type = "play", card_limit = 5 } + ) + end + area = G.redeemed_vouchers_during_hand + else + area = G.play + end + if not G.cry_redeemed_buffer[v.key] and v.unlocked then + local card = create_card("Voucher", area, nil, nil, nil, nil, v.key) + G.cry_redeemed_buffer[v.key] = true + card:start_materialize() + area:emplace(card) + card.cost = 0 + card.shop_voucher = false + local current_round_voucher = G.GAME.current_round.voucher + card:redeem() + G.GAME.current_round.voucher = current_round_voucher + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + card:start_dissolve() + return true + end, + })) + end + end + end + end + end + end + end + end, +} +local legendary = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Legendary", + key = "legendary", + config = { cry_legendary = true, cry_legendary_rate = 0.2 }, + pos = { x = 0, y = 6 }, + atlas = "atlasdeck", + order = 15, + trigger_effect = function(self, args) + if args.context == "eval" and 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 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 + 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 critical = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Critical", + key = "critical", + order = 10, + config = { cry_crit_rate = 0.25, cry_crit_miss_rate = 0.125 }, + pos = { x = 4, y = 5 }, + atlas = "atlasdeck", + loc_vars = function(self, info_queue, center) + return { vars = { G.GAME.probabilities.normal or 1 } } + end, + calculate = function(self, card, context) + if context.final_scoring_step then + local check + local crit_poll = pseudorandom(pseudoseed("cry_critical")) + crit_poll = crit_poll / (G.GAME.probabilities.normal or 1) + if crit_poll < self.config.cry_crit_rate then + check = 2 + 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 crit_poll < self.config.cry_crit_rate + self.config.cry_crit_miss_rate then + check = 0.5 + 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) + if check then + return { + Emult_mod = check, + colour = G.C.DARK_EDITION, + } + end + end + end, +} +local glowing = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Glowing", + key = "glowing", + -- is this config even used for anything + config = { cry_glowing = true }, + pos = { x = 4, y = 2 }, + order = 9, + loc_vars = function(self, info_queue, center) + return { vars = { " " } } + end, + atlas = "glowing", + trigger_effect = function(self, args) + if args.context == "eval" and 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 + cry_with_deck_effects(G.jokers.cards[i], function(card) + cry_misprintize(card, { min = 1.25, max = 1.25 }, nil, true) + end) + end + end + end + end, +} +local beta = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Beta", + key = "beta", + config = { cry_beta = true }, + pos = { x = 5, y = 5 }, + order = 13, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_beta = true + end, +} +local bountiful = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Bountiful", + key = "bountiful", + config = { cry_forced_draw_amount = 5 }, + pos = { x = 2, y = 6 }, + order = 14, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_forced_draw_amount = self.config.cry_forced_draw_amount + end, +} +local beige = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Beige", + key = "beige", + pos = { x = 1, y = 6 }, + order = 15, + atlas = "atlasdeck", + apply = function(self) + G.GAME.modifiers.cry_common_value_quad = true + end, +} +local blank = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Blank", + key = "blank", + order = 75, + pos = { x = 1, y = 0 }, + atlas = "atlasdeck", +} +local antimatter = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Antimatter", + order = 76, + key = "antimatter", + config = { + cry_antimatter = true, + cry_crit_rate = 0.25, --Critical Deck + cry_legendary_rate = 0.2, --Legendary Deck + -- Enhanced Decks + cry_force_enhancement = "random", + cry_force_edition = "random", + cry_force_seal = "random", + cry_forced_draw_amount = 5, + }, + pos = { x = 2, y = 0 }, + trigger_effect = function(self, args) + if args.context ~= "final_scoring_step" then + antimatter_trigger_effect(self, args) + else + return antimatter_trigger_effect_final_scoring_step(self, args) + end + end, + apply = function(self) + antimatter_apply() + end, + atlas = "atlasdeck", + init = function(self) + function antimatter_apply() + local bluecheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_blue", "wins", 8) + local yellowcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_yellow", "wins", 8) + local abandonedcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_abandoned", "wins", 8) + local ghostcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_ghost", "wins", 8) + local redcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_red", "wins", 8) + local checkeredcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_checkered", "wins", 8) + local erraticcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_erratic", "wins", 8) + local blackcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_black", "wins", 8) + local paintedcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_painted", "wins", 8) + local greencheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_green", "wins", 8) + local spookycheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_spooky", "wins", 8) + local equilibriumcheck = + safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_equilibrium", "wins", 8) + local misprintcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_misprint", "wins", 8) + local infinitecheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_infinite", "wins", 8) + local wormholecheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_wormhole", "wins", 8) + local redeemedcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_redeemed", "wins", 8) + local legendarycheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_legendary", "wins", 8) + local encodedcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_encoded", "wins", 8) + local world = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_world_deck", "wins", 8) + local sun = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_sun_deck", "wins", 8) + local star = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_star_deck", "wins", 8) + local moon = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_moon_deck", "wins", 8) + + if cry_get_gameset(G.P_CENTERS.b_cry_antimatter) == "madness" then + bluecheck = 1 + yellowcheck = 1 + abandonedcheck = 1 + ghostcheck = 1 + redcheck = 1 + checkeredcheck = 1 + erraticcheck = 1 + blackcheck = 1 + paintedcheck = 1 + greencheck = 1 + spookycheck = 1 + equilibriumcheck = 1 + misprintcheck = 1 + infinitecheck = 1 + wormholecheck = 1 + redeemedcheck = 1 + legendarycheck = 1 + encodedcheck = 1 + world = 1 + sun = 1 + star = 1 + moon = 1 + end + + --Blue Deck + if (bluecheck or 0) ~= 0 then + G.GAME.starting_params.hands = G.GAME.starting_params.hands + 1 + end + --All Consumables (see get_antimatter_consumables) + local querty = get_antimatter_consumables() + 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 + --Yellow Deck + if (yellowcheck or 0) ~= 0 then + G.GAME.starting_params.dollars = G.GAME.starting_params.dollars + 10 + end + --Abandoned Deck + if (abandonedcheck or 0) ~= 0 then + G.GAME.starting_params.no_faces = true + end + --Ghost Deck + if (ghostcheck or 0) ~= 0 then + G.GAME.spectral_rate = 2 + end + -- Red Deck + if (redcheck or 0) ~= 0 then + G.GAME.starting_params.discards = G.GAME.starting_params.discards + 1 + end + -- All Decks with Vouchers (see get_antimatter_vouchers) + local vouchers = get_antimatter_vouchers() + 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.cry_owned_vouchers[v] = true + G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1 + Card.apply_to_run(nil, G.P_CENTERS[v]) + end + end + end + -- Checkered Deck + if (checkeredcheck or 0) ~= 0 then + G.E_MANAGER:add_event(Event({ + func = function() + for k, v in pairs(G.playing_cards) do + if v.base.suit == "Clubs" then + v:change_suit("Spades") + end + if v.base.suit == "Diamonds" then + v:change_suit("Hearts") + end + end + return true + end, + })) + end + -- Erratic Deck + if (erraticcheck or 0) ~= 0 then + G.GAME.starting_params.erratic_suits_and_ranks = true + end + -- Black Deck + if (blackcheck or 0) ~= 0 then + G.GAME.starting_params.joker_slots = G.GAME.starting_params.joker_slots + 1 + end + -- Painted Deck + if (paintedcheck or 0) ~= 0 then + G.GAME.starting_params.hand_size = G.GAME.starting_params.hand_size + 2 + end + -- Green Deck + if (greencheck or 0) ~= 0 then + G.GAME.modifiers.money_per_hand = (G.GAME.modifiers.money_per_hand or 1) + 1 + G.GAME.modifiers.money_per_discard = (G.GAME.modifiers.money_per_discard or 0) + 1 + end + -- Spooky Deck + if (spookycheck or 0) ~= 0 then + G.GAME.modifiers.cry_spooky = true + G.GAME.modifiers.cry_curse_rate = 0 + --[[ + 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() + G.jokers:emplace(card) + return true + end + end, + })) + ]] + -- + end + -- Deck of Equilibrium + if (equilibriumcheck or 0) ~= 0 then + G.GAME.modifiers.cry_equilibrium = true + end + -- Misprint Deck + if (misprintcheck or 0) ~= 0 then + G.GAME.modifiers.cry_misprint_min = 1 + G.GAME.modifiers.cry_misprint_max = 10 + end + -- Infinite Deck + if (infinitecheck or 0) ~= 0 then + G.GAME.modifiers.cry_highlight_limit = 1e20 + G.GAME.starting_params.hand_size = G.GAME.starting_params.hand_size + 1 + end + -- Wormhole deck + if (wormholecheck or 0) ~= 0 then + G.GAME.modifiers.cry_negative_rate = 20 + --[[ + + Needs to check if exotic Jokers exist are enabled (whenever that happens) + + 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_wormhole") + card:add_to_deck() + card:start_materialize() + G.jokers:emplace(card) + return true + end + end, + })) + + ]] + -- + end + -- Redeemed deck + if (redeemedcheck or 0) ~= 0 then + G.GAME.modifiers.cry_redeemed = true + end + -- Deck of the Moon, Deck of the Sun, Deck of the Stars, Deck of the World + if (world or 0) ~= 0 then + G.GAME.bosses_used["bl_goad"] = 1e308 + end + if (star or 0) ~= 0 then + G.GAME.bosses_used["bl_window"] = 1e308 + end + if (sun or 0) ~= 0 then + G.GAME.bosses_used["bl_head"] = 1e308 + end + if (moon or 0) ~= 0 then + G.GAME.bosses_used["bl_club"] = 1e308 + end + --Legendary Deck + if (legendarycheck 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 Deck (TBA) + if (encodedcheck or 0) ~= 0 then + --[[ + G.E_MANAGER:add_event(Event({ + func = function() + if G.jokers then + 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 + end + + function antimatter_trigger_effect_final_scoring_step(self, args) + local critcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_critical", "wins", 8) + local plasmacheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_plasma", "wins", 8) + + if args.context == "final_scoring_step" then + local crit_poll = pseudorandom(pseudoseed("cry_critical")) + crit_poll = crit_poll / (G.GAME.probabilities.normal or 1) + --Critical Deck + if (critcheck or 0) ~= 0 then + if crit_poll < self.config.cry_crit_rate 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 = 4, + align = "cm", + offset = { x = 0, y = -1.7 }, + major = G.play, + }) + return true + end, + })) + delay(0.6) + end + end + --Plasma Deck + local tot = args.chips + args.mult + if (plasmacheck or 0) ~= 0 then + args.chips = math.floor(tot / 2) + args.mult = math.floor(tot / 2) + update_hand_text({ delay = 0 }, { mult = args.mult, chips = args.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 args.chips, args.mult + end + end + + function antimatter_trigger_effect(self, args) + local glowingcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_glowing", "wins", 8) + local legendarycheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_legendary", "wins", 8) + local anaglyphcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_anaglyph", "wins", 8) + + if args.context == "eval" and safe_get(G.GAME, "last_blind", "boss") then + --Glowing Deck + if (glowingcheck or 0) ~= 0 then + for i = 1, #G.jokers.cards do + cry_with_deck_effects(G.jokers.cards[i], function(card) + cry_misprintize(card, { min = 1.25, max = 1.25 }, nil, true) + end) + end + end + --Legendary Deck + if G.jokers and (legendarycheck or 0) ~= 0 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 + --Anaglyph Deck + if (anaglyphcheck or 0) ~= 0 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 + + function get_antimatter_vouchers(voucher_table) + -- 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 + --print("sus") + 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 + + --Checks for nils in the extremely nested thing i'm checking for + + local nebulacheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_nebula", "wins", 8) + local magiccheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_magic", "wins", 8) + local zodiaccheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_zodiac", "wins", 8) + local equilibriumcheck = + safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_equilibrium", "wins", 8) + + --Nebula Deck + if (nebulacheck or 0) ~= 0 then + Add_voucher_to_the_table(voucher_table, "v_telescope") + end + -- Magic Deck + if (magiccheck or 0) ~= 0 then + Add_voucher_to_the_table(voucher_table, "v_crystal_ball") + end + + -- Zodiac Deck + if (zodiaccheck 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 + -- Deck Of Equilibrium + if (equilibriumcheck or 0) ~= 0 then + Add_voucher_to_the_table(voucher_table, "v_overstock_norm") + Add_voucher_to_the_table(voucher_table, "v_overstock_plus") + end + return voucher_table + end + --Does this even need to be a function idk + function get_antimatter_consumables(consumable_table) + --Checks for nils in the extremely nested thing i'm checking for + -- Create a table or use one that is passed into the function + if not consumable_table or type(consumable_table) ~= "table" then + consumable_table = {} + end + + -- Add Consumables into the table by key + + local magiccheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_magic", "wins", 8) + local ghostcheck = safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_ghost", "wins", 8) + + if (magiccheck or 0) ~= 0 then + table.insert(consumable_table, "c_fool") + table.insert(consumable_table, "c_fool") + end + if (ghostcheck or 0) ~= 0 then + table.insert(consumable_table, "c_hex") + end + + return consumable_table + end + + --[[ + local test = antimatter_trigger_effect + function antimatter_trigger_effect(self, args) + test(self, args) + if args.context == "eval" then + ease_dollars(900) + end + end + local test2 = get_antimatter_consumables + function get_antimatter_consumables(consumable_table) + if not consumable_table or type(consumable_table) ~= "table" then consumable_table = {} end + table.insert(consumable_table, "c_soul") + table.insert(consumable_table, "c_soul") + return test2(consumable_table) + end + ]] + -- + end, +} + +return { + name = "Misc. Decks", + items = { + very_fair, + equilibrium, + misprint, + infinite, + conveyor, + CCD, + wormhole, + redeemed, + legendary, + critical, + glowing, + beta, + bountiful, + beige, + blank, + antimatter, + e_deck, + et_deck, + sk_deck, + st_deck, + sl_deck, + }, +} diff --git a/Cryptid/items/enhanced.lua b/Cryptid/items/enhanced.lua new file mode 100644 index 0000000..07981d1 --- /dev/null +++ b/Cryptid/items/enhanced.lua @@ -0,0 +1,444 @@ +local atlasenhanced = { + object_type = "Atlas", + key = "atlasenhanced", + path = "atlasdeck.png", + px = 71, + py = 95, +} +local atlasedition = { + object_type = "Atlas", + key = "atlaseditiondeck", + path = "atlaseditiondeck.png", + px = 71, + py = 95, +} + +Cryptid.edeck_sprites = { + edition = { + order = 1, + default = { atlas = "centers", pos = { x = 5, y = 2 } }, + foil = { atlas = "cry_atlaseditiondeck", pos = { x = 0, y = 0 } }, + holo = { atlas = "cry_atlaseditiondeck", pos = { x = 1, y = 0 } }, + polychrome = { atlas = "cry_atlaseditiondeck", pos = { x = 2, y = 0 } }, + negative = { atlas = "cry_atlaseditiondeck", pos = { x = 3, y = 0 } }, + cry_mosaic = { atlas = "cry_atlaseditiondeck", pos = { x = 0, y = 1 } }, + cry_oversat = { atlas = "cry_atlaseditiondeck", pos = { x = 1, y = 1 } }, + cry_glass = { atlas = "cry_atlaseditiondeck", pos = { x = 2, y = 1 } }, + cry_gold = { atlas = "cry_atlaseditiondeck", pos = { x = 3, y = 1 } }, + cry_blur = { atlas = "cry_atlaseditiondeck", pos = { x = 0, y = 2 } }, + cry_noisy = { atlas = "cry_atlaseditiondeck", pos = { x = 1, y = 2 } }, + cry_astral = { atlas = "cry_atlaseditiondeck", pos = { x = 2, y = 2 } }, + cry_m = { atlas = "cry_atlaseditiondeck", pos = { x = 3, y = 2 } }, + }, + enhancement = { + order = 2, + default = { atlas = "centers", pos = { x = 5, y = 2 } }, + m_bonus = { atlas = "cry_atlasenhanced", pos = { x = 3, y = 3 } }, + m_mult = { atlas = "cry_atlasenhanced", pos = { x = 2, y = 3 } }, + m_wild = { atlas = "cry_atlasenhanced", pos = { x = 5, y = 3 } }, + m_glass = { atlas = "cry_atlasenhanced", pos = { x = 4, y = 3 } }, + m_steel = { atlas = "centers", pos = { x = 6, y = 1 } }, + m_stone = { atlas = "centers", pos = { x = 5, y = 0 } }, + m_gold = { atlas = "centers", pos = { x = 6, y = 0 } }, + m_lucky = { atlas = "centers", pos = { x = 4, y = 1 } }, + m_cry_echo = { atlas = "cry_atlasenhanced", pos = { x = 1, y = 5 } }, + m_cry_light = { atlas = "cry_misc", pos = { x = 0, y = 3 } }, + }, + sticker = { + order = 3, + default = { atlas = "centers", pos = { x = 5, y = 2 } }, + eternal = { atlas = "cry_atlasenhanced", pos = { x = 5, y = 2 } }, + perishable = { atlas = "cry_atlasenhanced", pos = { x = 0, y = 3 } }, + rental = { atlas = "cry_atlasenhanced", pos = { x = 1, y = 3 } }, + pinned = { atlas = "cry_atlasenhanced", pos = { x = 0, y = 5 } }, + banana = { atlas = "cry_atlasenhanced", pos = { x = 5, y = 4 } }, + }, + suit = { + order = 4, + default = { atlas = "centers", pos = { x = 5, y = 2 } }, + Diamonds = { atlas = "cry_atlasenhanced", pos = { x = 2, y = 1 } }, + Hearts = { atlas = "cry_atlasenhanced", pos = { x = 3, y = 1 } }, + Spades = { atlas = "cry_atlasenhanced", pos = { x = 4, y = 1 } }, + Clubs = { atlas = "cry_atlasenhanced", pos = { x = 5, y = 1 } }, + }, + seal = { + order = 5, + default = { atlas = "centers", pos = { x = 5, y = 2 } }, + Gold = { atlas = "centers", pos = { x = 1, y = 2 } }, + Red = { atlas = "centers", pos = { x = 0, y = 0 } }, + Blue = { atlas = "cry_atlasenhanced", pos = { x = 2, y = 2 } }, + Purple = { atlas = "cry_atlasenhanced", pos = { x = 1, y = 2 } }, + cry_azure = { atlas = "centers", pos = { x = 0, y = 2 } }, + cry_green = { atlas = "cry_atlasenhanced", pos = { x = 3, y = 5 } }, + }, +} + +cry_edeck_atlas_update = function(self) + local sprite = Cryptid.edeck_sprites[self.edeck_type] + if not sprite then + error(self.edeck_type) + end + local enh_info = { cry_get_enchanced_deck_info(self) } + sprite = sprite[enh_info[sprite.order]] or sprite.default + self.atlas, self.pos = sprite.atlas, sprite.pos + return sprite +end + +local e_deck = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Edition Deck", + key = "e_deck", + order = 17, + pos = { x = 5, y = 2 }, + loc_vars = function(self, info_queue, center) + local aaa = cry_get_enchanced_deck_info(self) + return { vars = { localize({ type = "name_text", set = "Edition", key = "e_" .. aaa }) } } + end, + edeck_type = "edition", + config = {}, + apply = function(self) + local aaa = cry_get_enchanced_deck_info(self) + G.GAME.modifiers.cry_force_edition = aaa + --Ban Edition tags (They will never redeem) + for k, v in pairs(G.P_TAGS) do + if v.config and v.config.edition then + G.GAME.banned_keys[k] = true + end + end + G.E_MANAGER:add_event(Event({ + func = function() + for c = #G.playing_cards, 1, -1 do + G.playing_cards[c]:set_edition(aaa, true, true) + end + return true + end, + })) + end, +} +local et_deck = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Enhancement Deck", + key = "et_deck", + order = 18, + pos = { x = 5, y = 2 }, + edeck_type = "enhancement", + config = {}, + loc_vars = function(self, info_queue, center) + local _, bbb = cry_get_enchanced_deck_info(self) + return { vars = { localize({ type = "name_text", set = "Enhanced", key = bbb }) } } + end, + apply = function(self) + local aaa, bbb = cry_get_enchanced_deck_info(self) + G.GAME.modifiers.cry_force_enhancement = bbb + G.E_MANAGER:add_event(Event({ + func = function() + for c = #G.playing_cards, 1, -1 do + G.playing_cards[c]:set_ability(G.P_CENTERS[bbb]) + end + return true + end, + })) + end, + draw = cry_edeck_draw, +} +local sk_deck = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Sticker Deck", + key = "sk_deck", + order = 19, + pos = { x = 5, y = 2 }, + edeck_type = "sticker", + config = {}, + loc_vars = function(self, info_queue, center) + local _, _, ccc = cry_get_enchanced_deck_info(self) + if ccc == "pinned" then + ccc = "pinned_left" + end + return { vars = { localize({ type = "name_text", set = "Other", key = ccc }) } } + end, + apply = function(self) + local aaa, bbb, ccc = cry_get_enchanced_deck_info(self) + G.GAME.modifiers.cry_force_sticker = ccc + G.E_MANAGER:add_event(Event({ + func = function() + for c = #G.playing_cards, 1, -1 do + G.playing_cards[c].config.center.eternal_compat = true + G.playing_cards[c].config.center.perishable_compat = true + if SMODS.Stickers[ccc] and SMODS.Stickers[ccc].apply then + SMODS.Stickers[ccc]:apply(G.playing_cards[c], true) + else + G.playing_cards[c]["set_" .. ccc](G.playing_cards[c], true) + end + end + return true + end, + })) + end, +} +local st_deck = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Suit Deck", + key = "st_deck", + config = {}, + order = 20, + pos = { x = 5, y = 2 }, + edeck_type = "suit", + loc_vars = function(self, info_queue, center) + local _, _, _, ddd = cry_get_enchanced_deck_info(self) + return { vars = { localize(ddd, "suits_plural") } } + end, + apply = function(self) + local aaa, bbb, ccc, ddd = cry_get_enchanced_deck_info(self) + if ddd == "Spades" then + G.GAME.bosses_used["bl_goad"] = 1e308 + elseif ddd == "Hearts" then + G.GAME.bosses_used["bl_head"] = 1e308 + elseif ddd == "Clubs" then + G.GAME.bosses_used["bl_club"] = 1e308 + elseif ddd == "Diamonds" then + G.GAME.bosses_used["bl_window"] = 1e308 + end + G.GAME.modifiers.cry_force_suit = ddd + G.E_MANAGER:add_event(Event({ + func = function() + for c = #G.playing_cards, 1, -1 do + G.playing_cards[c]:change_suit(ddd) + end + return true + end, + })) + end, +} +local sl_deck = { + object_type = "Back", + dependencies = { + items = { + "set_cry_deck", + }, + }, + name = "cry-Seal Deck", + key = "sl_deck", + order = 21, + pos = { x = 5, y = 2 }, + config = {}, + edeck_type = "seal", + loc_vars = function(self, info_queue, center) + local _, _, _, _, eee = cry_get_enchanced_deck_info(self) + return { vars = { localize({ type = "name_text", set = "Other", key = eee:lower() .. "_seal" }) } } + end, + apply = function(self) + local aaa, bbb, ccc, ddd, eee = cry_get_enchanced_deck_info(self) + G.GAME.modifiers.cry_force_seal = eee + G.E_MANAGER:add_event(Event({ + func = function() + for c = #G.playing_cards, 1, -1 do + G.playing_cards[c]:set_seal(eee, true) + end + return true + end, + })) + end, +} + +return { + name = "Enhanced Decks", + init = function() + local sa = Card.set_ability + function Card:set_ability(center, y, z) + --adding immutable to cards because + -- A they are hardcoded and unaffected by misprintize but still have a description that changes because of it + -- B so they ignore misprintize in order to keep vanilla descripton accurate (ex hack shouldn't be able to trigger more than once) + -- C so Gemini doesn't say they are compatible when they are not + -- D Invisible Joker + + if + center.name == "Fortune Teller" + or center.name == "Shoot the Moon" + or center.name == "Riff-raff" + or center.name == "Chaos the Clown" + or center.name == "Dusk" + or center.name == "Mime" + or center.name == "Hack" + or center.name == "Sock and Buskin" + or center.name == "Invisible Joker" + or center.name == "Swashbuckler" + or center.name == "Smeared Joker" + or center.name == "Certificate" + or center.name == "Mr. Bones" + or center.name == "Diet Cola" + or center.name == "Luchador" + or center.name == "Midas Mask" + or center.name == "Shortcut" + or center.name == "Seance" + or center.name == "Superposition" + or center.name == "Sixth Sense" + or center.name == "DNA" + or center.name == "Splash" + or center.name == "Supernova" + or center.name == "Pareidolia" + or center.name == "Raised Fist" + or center.name == "Marble Joker" + or center.name == "Four Fingers" + or center.name == "Joker Stencil" + or center.name == "Showman" + or center.name == "Blueprint" + or center.name == "Oops! All 6s" + or center.name == "Brainstorm" + or center.name == "Cartomancer" + or center.name == "Astronomer" + or center.name == "Burnt Joker" + or center.name == "Chicot" + or center.name == "Perkeo" + then + self.config.center.immutable = true + end + if safe_get(center, "name") == "Default Base" then -- scuffed + return sa( + self, + (not self.no_forced_enhancement and G.GAME.modifiers.cry_force_enhancement) + and G.P_CENTERS[G.GAME.modifiers.cry_force_enhancement] + or center, + y, + z + ) + else + return sa(self, center, y, z) + end + end + local se = Card.set_edition + function Card:set_edition(edition, y, z, force) + if not force then + return se( + self, + (not self.no_forced_edition and G.GAME.modifiers.cry_force_edition) + and { [G.GAME.modifiers.cry_force_edition] = true } + or edition, + y, + z + ) + end + return se(self, edition, y, z) + end + local ss = Card.set_seal + function Card:set_seal(seal, y, z) + return ss(self, not self.no_forced_seal and G.GAME.modifiers.cry_force_seal or seal, y, z) + end + local cs = Card.change_suit + function Card:change_suit(new_suit) + return cs(self, not self.no_forced_suit and G.GAME.modifiers.cry_force_suit or new_suit) + end + local sc = Card.set_cost + function Card:set_cost() + if self.edition and G.GAME.modifiers.cry_no_edition_price then + local m = cry_deep_copy(self.edition) + self.edition = nil + sc(self) + self.edition = m + else + sc(self) + end + end + local ccl = Card.click + function Card:click() + ccl(self) + if + Galdur + and (self.edeck_select or (self.area == safe_get(Galdur, "run_setup", "selected_deck_area") and safe_get( + self, + "config", + "center", + "edeck_type" + ))) + or ( + safe_get(G.GAME, "viewed_back", "effect", "center", "edeck_type") + and (self.back == "viewed_back" or self.edeck_select) + ) + then + if self.edeck_select then + G.PROFILES[G.SETTINGS.profile]["cry_edeck_" .. self.config.center.edeck_type] = self.edeck_select + end + cry_enhancement_config_UI(Galdur and self.config.center or G.GAME.viewed_back.effect.center) + end + end + function cry_enhancement_config_UI(center) + G.SETTINGS.paused = true + G.your_collection = {} + G.your_collection[1] = CardArea( + G.ROOM.T.x + 0.2 * G.ROOM.T.w / 2, + G.ROOM.T.h, + 5.3 * G.CARD_W, + 1.03 * G.CARD_H, + { card_limit = 5, type = "title", highlight_limit = 0, collection = true } + ) + local deck_tables = { + n = G.UIT.R, + config = { align = "cm", padding = 0, no_fill = true }, + nodes = { + { n = G.UIT.O, config = { object = G.your_collection[1] } }, + }, + } + + local pool_table = { + edition = G.P_CENTER_POOLS.Edition, + enhancement = G.P_CENTER_POOLS.Enhanced, + sticker = SMODS.Stickers, + suit = SMODS.Suits, + seal = G.P_SEALS, + } + local editions = {} + for _, v in pairs(pool_table[center.edeck_type]) do + if v.key ~= "e_base" and not v.no_edeck then + editions[#editions + 1] = (center.edeck_type == "edition" and v.key:sub(3)) or v.key + end + end + + for i = 1, #editions do + local _center = cry_deep_copy(center) + _center.config["cry_force_" .. center.edeck_type] = editions[i] + cry_edeck_atlas_update(_center) + local card = create_generic_card(_center) + card.edeck_select = editions[i] + G.your_collection[1]:emplace(card) + end + + INIT_COLLECTION_CARD_ALERTS() + + local t = create_UIBox_generic_options({ + --infotip = localize("cry_gameset_explanation"), + back_func = "setup_run", + snap_back = true, + contents = { + { + n = G.UIT.R, + config = { align = "cm", minw = 2.5, padding = 0.1, r = 0.1, colour = G.C.BLACK, emboss = 0.05 }, + nodes = { deck_tables }, + }, + }, + }) + G.FUNCS.overlay_menu({ + definition = t, + }) + end + end, + items = { e_deck, et_deck, sk_deck, st_deck, sl_deck, atlasenhanced, atlasedition }, +} diff --git a/Cryptid/Items/EpicJokers.lua b/Cryptid/items/epic.lua similarity index 62% rename from Cryptid/Items/EpicJokers.lua rename to Cryptid/items/epic.lua index d1de8c2..1cdddfb 100644 --- a/Cryptid/Items/EpicJokers.lua +++ b/Cryptid/items/epic.lua @@ -1,8 +1,33 @@ +--[[ +gameset_config = { + modest = {extra = {chips = 1}, center = {rarity = 1, blueprint_compat = false, immutable = true, no_dbl = false}}, + mainline = {center = {rarity = 2, blueprint_compat = true, immutable = true, no_dbl = true}}, + madness = {extra = {chips = 100}, center = {rarity = 3}}, + cryptid_in_2025 = {extra = {chips = 1e308}, center = {rarity = "cry_exotic"}}, + }, +-- Card.get_gameset(card) ~= "modest" + +--TODO Modest descriptions for +Supercell +Old Membership card +Canvas +Nostalgic Googol Play Card +One For all +--]] + +-- Supercell +-- +15 Chips, +15 Mult, X2 Chips, X2 Mult, earn $3 at end of round +-- TODO: Modest description local supercell = { object_type = "Joker", name = "cry-supercell", key = "supercell", config = { extra = { stat1 = 15, stat2 = 2, money = 3 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, pos = { x = 5, y = 1 }, rarity = "cry_epic", cost = 14, @@ -13,15 +38,23 @@ local supercell = { return { vars = { center.ability.extra.stat1, center.ability.extra.stat2, center.ability.extra.money } } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after then + if context.joker_main then if card.ability.extra.stat2 > 1 then --misprint deck moment - return { - message = localize("cry_gaming_ex"), - chip_mod = card.ability.extra.stat1, - mult_mod = card.ability.extra.stat1, - Xchip_mod = card.ability.extra.stat2, - Xmult_mod = card.ability.extra.stat2, - } + if Card.get_gameset(card) ~= "modest" then + return { + message = localize("cry_gaming_ex"), + chip_mod = card.ability.extra.stat1, + mult_mod = card.ability.extra.stat1, + Xchip_mod = card.ability.extra.stat2, + Xmult_mod = card.ability.extra.stat2, + } + else + return { + message = localize("cry_gaming_ex"), + Xchip_mod = card.ability.extra.stat2, + Xmult_mod = card.ability.extra.stat2, + } + end end end end, @@ -37,21 +70,32 @@ local supercell = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } + +-- Old Membership Card +-- +1 Chip for each member in the Cryptid Discord local membershipcardtwo = { object_type = "Joker", name = "cry-membershipcardtwo", key = "membershipcardtwo", config = { extra = { chips = 1 } }, + gameset_config = { + modest = { cost = 20, center = { rarity = 4 } }, + }, + dependencies = { + items = { + "set_cry_epic", + }, + }, pos = { x = 5, y = 4 }, rarity = "cry_epic", cost = 17, @@ -59,42 +103,58 @@ local membershipcardtwo = { blueprint_compat = true, atlas = "atlasepic", loc_vars = function(self, info_queue, card) - return { vars = { card.ability.extra.chips, card.ability.extra.chips * GLOBAL_cry_member_count } } + local a = 1 + if Card.get_gameset(card) == "modest" then + a = 8 + end + return { + vars = { card.ability.extra.chips, card.ability.extra.chips * math.floor(GLOBAL_cry_member_count / a) }, + } end, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and not context.before - and not context.after - and card.ability.extra.chips > 0 - then + if context.joker_main and card.ability.extra.chips > 0 then + local a = 1 + if Card.get_gameset(card) == "modest" then + a = 8 + end return { message = localize({ type = "variable", key = "a_chips", - vars = { card.ability.extra.chips * GLOBAL_cry_member_count }, + vars = { card.ability.extra.chips * math.floor(GLOBAL_cry_member_count / a) }, }), - chip_mod = card.ability.extra.chips * GLOBAL_cry_member_count, + chip_mod = card.ability.extra.chips * math.floor(GLOBAL_cry_member_count / a), } end end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } + +-- Googol Play Card +-- 1 in 8 chance for X1e100 Mult local googol_play = { object_type = "Joker", name = "cry-Googol Play Card", key = "googol_play", config = { extra = { Xmult = 1e100, odds = 8 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + gameset_config = { + modest = { extra = { Xmult = 9, odds = 8 } }, + }, pos = { x = 3, y = 0 }, rarity = "cry_epic", cost = 10, @@ -113,10 +173,9 @@ local googol_play = { end, calculate = function(self, card, context) if - context.cardarea == G.jokers - and not context.before - and not context.after - and pseudorandom("cry_googol_play") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds + context.joker_main + and pseudorandom("cry_googol_play") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), @@ -126,32 +185,43 @@ local googol_play = { end, cry_credits = { idea = { - ".asdom" + ".asdom", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Math" - } + "Math", + }, }, unlocked = false, check_for_unlock = function(self, args) - if args.type == 'chip_score' and to_big(args.chips) >= to_big(1e100) then - unlock_card(self) + if args.type == "chip_score" and to_big(args.chips) >= to_big(1e100) then + unlock_card(self) end - if args.type == 'cry_lock_all' then + if args.type == "cry_lock_all" then lock_card(self) end - if args.type == 'cry_unlock_all' then + if args.type == "cry_unlock_all" then unlock_card(self) end end, } + +-- Sync Catalyst +-- Balances Chips and Mult local sync_catalyst = { object_type = "Joker", name = "cry-Sync Catalyst", key = "sync_catalyst", + dependencies = { + items = { + "set_cry_epic", + }, + }, + gameset_config = { + modest = { cost = 20, center = { rarity = 4 } }, + }, pos = { x = 5, y = 2 }, rarity = "cry_epic", cost = 12, @@ -160,47 +230,75 @@ local sync_catalyst = { immutable = true, atlas = "atlasepic", calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before - and not context.after and not context.debuffed_hand - and hand_chips and mult then + if context.joker_main and not context.debuffed_hand and hand_chips and mult then local tot = hand_chips + mult - if not tot.array or #tot.array < 2 or tot.array[2] < 2 then --below eXeY notation - hand_chips = mod_chips(math.floor(tot / 2)) - mult = mod_mult(math.floor(tot / 2)) + if not tot.array or #tot.array < 2 or tot.array[2] < 2 then --below eXeY notation + hand_chips = mod_chips(math.floor(tot / 2)) + mult = mod_mult(math.floor(tot / 2)) + else + if hand_chips > mult then + tot = hand_chips else - if hand_chips > mult then - tot = hand_chips - else - tot = mult - end - hand_chips = mod_chips(tot) - mult = mod_chips(tot) + tot = mult end - update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) - return { - message = localize("k_balanced"), - colour = { 0.8, 0.45, 0.85, 1 }, - } + hand_chips = mod_chips(tot) + mult = mod_chips(tot) end - end, + update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) + return { + message = localize("k_balanced"), + colour = { 0.8, 0.45, 0.85, 1 }, + } + end + end, cry_credits = { idea = { - "Project666" + "Project666", }, art = { - "Ein13" + "Ein13", }, code = { - "Math" - } + "Math", + }, }, + unlocked = false, + check_for_unlock = function(self, args) + if safe_get(G, "jokers") and safe_get(G.GAME, "round_resets", "ante") and G.GAME.round_resets.ante < 9 then + local rarities = {} + for i = 1, #G.jokers.cards do + local card = G.jokers.cards[i] + rarities[card.config.center.rarity .. "_rarity"] = true + end + if rarities["3_rarity"] and rarities["4_rarity"] and rarities["cry_epic_rarity"] then + unlock_card(self) + end + end + if args.type == "cry_lock_all" then + lock_card(self) + end + if args.type == "cry_unlock_all" then + unlock_card(self) + end + end, } + +-- Negative Joker +-- +4 Joker slots local negative = { object_type = "Joker", name = "cry-Negative Joker", key = "negative", pos = { x = 1, y = 3 }, config = { extra = 4 }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + gameset_config = { + modest = { cost = 16 }, + }, rarity = "cry_epic", cost = 10, order = 70, @@ -216,16 +314,20 @@ local negative = { end, cry_credits = { idea = { - "Xero01" + "Xero01", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Math" - } + "Math", + }, }, } + +-- Canvas +-- Retrigger all Jokers to the left once for every non-Common Joker to the right of this Joker +-- Still considering moving to Legendary - Jevonn local canvas = { object_type = "Joker", name = "cry-Canvas", @@ -233,26 +335,31 @@ local canvas = { immutable = true, order = 4, pos = { x = 2, y = 1 }, - config = { num_retriggers = 0 }, + dependencies = { + items = { + "set_cry_epic", + }, + }, rarity = "cry_epic", cost = 18, blueprint_compat = true, atlas = "atlasepic", calculate = function(self, card, context) if context.retrigger_joker_check and not context.retrigger_joker then - self.config.num_retriggers = 0 + local num_retriggers = 0 for i = 1, #G.jokers.cards do if card.T.x + card.T.w / 2 < G.jokers.cards[i].T.x + G.jokers.cards[i].T.w / 2 and G.jokers.cards[i].config.center.rarity ~= 1 + and (G.jokers.cards[i].config.center.rarity ~= "cry_candy" or Card.get_gameset(card) ~= "modest") then - self.config.num_retriggers = self.config.num_retriggers + 1 + num_retriggers = num_retriggers + 1 end end if card.T.x + card.T.w / 2 > context.other_card.T.x + context.other_card.T.w / 2 then return { message = localize("k_again_ex"), - repetitions = self.config.num_retriggers, + repetitions = Card.get_gameset(card) ~= "modest" and num_retriggers or math.min(2, num_retriggers), card = card, } end @@ -260,22 +367,40 @@ local canvas = { end, cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Math" - } + "Math", + }, }, } + +-- ERROR +-- Displays a glitched message +-- While in shop, all cards are Glitched (fallback: Foil) +-- After a random number of rounds, duplicates all Jokers when sold +-- The glitched message can tell you what the next card rolled in the shop will be (similar to the Misprint easter egg) local error_joker = { object_type = "Joker", name = "cry-Error", key = "error", pos = { x = 4, y = 2 }, config = { extra = { sell_rounds = 0, active = false } }, + dependencies = { + items = { + -- Note: This currently does not have a dependency on Glitched because there's a fallback. + -- However I think this should be changed later... + "set_cry_epic", + }, + }, + conflicts = { + mods = { + "jen", + }, + }, immutable = true, rarity = "cry_epic", cost = 1, @@ -284,25 +409,66 @@ local error_joker = { eternal_compat = false, atlas = "atlasepic", loc_vars = function(self, info_queue, center) - if G.GAME and G.GAME.pseudorandom and G.STAGE == G.STAGES.RUN then - cry_error_msgs[#cry_error_msgs].string = "%%" .. predict_card_for_shop() - else - cry_error_msgs[#cry_error_msgs].string = "%%J6" - end - return { + if safe_get(G.GAME, "pseudorandom") and G.STAGE == G.STAGES.RUN then + cry_error_msgs[#cry_error_msgs].string = "%%" .. predict_card_for_shop() + else + cry_error_msgs[#cry_error_msgs].string = "%%J6" + end + return { main_start = { - {n=G.UIT.O, config={object = DynaText({string = cry_error_operators, colours = {G.C.DARK_EDITION,},pop_in_rate = 9999999, silent = true, random_element = true, pop_delay = 0.30, scale = 0.32, min_cycle_time = 0})}}, - {n=G.UIT.O, config={object = DynaText({string = cry_error_numbers, colours = {G.C.DARK_EDITION,},pop_in_rate = 9999999, silent = true, random_element = true, pop_delay = 0.33, scale = 0.32, min_cycle_time = 0})}}, - {n=G.UIT.O, config={object = DynaText({string = cry_error_msgs, - colours = {G.C.UI.TEXT_DARK},pop_in_rate = 9999999, silent = true, random_element = true, pop_delay = 0.4011, scale = 0.32, min_cycle_time = 0})}}, - } - } + { + n = G.UIT.O, + config = { + object = DynaText({ + string = cry_error_operators, + colours = { G.C.DARK_EDITION }, + pop_in_rate = 9999999, + silent = true, + random_element = true, + pop_delay = 0.30, + scale = 0.32, + min_cycle_time = 0, + }), + }, + }, + { + n = G.UIT.O, + config = { + object = DynaText({ + string = cry_error_numbers, + colours = { G.C.DARK_EDITION }, + pop_in_rate = 9999999, + silent = true, + random_element = true, + pop_delay = 0.33, + scale = 0.32, + min_cycle_time = 0, + }), + }, + }, + { + n = G.UIT.O, + config = { + object = DynaText({ + string = cry_error_msgs, + colours = { G.C.UI.TEXT_DARK }, + pop_in_rate = 9999999, + silent = true, + random_element = true, + pop_delay = 0.4011, + scale = 0.32, + min_cycle_time = 0, + }), + }, + }, + }, + } end, add_to_deck = function(self, card, from_debuff) if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_edition_from_deck then G.GAME.modifiers.cry_force_edition_from_deck = G.GAME.modifiers.cry_force_edition elseif not G.GAME.modifiers.cry_force_edition_from_deck then - if Cryptid.enabled["Misc."] then + if G.P_CENTERS.e_cry_glitched then G.GAME.modifiers.cry_force_edition = "cry_glitched" else G.GAME.modifiers.cry_force_edition = "foil" @@ -331,8 +497,10 @@ local error_joker = { card.ability.extra.sell_rounds = card.ability.extra.sell_rounds - 1 if card.ability.extra.sell_rounds == 0 then card.ability.extra.active = true - local eval = function(card) return not card.REMOVED end - juice_card_until(card, eval, true) + local eval = function(card) + return not card.REMOVED + end + juice_card_until(card, eval, true) else return { message = "???", @@ -347,7 +515,7 @@ local error_joker = { and not context.blueprint then local eval = function(card) - return (card and card.ability and card.ability.loyalty_remaining == 0) and not G.RESET_JIGGLES + return (safe_get(card, "ability", "loyalty_remaining") == 0) and not G.RESET_JIGGLES end juice_card_until(card, eval, true) local jokers = {} @@ -366,1119 +534,17 @@ local error_joker = { end, cry_credits = { idea = { - "Coronacht", "Fetch" + "Coronacht", + "Fetch", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Math" - } + "Math", + }, }, -} -local m = { - object_type = "Joker", - discovered = true, - name = "cry-m", - key = "m", - pos = { x = 3, y = 1 }, - config = { extra = { extra = 13, x_mult = 1 }, jolly = { t_mult = 8, type = "Pair" } }, - pools = {["Meme"] = true}, - rarity = "cry_epic", - order = 1, - cost = 13, - effect = "M Joker", - perishable_compat = false, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } - return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } - end, - atlas = "atlasepic", - calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_mult) > to_big(1)) - and not context.before - and not context.after - then - return { - message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), - Xmult_mod = card.ability.extra.x_mult, - } - end - if - context.selling_card - and context.card:is_jolly() - and not context.blueprint - then - card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra - if not context.retrigger_joker then - --This doesn't display the correct amount of mult if retriggered it display the amount from the first retrigger instead of the final one - --But I would rather have this than constant card_eval_status_text spam - --If anyone knows a solution feel free to do a pr xd - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }) } - ) - end - return nil, true - end - end, - post_process = function(self) - if get_m_retriggers then - local vc = self.calculate - self.calculate = function(self, card, context) - local ret, trig = vc(self, card, context) - if context.retrigger_joker_check and context.other_card == card then - local reps = get_m_retriggers(self, card, context) - if reps > 0 then - return { - message = localize("k_again_ex"), - repetitions = reps + (ret and ret.repetitions or 0), - card = card, - } - end - end - return ret, trig - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Math" - } - }, -} -local M = { - object_type = "Joker", - name = "cry-M", - key = "M", - pos = { x = 0, y = 0 }, - order = 250, - config = { jolly = { t_mult = 8, type = "Pair" } }, - rarity = "cry_epic", - effect = "M Joker", - cost = 13, - immutable = true, - blueprint_compat = true, - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } - if not center.edition or (center.edition and not center.edition.negative) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_negative - end - end, - atlas = "atlasepic", - calculate = function(self, card, context) - if context.setting_blind and not (context.blueprint_card or self).getting_sliced then - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_jolly") - card:set_edition({ - negative = true, - }) - card:add_to_deck() - G.jokers:emplace(card) - return nil, true - end - end, - post_process = function(self) - if get_m_retriggers then - local vc = self.calculate - self.calculate = function(self, card, context) - local ret, trig = vc(self, card, context) - if context.retrigger_joker_check and context.other_card == card then - local reps = get_m_retriggers(self, card, context) - if reps > 0 then - return { - message = localize("k_again_ex"), - repetitions = reps + (ret and ret.repetitions or 0), - card = card, - } - end - end - return ret, trig - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Math" - } - }, -} -local boredom = { - object_type = "Joker", - name = "cry-Boredom", - key = "boredom", - pos = { x = 1, y = 0 }, - config = { extra = { odds = 2 } }, - pools = {["Meme"] = true}, - rarity = "cry_epic", - order = 32, - cost = 14, - blueprint_compat = true, - loc_vars = function(self, info_queue, card) - return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), card.ability.extra.odds } } - end, - atlas = "atlasepic", - calculate = function(self, card, context) - if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then - if pseudorandom("cry_boredom_joker") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then - return { - message = localize("k_again_ex"), - repetitions = 1, - card = card, - } - else - return nil, true - end - end - if - context.repetition - and context.cardarea == G.play - and pseudorandom("cry_boredom_card") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds - then - return { - message = localize("k_again_ex"), - repetitions = 1, - card = card, - } - end - end, - cry_credits = { - idea = { - "Math" - }, - art = { - "Saturn" - }, - code = { - "Math" - } - }, -} -local number_blocks = { - object_type = "Joker", - name = "cry-Number Blocks", - key = "number_blocks", - config = { extra = { money_mod = 1, money = 1 } }, - pos = { x = 0, y = 2 }, - rarity = "cry_epic", - cost = 14, - order = 12, - atlas = "atlasepic", - loc_vars = function(self, info_queue, center) - return { - vars = { - center.ability.extra.money, - center.ability.extra.money_mod, - localize(G.GAME.current_round.cry_nb_card and G.GAME.current_round.cry_nb_card.rank or "Ace", "ranks"), - }, - } - end, - calculate = function(self, card, context) - if - context.individual - and not context.end_of_round - and context.cardarea == G.hand - and not context.blueprint - and not context.before - and not context.after - and context.other_card:get_id() == G.GAME.current_round.cry_nb_card.id - then - if context.other_card.debuff then - return { - message = localize("k_debuffed"), - colour = G.C.RED, - card = card, - } - else - card.ability.extra.money = card.ability.extra.money + card.ability.extra.money_mod - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_upgrade_ex") }) - return nil, true - end - end - end, - calc_dollar_bonus = function(self, card) - if card.ability.extra.money > 0 then - return card.ability.extra.money - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Math" - } - }, -} -local double_scale = { - object_type = "Joker", - name = "cry-Double Scale", - key = "Double Scale", - pos = { x = 0, y = 3 }, - order = 6, - rarity = "cry_epic", - cost = 18, - immutable = true, - atlas = "atlasepic", - --todo: support jokers that scale multiple variables - cry_scale_mod = function(self, card, joker, orig_scale_scale, true_base, orig_scale_base, new_scale_base) - return orig_scale_scale + true_base - end, - cry_credits = { - idea = { - "Mystic Misclick" - }, - art = { - "AlezZGreat" - }, - code = { - "Math", "Mathguy" - } - }, -} -local oldcandy = { - object_type = "Joker", - name = "cry_oldcandy", - key = "oldcandy", - pos = { x = 4, y = 1 }, - order = 43, - config = { extra = { hand_size = 3 } }, - loc_vars = function(self, info_queue, center) - return { vars = { math.max(1, math.floor(center.ability.extra.hand_size)) } } - end, - rarity = "cry_epic", - cost = 9, - eternal_compat = false, - atlas = "atlasepic", - calculate = function(self, card, context) - if context.selling_self and not context.blueprint then - G.hand:change_size(math.max(1, math.floor(card.ability.extra.hand_size))) - return nil, true - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local circus = { - object_type = "Joker", - name = "cry-circus", - key = "circus", - pos = { x = 4, y = 4 }, - config = { extra = { Xmult = 1 } }, - atlas = "atlasepic", - order = 33, - loc_vars = function(self, info_queue, center) - return { - vars = { - (math.max(1, center.ability.extra.Xmult) * 2), - (math.max(1, center.ability.extra.Xmult) * 3), - (math.max(1, center.ability.extra.Xmult) * 4), - (math.max(1, center.ability.extra.Xmult) * 20), - }, - } - end, - rarity = "cry_epic", - cost = 16, - blueprint_compat = true, - calculate = function(self, card, context) - if context.other_joker and card ~= context.other_joker then - if context.other_joker.config.center.rarity == 3 then --Rare - if not Talisman.config_file.disable_anims then - G.E_MANAGER:add_event(Event({ - func = function() - context.other_joker:juice_up(0.5, 0.5) - return true - end, - })) - end - return { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { (math.max(1, card.ability.extra.Xmult) * 2) }, - }), - Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 2), - } - elseif context.other_joker.config.center.rarity == 4 then --Legendary - if not Talisman.config_file.disable_anims then - G.E_MANAGER:add_event(Event({ - func = function() - context.other_joker:juice_up(0.5, 0.5) - return true - end, - })) - end - return { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { (math.max(1, card.ability.extra.Xmult) * 4) }, - }), - Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 4), - } - elseif context.other_joker.config.center.rarity == "cry_epic" then --Epic - if not Talisman.config_file.disable_anims then - G.E_MANAGER:add_event(Event({ - func = function() - context.other_joker:juice_up(0.5, 0.5) - return true - end, - })) - end - return { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { (math.max(1, card.ability.extra.Xmult) * 3) }, - }), - Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 3), - } - elseif context.other_joker.config.center.rarity == "cry_exotic" then --Exotic - if not Talisman.config_file.disable_anims then - G.E_MANAGER:add_event(Event({ - func = function() - context.other_joker:juice_up(0.5, 0.5) - return true - end, - })) - end - return { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { (math.max(1, card.ability.extra.Xmult) * 20) }, - }), - Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 20), - } - end - end - end, - cry_credits = { - idea = { - "Ein13" - }, - art = { - "Ein13" - }, - code = { - "Jevonn" - } - }, - unlocked = false, - check_for_unlock = function(self, args) - if G and G.jokers and G.GAME and G.GAME.round_resets and G.GAME.round_resets.ante and G.GAME.round_resets.ante < 9 then - local rarities = { - - } - for i = 1, #G.jokers.cards do - local card = G.jokers.cards[i] - rarities[card.config.center.rarity .. '_rarity'] = true - end - if rarities['3_rarity'] and rarities['4_rarity'] and rarities['cry_epic_rarity'] then - unlock_card(self) - end - 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 caramel = { - object_type = "Joker", - name = "cry-caramel", - key = "caramel", - config = { extra = { x_mult = 1.75, rounds_remaining = 11 } }, - pos = { x = 0, y = 1 }, - rarity = "cry_epic", - cost = 12, - order = 106, - blueprint_compat = true, - eternal_compat = false, - atlas = "atlasepic", - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.x_mult, center.ability.extra.rounds_remaining } } - end, - calculate = function(self, card, context) - if context.individual then - if context.cardarea == G.play then - return { - x_mult = card.ability.extra.x_mult, - colour = G.C.RED, - card = card, - } - end - end - if - context.end_of_round - and not context.blueprint - and not context.individual - and not context.repetition - and not context.retrigger_joker - then - card.ability.extra.rounds_remaining = card.ability.extra.rounds_remaining - 1 - if card.ability.extra.rounds_remaining > 0 then - return { - message = { localize("cry_minus_round") }, - colour = G.C.FILTER, - } - else - G.E_MANAGER:add_event(Event({ - func = function() - play_sound("tarot1") - card.T.r = -0.2 - card:juice_up(0.3, 0.4) - card.states.drag.is = true - card.children.center.pinch.x = true - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - blockable = false, - func = function() - G.jokers:remove_card(card) - card:remove() - card = nil - return true - end, - })) - return true - end, - })) - return { - message = localize("k_eaten_ex"), - colour = G.C.FILTER, - } - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} ---this has to be the most spaghetti code in cryptid -local curse_sob = { - object_type = "Joker", - name = "cry_curse_sob", - key = "curse_sob", - pos = { x = 1, y = 1 }, - pools = {["Meme"] = true}, - rarity = "cry_epic", - cost = 9, - order = 82, - immutable = true, - perishable_compat = true, - atlas = "atlasepic", - calculate = function(self, card, context) - if - context.selling_card - and context.card.ability.name == "Obelisk" - and not context.retrigger_joker - and not context.blueprint - then - return {} - elseif - (-- Compacting all the elseifs into one block for space and readability also maintablity - context.selling_self - or context.discard - or context.pre_discard -- We want 2 obilisks per discard? dunno just copying what was there - or context.reroll_shop --Yes - or context.buying_card - or context.skip_blind - or context.using_consumeable - or context.selling_card - or context.setting_blind - or context.skipping_booster - or context.open_booster - ) - and #G.jokers.cards + G.GAME.joker_buffer < (context.selling_self and (G.jokers.config.card_limit + 1) or G.jokers.config.card_limit) - and not context.retrigger_joker - and not context.blueprint - then - local createjoker = math.min(1, G.jokers.config.card_limit - (#G.jokers.cards + G.GAME.joker_buffer)) - G.GAME.joker_buffer = G.GAME.joker_buffer + createjoker - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_obelisk") - card:add_to_deck() - G.jokers:emplace(card) - G.GAME.joker_buffer = 0 - return { - card_eval_status_text(card, "extra", nil, nil, nil, { - message = localize("cry_curse_ex"), - colour = G.C.FILTER, - }), - } - end - end, - add_to_deck = function(self, card, from_debuff) - if not from_debuff then - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_obelisk") - card:set_edition("e_negative", true, nil, true) - card.ability.cry_absolute = true - card:add_to_deck() - G.jokers:emplace(card) - return { - card_eval_status_text(card, "extra", nil, nil, nil, { - message = localize("cry_curse_ex"), - colour = G.C.DARK_EDITION, - }), - } - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, - unlocked = false, - check_for_unlock = function(self, args) - if G and G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.key == 'j_obelisk' and G.jokers.cards[i].ability.eternal then - unlock_card(self) - end - end - 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 bonusjoker = { - object_type = "Joker", - name = "cry-Bonus Joker", - key = "bonusjoker", - pos = { x = 3, y = 2 }, - config = { extra = { odds = 8, check = 0, add = 1 } }, - rarity = "cry_epic", - cost = 11, - order = 75, - blueprint_compat = true, - enhancement_gate = "m_bonus", - loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = G.P_CENTERS.m_bonus - return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), card.ability.extra.odds, card.ability.extra.add } } - end, - atlas = "atlasepic", - calculate = function(self, card, context) - if context.individual and context.cardarea == G.play then - if context.other_card.ability.effect == "Bonus Card" then - if - pseudorandom("bonusjoker") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds - and card.ability.extra.check < 2 - and not context.retrigger_joker - then - local option = pseudorandom_element({ 1, 2 }, pseudoseed("bonusjoker")) - if option == 1 then - if not context.blueprint then - card.ability.extra.check = card.ability.extra.check + 1 - end - G.jokers.config.card_limit = G.jokers.config.card_limit + card.ability.extra.add - else - if not context.blueprint then - card.ability.extra.check = card.ability.extra.check + 1 - end - G.consumeables.config.card_limit = G.consumeables.config.card_limit + card.ability.extra.add - end - return { - extra = { focus = card, message = localize("k_upgrade_ex") }, - card = card, - colour = G.C.MONEY, - } - end - end - end - if - context.end_of_round - and card.ability.extra.check ~= 0 - and not context.blueprint - and not context.retrigger_joker - and not context.individual - and not context.repetition - then - card.ability.extra.check = 0 - return { - message = localize("k_reset"), - card = card, - } - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local multjoker = { - object_type = "Joker", - name = "cry-Mult Joker", - key = "multjoker", - pos = { x = 2, y = 3 }, - config = { extra = { odds = 3 } }, - rarity = "cry_epic", - order = 99, - cost = 11, - blueprint_compat = true, - enhancement_gate = "m_mult", - loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = G.P_CENTERS.m_mult - info_queue[#info_queue + 1] = G.P_CENTERS.c_cryptid - return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), card.ability.extra.odds } } - end, - atlas = "atlasepic", - calculate = function(self, card, context) - if context.individual and context.cardarea == G.play then - if - context.other_card.ability.effect == "Mult Card" - and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit - then - if pseudorandom("multjoker") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then - G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1 - G.E_MANAGER:add_event(Event({ - func = function() - local new_card = - create_card("Spectral", G.consumeables, nil, nil, nil, nil, "c_cryptid", "multjoker") - new_card:add_to_deck() - G.consumeables:emplace(new_card) - G.GAME.consumeable_buffer = 0 - return true - end, - })) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { message = localize("cry_plus_cryptid"), colour = G.C.SECONDARY_SET.Spectral } - ) - return nil, true - end - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local goldjoker = { - object_type = "Joker", - name = "cry-gold Joker", - key = "goldjoker", - config = { extra = { percent_mod = 2, percent = 0 } }, - pos = { x = 0, y = 4 }, - rarity = "cry_epic", - cost = 14, - order = 81, - enhancement_gate = "m_gold", - perishable_compat = false, - atlas = "atlasepic", - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = G.P_CENTERS.m_gold - return { vars = { center.ability.extra.percent, center.ability.extra.percent_mod } } - end, - calculate = function(self, card, context) - if context.cardarea == G.play and context.individual and not context.blueprint then - if context.other_card.ability.effect == "Gold Card" then - card.ability.extra.percent = card.ability.extra.percent + card.ability.extra.percent_mod - return { - extra = { focus = card, message = localize("k_upgrade_ex") }, - card = card, - colour = G.C.MONEY, - } - end - end - if context.individual and context.cardarea == G.play then - if context.other_card.ability.effect == "Gold Card" then - card.ability.extra.percent = card.ability.extra.percent + card.ability.extra.percent_mod - return { - message = localize("k_upgrade_ex"), - card = card, - colour = G.C.CHIPS, - } - end - end - end, - calc_dollar_bonus = function(self, card) - local bonus = math.max(0, math.floor(0.01 * card.ability.extra.percent * (G.GAME.dollars or 0))) - if bonus > 0 then - if G.GAME.dollars > 1e10 then - return 1 - else - return bonus - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local altgoogol = { - object_type = "Joker", - name = "cry-altgoogol", - key = "altgoogol", - config = { extra = { jokers = 2 } }, - pos = { x = 4, y = 3 }, - rarity = "cry_epic", - cost = 10, - order = 60, - blueprint_compat = true, - eternal_compat = false, - atlas = "atlasepic", - soul_pos = { x = 10, y = 0, extra = { x = 5, y = 3 } }, - loc_vars = function(self, info_queue, card) - return { vars = { math.floor(math.min(20, card.ability.extra.jokers)) } } - end, - calculate = function(self, card, context) - if context.selling_self and not context.retrigger_joker then - local jokers = {} - for i=1, #G.jokers.cards do - if G.jokers.cards[i] ~= card then - jokers[#jokers+1] = G.jokers.cards[i] - end - end - if #jokers > 0 then - if G.jokers.cards[1].ability.name ~= "cry-altgoogol" then - local spawn = {G.jokers.cards[1]} - G.E_MANAGER:add_event(Event({ - func = function() - for i = 1, math.floor(math.min(20, card.ability.extra.jokers)) do - local card = copy_card(pseudorandom_element(spawn, pseudoseed("cry_ngpc")), nil) - card:add_to_deck() - G.jokers:emplace(card) - end - return true - end, - })) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { - message = localize("k_duplicated_ex"), - colour = G.C.RARITY.cry_epic, - } - ) - return nil, true - else - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { - message = localize("k_nope_ex"), - colour = G.C.RARITY.cry_epic, - } - ) - return nil, true - end - else - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { - message = localize("k_no_other_jokers"), - colour = G.C.RARITY.cry_epic, - } - ) - return nil, true - end - end - end, - cry_credits = { - idea = { - "Jevonn" - }, - art = { - "Jevonn" - }, - code = { - "Jevonn" - } - }, -} -local soccer = { - object_type = "Joker", - name = "cry-soccer", - key = "soccer", - pos = { x = 1, y = 4 }, - config = { extra = { holygrail = 1 } }, - rarity = "cry_epic", - order = 58, - cost = 20, - atlas = "atlasepic", - loc_vars = function(self, info_queue, center) - return { vars = { math.floor(math.min(15, center.ability.extra.holygrail)) } } - end, - add_to_deck = function(self, card, from_debuff) --TODO: Card in booster packs, Voucher slots - local holy = math.floor(math.min(15, card.ability.extra.holygrail)) - G.jokers.config.card_limit = G.jokers.config.card_limit + holy - G.consumeables.config.card_limit = G.consumeables.config.card_limit + holy - G.hand:change_size(holy) - 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 + holy - change_shop_size(holy) - cry_bonusvouchermod(holy) - end, - remove_from_deck = function(self, card, from_debuff) - local holy = math.floor(math.min(15, card.ability.extra.holygrail)) - G.jokers.config.card_limit = G.jokers.config.card_limit - holy - G.consumeables.config.card_limit = G.consumeables.config.card_limit - holy - G.hand:change_size(-holy) - 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 - holy - change_shop_size(holy * -1) - cry_bonusvouchermod(-1*holy) - end, - cry_credits = { - idea = { - "Mjiojio" - }, - art = { - "HexaCryonic" - }, - code = { - "Jevonn" - } - }, - unlocked = false, - check_for_unlock = function(self, args) - if args.type == 'win' then - - for k,v in pairs(G.GAME.hands) do - if k ~= 'High Card' and G.GAME.hands[k].played ~= 0 then - return - end - end - return true - 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 fleshpanopticon = { - object_type = "Joker", - name = "cry-fleshpanopticon", - key = "fleshpanopticon", - pos = { x = 0, y = 5 }, - config = { extra = { boss_size = 20 } }, - rarity = "cry_epic", - cost = 15, - order = 146, - atlas = "atlasepic", - loc_vars = function(self, info_queue, center) - if Cryptid.enabled["Exotic Jokers"] then - info_queue[#info_queue + 1] = { set = "Spectral", key = "c_cry_gateway" } - end - if not center.edition or (center.edition and not center.edition.negative) then - info_queue[#info_queue + 1] = G.P_CENTERS.e_negative - end - return { vars = { center.ability.extra.boss_size } } - end, - calculate = function(self, card, context) - if context.setting_blind and not context.blueprint and context.blind.boss and not card.getting_sliced then - local eval = function(card) return not card.REMOVED and not G.RESET_JIGGLES end - juice_card_until(card, eval, true) - card.gone = false - G.GAME.blind.chips = G.GAME.blind.chips * card.ability.extra.boss_size - G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) - G.HUD_blind:recalculate(true) - G.E_MANAGER:add_event(Event({func = function() - G.E_MANAGER:add_event(Event({func = function() - play_sound('timpani') - delay(0.4) - return true end })) - card_eval_status_text(card, 'extra', nil, nil, nil, {message = localize("cry_good_luck_ex")}) - return true end })) - end - if context.end_of_round and not context.individual and not context.repetition and not context.blueprint and G.GAME.blind.boss and not card.gone then - G.E_MANAGER:add_event(Event({ - trigger = 'before', - delay = 0.0, - func = (function() - local card = create_card(nil,G.consumeables, nil, nil, nil, nil, Cryptid.enabled["Exotic Jokers"] and 'c_cry_gateway' or 'c_soul', 'sup') - card:set_edition({negative = true}, true) - card:add_to_deck() - G.consumeables:emplace(card) - return true - end)})) - if not card.ability.eternal then - G.E_MANAGER:add_event(Event({ - func = function() - play_sound('tarot1') - card.T.r = -0.2 - card:juice_up(0.3, 0.4) - card.states.drag.is = true - card.children.center.pinch.x = true - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.3, blockable = false, - func = function() - G.jokers:remove_card(card) - card:remove() - card = nil - return true; end})) - return true - end - })) - end - card.gone = true - end - end, - cry_credits = { - idea = { - "notmario" - }, - art = { - "notmario" - }, - code = { - "notmario" - } - }, -} -local spectrogram = { - object_type = "Joker", - name = "cry-Spectrogram", - key = "spectrogram", - pos = { x = 1, y = 5 }, - config = { extra = {} }, - rarity = "cry_epic", - cost = 9, - order = 133, - atlas = "atlasepic", - loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = G.P_CENTERS.m_cry_echo - - return { vars = {} } - end, - calculate = function(self, card, context) - if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then - if context.other_context.scoring_hand then - if context.other_card == G.jokers.cards[#G.jokers.cards] then - local echonum = 0 - for i, v in pairs (context.other_context.scoring_hand) do - if v.config.center_key == 'm_cry_echo' then - echonum = echonum + 1 - end - end - if echonum > 0 then - return { - message = localize("k_again_ex"), - repetitions = echonum, - card = card, - } - end - end - end - end - end, - cry_credits = { - idea = { - "AlexZGreat" - }, - art = { - "SMG9000" - }, - code = { - "AlexZGreat" - } - }, -} -return { - name = "Epic Jokers", - init = function() - --Error Patches + init = function(self) cry_error_operators = { "+", "-", "X", "/", "^", "=", ">", "<", "m" } cry_error_numbers = { "0", @@ -1580,78 +646,1243 @@ return { check_rate = check_rate + v.val end end - --Number Blocks Patches - local gigo = Game.init_game_object - function Game:init_game_object() - local g = gigo(self) - g.current_round.cry_nb_card = { rank = "Ace" } - return g + end, +} + +-- m +-- This Joker gains X13 Mult when Jolly Joker is sold +local m = { + object_type = "Joker", + discovered = true, + name = "cry-m", + key = "m", + pos = { x = 3, y = 1 }, + config = { extra = { extra = 13, x_mult = 1 } }, + gameset_config = { + modest = { extra = { extra = 1, x_mult = 1 } }, + }, + dependencies = { + items = { + "set_cry_epic", + -- Note: This isn't in the M Joker content set due to being added separately + }, + }, + pools = { ["Meme"] = true, ["M"] = true }, + rarity = "cry_epic", + order = 1, + cost = 13, + effect = "M Joker", + perishable_compat = false, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly + return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } + end, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.joker_main and (to_big(card.ability.extra.x_mult) > to_big(1)) then + return { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), + Xmult_mod = card.ability.extra.x_mult, + } end - local rcc = reset_castle_card - function reset_castle_card() - rcc() - G.GAME.current_round.cry_nb_card = { rank = "Ace" } - local valid_castle_cards = {} - for k, v in ipairs(G.playing_cards) do - if v.ability.effect ~= "Stone Card" then - valid_castle_cards[#valid_castle_cards + 1] = v + if context.selling_card and context.card:is_jolly() and not context.blueprint then + card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra + if not context.retrigger_joker then + --This doesn't display the correct amount of mult if retriggered it display the amount from the first retrigger instead of the final one + --But I would rather have this than constant card_eval_status_text spam + --If anyone knows a solution feel free to do a pr xd + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }) } + ) + end + return nil, true + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Math", + }, + }, +} + +-- M +-- Create a Negative Jolly Joker when Blind is selected +local M = { + object_type = "Joker", + name = "cry-M", + key = "M", + pos = { x = 0, y = 0 }, + order = 250, + dependencies = { + items = { + "set_cry_epic", + --Note: This isn't in the M Joker content set due to being added separately + }, + }, + rarity = "cry_epic", + effect = "M Joker", + cost = 13, + immutable = true, + blueprint_compat = true, + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly + if not center.edition or (center.edition and not center.edition.negative) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_negative + end + end, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.setting_blind and not (context.blueprint_card or self).getting_sliced then + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_jolly") + card:set_edition({ + negative = true, + }) + card:add_to_deck() + G.jokers:emplace(card) + return nil, true + end + end, + pools = { ["M"] = true }, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Math", + }, + }, +} + +-- Boredom +-- 1 in 2 chance to retrigger each Joker or played card +local boredom = { + object_type = "Joker", + name = "cry-Boredom", + key = "boredom", + pos = { x = 1, y = 0 }, + config = { extra = { odds = 2 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + gameset_config = { + modest = { extra = { odds = 3 } }, + }, + pools = { ["Meme"] = true }, + rarity = "cry_epic", + order = 32, + cost = 14, + blueprint_compat = true, + loc_vars = function(self, info_queue, card) + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), + card.ability.extra.odds, + }, + } + end, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then + if + pseudorandom("cry_boredom_joker") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) + / card.ability.extra.odds + then + return { + message = localize("k_again_ex"), + repetitions = 1, + card = card, + } + else + return nil, true + end + end + if + context.repetition + and context.cardarea == G.play + and pseudorandom("cry_boredom_card") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds + then + return { + message = localize("k_again_ex"), + repetitions = 1, + card = card, + } + end + end, + cry_credits = { + idea = { + "Math", + }, + art = { + "Saturn", + }, + code = { + "Math", + }, + }, +} + +-- Number Blocks +-- Earn $1 at end of round; Increase payout by $1 for each [rank] held in hand (changes every round) +local number_blocks = { + object_type = "Joker", + name = "cry-Number Blocks", + key = "number_blocks", + config = { extra = { money_mod = 1, money = 1 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + pos = { x = 0, y = 2 }, + rarity = "cry_epic", + cost = 14, + order = 12, + atlas = "atlasepic", + loc_vars = function(self, info_queue, center) + return { + vars = { + center.ability.extra.money, + center.ability.extra.money_mod, + localize(safe_get(G.GAME, "current_round", "cry_nb_card", "rank") or "Ace", "ranks"), + }, + } + end, + calculate = function(self, card, context) + if + context.individual + and not context.end_of_round + and context.cardarea == G.hand + and not context.blueprint + and not context.before + and not context.after + and context.other_card:get_id() == G.GAME.current_round.cry_nb_card.id + then + if context.other_card.debuff then + return { + message = localize("k_debuffed"), + colour = G.C.RED, + card = card, + } + else + card.ability.extra.money = card.ability.extra.money + card.ability.extra.money_mod + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_upgrade_ex") }) + return nil, true + end + end + end, + calc_dollar_bonus = function(self, card) + if card.ability.extra.money > 0 then + return card.ability.extra.money + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Math", + }, + }, +} + +-- Double Scale +-- Scaling jokers scale quadratically +-- Most of the code for this lies in Card:cry_double_scale_calc in lib/calculate.lua +local double_scale = { + object_type = "Joker", + name = "cry-Double Scale", + key = "Double Scale", + pos = { x = 0, y = 3 }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + gameset_config = { + modest = { cost = 20, center = { rarity = 4 } }, + }, + order = 6, + rarity = "cry_epic", + cost = 18, + immutable = true, + atlas = "atlasepic", + --todo: support jokers that scale multiple variables + cry_scale_mod = function(self, card, joker, orig_scale_scale, true_base, orig_scale_base, new_scale_base) + return orig_scale_scale + true_base + end, + cry_credits = { + idea = { + "Mystic Misclick", + }, + art = { + "AlezZGreat", + }, + code = { + "Math", + "Mathguy", + }, + }, +} + +-- Nostalgic Candy +-- Sell this card to permanently gain +3 hand size +local oldcandy = { + object_type = "Joker", + name = "cry_oldcandy", + key = "oldcandy", + pos = { x = 4, y = 1 }, + order = 43, + config = { extra = { hand_size = 3 } }, + gameset_config = { + modest = { extra = { hand_size = 1 } }, + }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + pools = { ["Food"] = true }, + loc_vars = function(self, info_queue, center) + return { vars = { math.max(1, math.floor(center.ability.extra.hand_size)) } } + end, + rarity = "cry_epic", + cost = 9, + eternal_compat = false, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.selling_self and not context.blueprint then + G.hand:change_size(math.max(1, math.floor(card.ability.extra.hand_size))) + return nil, true + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} + +-- Circus +-- Rare/Epic/Legendary/Exotic Jokers give X2/3/4/20 Mult +local circus = { + object_type = "Joker", + name = "cry-circus", + key = "circus", + pos = { x = 4, y = 4 }, + config = { extra = { Xmult = 1 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + atlas = "atlasepic", + order = 33, + loc_vars = function(self, info_queue, center) + return { + vars = { + (math.max(1, center.ability.extra.Xmult) * 2), + (math.max(1, center.ability.extra.Xmult) * 3), + (math.max(1, center.ability.extra.Xmult) * 4), + (math.max(1, center.ability.extra.Xmult) * 20), + }, + } + end, + rarity = "cry_epic", + cost = 16, + blueprint_compat = true, + calculate = function(self, card, context) + if context.other_joker and card ~= context.other_joker then + if context.other_joker.config.center.rarity == 3 then --Rare + if not Talisman.config_file.disable_anims then + G.E_MANAGER:add_event(Event({ + func = function() + context.other_joker:juice_up(0.5, 0.5) + return true + end, + })) + end + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { (math.max(1, card.ability.extra.Xmult) * 2) }, + }), + Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 2), + } + elseif context.other_joker.config.center.rarity == 4 then --Legendary + if not Talisman.config_file.disable_anims then + G.E_MANAGER:add_event(Event({ + func = function() + context.other_joker:juice_up(0.5, 0.5) + return true + end, + })) + end + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { (math.max(1, card.ability.extra.Xmult) * 4) }, + }), + Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 4), + } + elseif context.other_joker.config.center.rarity == "cry_epic" then --Epic + if not Talisman.config_file.disable_anims then + G.E_MANAGER:add_event(Event({ + func = function() + context.other_joker:juice_up(0.5, 0.5) + return true + end, + })) + end + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { (math.max(1, card.ability.extra.Xmult) * 3) }, + }), + Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 3), + } + elseif context.other_joker.config.center.rarity == "cry_exotic" then --Exotic + if not Talisman.config_file.disable_anims then + G.E_MANAGER:add_event(Event({ + func = function() + context.other_joker:juice_up(0.5, 0.5) + return true + end, + })) + end + return { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { (math.max(1, card.ability.extra.Xmult) * 20) }, + }), + Xmult_mod = (math.max(1, card.ability.extra.Xmult) * 20), + } + end + end + end, + cry_credits = { + idea = { + "Ein13", + }, + art = { + "Ein13", + }, + code = { + "Jevonn", + }, + }, +} + +-- Caramel +-- Each played card gives X1.75 Mult when scored for the next 11 rounds +local caramel = { + object_type = "Joker", + name = "cry-caramel", + key = "caramel", + config = { extra = { x_mult = 1.75, rounds_remaining = 11 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + pos = { x = 0, y = 1 }, + rarity = "cry_epic", + cost = 12, + order = 106, + gameset_config = { + modest = { extra = { x_mult = 1.5, rounds_remaining = 6 } }, + }, + pools = { ["Food"] = true }, + blueprint_compat = true, + eternal_compat = false, + atlas = "atlasepic", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.x_mult, center.ability.extra.rounds_remaining } } + end, + calculate = function(self, card, context) + if context.individual then + if context.cardarea == G.play then + return { + x_mult = card.ability.extra.x_mult, + colour = G.C.RED, + card = card, + } + end + end + if + context.end_of_round + and not context.blueprint + and not context.individual + and not context.repetition + and not context.retrigger_joker + then + card.ability.extra.rounds_remaining = card.ability.extra.rounds_remaining - 1 + if card.ability.extra.rounds_remaining > 0 then + return { + message = { localize("cry_minus_round") }, + colour = G.C.FILTER, + } + else + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + card.T.r = -0.2 + card:juice_up(0.3, 0.4) + card.states.drag.is = true + card.children.center.pinch.x = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card = nil + return true + end, + })) + return true + end, + })) + return { + message = localize("k_eaten_ex"), + colour = G.C.FILTER, + } + end + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} + +-- Sob +-- you cannot run... you cannot hide... you cannot escape... +-- Creates a Negative Absolute Eternal Obelisk when added +-- Creates Obelisks (if room) when doing just about anything + +-- Still planning on making one more change to this later - Jevonn +local curse_sob = { + object_type = "Joker", + name = "cry_curse_sob", + key = "curse_sob", + pos = { x = 1, y = 1 }, + pools = { ["Meme"] = true }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + gameset_config = { + modest = { cost = 20, center = { rarity = 4 } }, + }, + conflicts = { + mods = { + "jen", + }, + }, + rarity = "cry_epic", + cost = 9, + order = 82, + immutable = true, + perishable_compat = true, + atlas = "atlasepic", + calculate = function(self, card, context) + if + context.selling_card + and context.card.ability.name == "Obelisk" + and not context.retrigger_joker + and not context.blueprint + then + return {} + elseif + ( -- Compacting all the elseifs into one block for space and readability also maintablity + context.selling_self + or context.discard + or context.reroll_shop --Yes + or context.buying_card + or context.skip_blind + or context.using_consumeable + or context.selling_card + or context.setting_blind + or context.skipping_booster + or context.open_booster + ) + and #G.jokers.cards + G.GAME.joker_buffer < (context.selling_self and (G.jokers.config.card_limit + 1) or G.jokers.config.card_limit) + and not context.retrigger_joker + and not context.blueprint + then + local createjoker = math.min(1, G.jokers.config.card_limit - (#G.jokers.cards + G.GAME.joker_buffer)) + G.GAME.joker_buffer = G.GAME.joker_buffer + createjoker + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_obelisk") + card:add_to_deck() + G.jokers:emplace(card) + G.GAME.joker_buffer = 0 + return { + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize("cry_curse_ex"), + colour = G.C.FILTER, + }), + } + end + end, + add_to_deck = function(self, card, from_debuff) + if not from_debuff then + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_obelisk") + card:set_edition("e_negative", true, nil, true) + card.ability.cry_absolute = true + card:add_to_deck() + G.jokers:emplace(card) + return { + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize("cry_curse_ex"), + colour = G.C.DARK_EDITION, + }), + } + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, + unlocked = false, + check_for_unlock = function(self, args) + if safe_get(G, "jokers") then + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].config.center.key == "j_obelisk" and G.jokers.cards[i].ability.eternal then + unlock_card(self) end end - if valid_castle_cards[1] then - local castle_card = - pseudorandom_element(valid_castle_cards, pseudoseed("cry_nb" .. G.GAME.round_resets.ante)) - if not G.GAME.current_round.cry_nb_card then - G.GAME.current_round.cry_nb_card = {} + end + if args.type == "cry_lock_all" then + lock_card(self) + end + if args.type == "cry_unlock_all" then + unlock_card(self) + end + end, +} + +-- Bonus Joker +-- 1 in 8 chance for each played Bonus Card to increase Joker or Consumable slots by 1 when scored +-- Works twice per round +local bonusjoker = { + object_type = "Joker", + name = "cry-Bonus Joker", + key = "bonusjoker", + pos = { x = 3, y = 2 }, + config = { extra = { odds = 8, check = 0, add = 1 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + immutable = true, + rarity = "cry_epic", + cost = 11, + order = 75, + blueprint_compat = true, + enhancement_gate = "m_bonus", + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = G.P_CENTERS.m_bonus + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), + card.ability.extra.odds, + card.ability.extra.add, + }, + } + end, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.individual and context.cardarea == G.play then + if context.other_card.ability.effect == "Bonus Card" then + if + pseudorandom("bonusjoker") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds + and card.ability.extra.check < 2 + and not context.retrigger_joker + then + local option = pseudorandom_element({ 1, 2 }, pseudoseed("bonusjoker")) + if option == 1 then + if not context.blueprint then + card.ability.extra.check = card.ability.extra.check + 1 + end + G.jokers.config.card_limit = G.jokers.config.card_limit + card.ability.extra.add + else + if not context.blueprint then + card.ability.extra.check = card.ability.extra.check + 1 + end + G.consumeables.config.card_limit = G.consumeables.config.card_limit + card.ability.extra.add + end + return { + extra = { focus = card, message = localize("k_upgrade_ex") }, + card = card, + colour = G.C.MONEY, + } + end + end + end + if + context.end_of_round + and card.ability.extra.check ~= 0 + and not context.blueprint + and not context.retrigger_joker + and not context.individual + and not context.repetition + then + card.ability.extra.check = 0 + return { + message = localize("k_reset"), + card = card, + } + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} + +-- Mult Joker +-- 1 in 3 chance for each played Mult Card to create a Cryptid when scored (Must have room) +local multjoker = { + object_type = "Joker", + name = "cry-Mult Joker", + key = "multjoker", + pos = { x = 2, y = 3 }, + config = { extra = { odds = 3 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + rarity = "cry_epic", + order = 99, + cost = 11, + blueprint_compat = true, + enhancement_gate = "m_mult", + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = G.P_CENTERS.m_mult + info_queue[#info_queue + 1] = G.P_CENTERS.c_cryptid + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), + card.ability.extra.odds, + }, + } + end, + atlas = "atlasepic", + calculate = function(self, card, context) + if context.individual and context.cardarea == G.play then + if + context.other_card.ability.effect == "Mult Card" + and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit + then + if + pseudorandom("multjoker") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) + / card.ability.extra.odds + then + G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1 + G.E_MANAGER:add_event(Event({ + func = function() + local new_card = + create_card("Spectral", G.consumeables, nil, nil, nil, nil, "c_cryptid", "multjoker") + new_card:add_to_deck() + G.consumeables:emplace(new_card) + G.GAME.consumeable_buffer = 0 + return true + end, + })) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("cry_plus_cryptid"), colour = G.C.SECONDARY_SET.Spectral } + ) + return nil, true + end + end + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} + +-- Gold Joker +-- Earn +2% at end of round when a Gold Card is scored +local goldjoker = { + object_type = "Joker", + name = "cry-gold Joker", + key = "goldjoker", + config = { extra = { percent_mod = 2, percent = 0 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + pos = { x = 0, y = 4 }, + rarity = "cry_epic", + cost = 14, + order = 81, + enhancement_gate = "m_gold", + perishable_compat = false, + atlas = "atlasepic", + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = G.P_CENTERS.m_gold + return { vars = { center.ability.extra.percent, center.ability.extra.percent_mod } } + end, + calculate = function(self, card, context) + if context.cardarea == G.play and context.individual and not context.blueprint then + if context.other_card.ability.effect == "Gold Card" then + card.ability.extra.percent = card.ability.extra.percent + card.ability.extra.percent_mod + return { + extra = { focus = card, message = localize("k_upgrade_ex") }, + card = card, + colour = G.C.MONEY, + } + end + end + if context.individual and context.cardarea == G.play then + if context.other_card.ability.effect == "Gold Card" then + card.ability.extra.percent = card.ability.extra.percent + card.ability.extra.percent_mod + return { + message = localize("k_upgrade_ex"), + card = card, + colour = G.C.CHIPS, + } + end + end + end, + calc_dollar_bonus = function(self, card) + local bonus = math.max(0, math.floor(0.01 * card.ability.extra.percent * (G.GAME.dollars or 0))) + if bonus > to_big(0) then + return bonus + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} + +-- Nostalgic Googol Play Card +-- Sell this card to create 2 copies of the leftmost Joker +-- Still needs updated description +local altgoogol = { + object_type = "Joker", + name = "cry-altgoogol", + key = "altgoogol", + pos = { x = 4, y = 3 }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + immutable = true, + rarity = "cry_epic", + cost = 10, + order = 60, + blueprint_compat = false, + eternal_compat = false, + atlas = "atlasepic", + soul_pos = { x = 10, y = 0, extra = { x = 5, y = 3 } }, + gameset_config = { + modest = { cost = 15, copies = 1 }, + mainline = { copies = 2 }, + madness = { center = { blueprint_compat = true }, copies = 2 }, + }, + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.copies } } + end, + calculate = function(self, card, context) + local gameset = Card.get_gameset(card) + if context.selling_self and not context.retrigger_joker and (gameset == "madness" or not context.blueprint) then + local jokers = {} + for i = 1, #G.jokers.cards do + if G.jokers.cards[i] ~= card then + jokers[#jokers + 1] = G.jokers.cards[i] + end + end + if #jokers > 0 then + if not gameset == "modest" or #G.jokers.cards <= G.jokers.config.card_limit then + if G.jokers.cards[1].ability.name ~= "cry-altgoogol" then + G.E_MANAGER:add_event(Event({ + func = function() + for i = 1, card.ability.copies do + local chosen_joker = G.jokers.cards[1] + local card = copy_card( + chosen_joker, + nil, + nil, + nil, + (gameset == "modest" and (safe_get(chosen_joker, "edition", "negative")) or nil) + ) + card:add_to_deck() + G.jokers:emplace(card) + end + return true + end, + })) + card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, { + message = localize("k_duplicated_ex"), + colour = G.C.RARITY.cry_epic, + }) + return nil, true + else + card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, { + message = localize("k_nope_ex"), + colour = G.C.RARITY.cry_epic, + }) + return nil, true + end + else + card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, { + message = localize("k_no_room_ex"), + colour = G.C.RARITY.cry_epic, + }) + return nil, true + end + else + card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, { + message = localize("k_no_other_jokers"), + colour = G.C.RARITY.cry_epic, + }) + return nil, true + end + end + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} + +-- One For All +-- +1 Joker slot, Booster Pack slot, hand size, consumable slot, shop slot +local soccer = { + object_type = "Joker", + name = "cry-soccer", + key = "soccer", + pos = { x = 1, y = 4 }, + config = { extra = { holygrail = 1 } }, + dependencies = { + items = { + "set_cry_epic", + }, + }, + immutable = true, + rarity = "cry_epic", + order = 58, + cost = 20, + atlas = "atlasepic", + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra.holygrail } } + end, + add_to_deck = function(self, card, from_debuff) --TODO: Card in booster packs, Voucher slots + card.ability.extra.holygrail = math.floor(card.ability.extra.holygrail) + G.jokers.config.card_limit = G.jokers.config.card_limit + + ((Card.get_gameset(card) == "modest") and 0 or card.ability.extra.holygrail) + G.consumeables.config.card_limit = G.consumeables.config.card_limit + card.ability.extra.holygrail + G.hand:change_size(card.ability.extra.holygrail) + 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 + card.ability.extra.holygrail + change_shop_size(card.ability.extra.holygrail) + end, + remove_from_deck = function(self, card, from_debuff) + G.jokers.config.card_limit = G.jokers.config.card_limit + - ((Card.get_gameset(card) == "modest") and 0 or card.ability.extra.holygrail) + G.consumeables.config.card_limit = G.consumeables.config.card_limit - card.ability.extra.holygrail + G.hand:change_size(-card.ability.extra.holygrail) + 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 - card.ability.extra.holygrail + change_shop_size(card.ability.extra.holygrail * -1) + end, + cry_credits = { + idea = { + "Mjiojio", + }, + art = { + "HexaCryonic", + }, + code = { + "Jevonn", + }, + }, + unlocked = false, + check_for_unlock = function(self, args) + if args.type == "win" then + for k, v in pairs(G.GAME.hands) do + if k ~= "High Card" and G.GAME.hands[k].played ~= 0 then + return + end + end + return true + end + if args.type == "cry_lock_all" then + lock_card(self) + end + if args.type == "cry_unlock_all" then + unlock_card(self) + end + end, +} + +-- Flesh Panopticon +-- X20 Boss Blind size; When Boss Blind defeated, self destructs and creates a Negative Gateway +local fleshpanopticon = { + object_type = "Joker", + name = "cry-fleshpanopticon", + key = "fleshpanopticon", + pos = { x = 0, y = 5 }, + config = { extra = { boss_size = 20 } }, + dependencies = { + items = { + "set_cry_epic", + "c_cry_gateway", + }, + }, + immutable = true, + rarity = "cry_epic", + cost = 15, + order = 146, + atlas = "atlasepic", + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = { set = "Spectral", key = "c_cry_gateway" } + if not center.edition or (center.edition and not center.edition.negative) then + info_queue[#info_queue + 1] = G.P_CENTERS.e_negative + end + return { vars = { center.ability.extra.boss_size } } + end, + calculate = function(self, card, context) + if context.setting_blind and not context.blueprint and context.blind.boss and not card.getting_sliced then + local eval = function(card) + return not card.REMOVED and not G.RESET_JIGGLES + end + juice_card_until(card, eval, true) + card.gone = false + G.GAME.blind.chips = G.GAME.blind.chips * card.ability.extra.boss_size + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + G.HUD_blind:recalculate(true) + G.E_MANAGER:add_event(Event({ + func = function() + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("timpani") + delay(0.4) + return true + end, + })) + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("cry_good_luck_ex") }) + return true + end, + })) + end + if + context.end_of_round + and not context.individual + and not context.repetition + and not context.blueprint + and G.GAME.blind.boss + and not card.gone + then + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.0, + func = function() + local card = create_card( + nil, + G.consumeables, + nil, + nil, + nil, + nil, + Cryptid.enabled["Exotic Jokers"] and "c_cry_gateway" or "c_soul", + "sup" + ) + card:set_edition({ negative = true }, true) + card:add_to_deck() + G.consumeables:emplace(card) + return true + end, + })) + if not card.ability.eternal then + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + card.T.r = -0.2 + card:juice_up(0.3, 0.4) + card.states.drag.is = true + card.children.center.pinch.x = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card = nil + return true + end, + })) + return true + end, + })) + end + card.gone = true + end + end, + cry_credits = { + idea = { + "notmario", + }, + art = { + "notmario", + }, + code = { + "notmario", + }, + }, +} +-- Spectrogram +-- Retrigger rightmost Joker once for every Echo Card played and scored +local spectrogram = { + object_type = "Joker", + name = "cry-Spectrogram", + key = "spectrogram", + pos = { x = 1, y = 5 }, + config = { extra = { echonum = 0 } }, + rarity = "cry_epic", + cost = 9, + order = 133, + atlas = "atlasepic", + dependencies = { + items = { + "set_cry_epic", + "m_cry_echo", + }, + }, + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = G.P_CENTERS.m_cry_echo + return { vars = {} } + end, + calculate = function(self, card, context) + if context.before and context.cardarea == G.jokers then + card.ability.extra.echonum = 0 + for i, v in pairs(context.scoring_hand) do + if v.config.center_key == "m_cry_echo" and not v.debuff then + card.ability.extra.echonum = card.ability.extra.echonum + 1 end - G.GAME.current_round.cry_nb_card.rank = castle_card.base.value - G.GAME.current_round.cry_nb_card.id = castle_card.base.id end end - --For Double Scale, modify Green Joker to use one variable - SMODS.Joker:take_ownership("green_joker", { - config = { extra = 1, mult = 0 }, - name = "cry-Green Joker", --will prevent old calculation code from working - loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra, center.ability.extra, center.ability.mult } } - end, - calculate = function(self, card, context) - if - context.discard - and not context.blueprint - and context.other_card == context.full_hand[#context.full_hand] - then - local prev_mult = card.ability.mult - card.ability.mult = math.max(0, card.ability.mult - card.ability.extra) - if card.ability.mult ~= prev_mult then - return { - message = localize({ - type = "variable", - key = "a_mult_minus", - vars = { card.ability.extra }, - }), - colour = G.C.RED, - card = card, - } - end - end - if context.cardarea == G.jokers and context.before and not context.blueprint then - card.ability.mult = card.ability.mult + card.ability.extra - return { - card = card, - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra } }), - } - end - if context.cardarea == G.jokers and not context.before and not context.after then - return { - message = localize({ type = "variable", key = "a_mult", vars = { card.ability.mult } }), - mult_mod = card.ability.mult, - } - end - end, - loc_txt = {}, - }, true) + if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then + if card.ability.extra.echonum and card.ability.extra.echonum > 0 then + return { + message = localize("k_again_ex"), + repetitions = card.ability.extra.echonum, + card = card, + } + end + end end, + cry_credits = { + idea = { + "AlexZGreat", + }, + art = { + "SMG9000", + }, + code = { + "AlexZGreat", + }, + }, +} +return { + name = "Epic Jokers", items = { supercell, membershipcardtwo, diff --git a/Cryptid/Items/Exotic.lua b/Cryptid/items/exotic.lua similarity index 73% rename from Cryptid/Items/Exotic.lua rename to Cryptid/items/exotic.lua index 18d616b..465f683 100644 --- a/Cryptid/Items/Exotic.lua +++ b/Cryptid/items/exotic.lua @@ -2,6 +2,11 @@ --The Normal pos correponds to the background. use this for the layer that goes all the way in the back! --The soul_pos = {blahblahblah, extra = {blahblahblah}} correspomds to the other two layers. the value in the extra table is for the layer that goes in the middle, and the other value is the one that goes all the way in the front local gateway = { + dependencies = { + items = { + "set_cry_exotic", + }, + }, object_type = "Consumable", set = "Spectral", name = "cry-Gateway", @@ -54,6 +59,12 @@ local gateway = { end, } local iterum = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Iterum", key = "iterum", @@ -88,12 +99,18 @@ local iterum = { end end, cry_credits = { - idea = {"Math"}, - art = {"Ein13"}, - code = {"Math"} + idea = { "Math" }, + art = { "Ein13" }, + code = { "Math" }, }, } local universum = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Universum", key = "universum", @@ -110,15 +127,143 @@ local universum = { end, calculate = function(self, card, context) if context.cry_universum then - return { mod = to_big(card.ability.extra) } + return { + mod = to_big(card.ability.extra), + colour = G.C.DARK_EDITION, + message = localize("k_upgrade_ex"), + } end end, cry_credits = { - idea = {"Ein13"}, - art = {"Ein13"}, + idea = { "Ein13" }, + art = { "Ein13/hydrogenperoxiide" }, }, + init = function(self) + --Universum Patches + local uht = update_hand_text + function update_hand_text(config, vals) + if next(find_joker("cry-Universum")) and not Talisman.config_file.disable_anims then + G.E_MANAGER:add_event(Event({ --This is the Hand name text for the poker hand + trigger = "before", + blockable = not config.immediate, + delay = config.delay or 0.8, + func = function() + local col = G.C.GREEN + if vals.chips and G.GAME.current_round.current_hand.chips ~= vals.chips then + local delta = vals.chips + if is_number(vals.chips) and is_number(G.GAME.current_round.current_hand.chips) then + delta = "X" .. number_format(vals.chips / G.GAME.current_round.current_hand.chips) + end + G.GAME.current_round.current_hand.chips = vals.chips + G.hand_text_area.chips:update(0) + if vals.StatusText then + attention_text({ + text = delta, + scale = 0.8, + hold = 1, + cover = G.hand_text_area.chips.parent, + cover_colour = mix_colours(G.C.CHIPS, col, 0.1), + emboss = 0.05, + align = "cm", + cover_align = "cr", + }) + end + end + if vals.mult and G.GAME.current_round.current_hand.mult ~= vals.mult then + local delta = vals.mult + if is_number(vals.mult) and is_number(G.GAME.current_round.current_hand.mult) then + delta = "X" .. number_format(vals.mult / G.GAME.current_round.current_hand.mult) + end + G.GAME.current_round.current_hand.mult = vals.mult + G.hand_text_area.mult:update(0) + if vals.StatusText then + attention_text({ + text = delta, + scale = 0.8, + hold = 1, + cover = G.hand_text_area.mult.parent, + cover_colour = mix_colours(G.C.MULT, col, 0.1), + emboss = 0.05, + align = "cm", + cover_align = "cl", + }) + end + if not G.TAROT_INTERRUPT then + G.hand_text_area.mult:juice_up() + end + end + if vals.handname and G.GAME.current_round.current_hand.handname ~= vals.handname then + G.GAME.current_round.current_hand.handname = vals.handname + if not config.nopulse then + G.hand_text_area.handname.config.object:pulse(0.2) + end + end + if vals.chip_total then + G.GAME.current_round.current_hand.chip_total = vals.chip_total + G.hand_text_area.chip_total.config.object:pulse(0.5) + end + if + vals.level + and G.GAME.current_round.current_hand.hand_level + ~= " " .. localize("k_lvl") .. tostring(vals.level) + then + if vals.level == "" then + G.GAME.current_round.current_hand.hand_level = vals.level + else + G.GAME.current_round.current_hand.hand_level = " " + .. localize("k_lvl") + .. tostring(vals.level) + if is_number(vals.level) then + G.hand_text_area.hand_level.config.colour = + G.C.HAND_LEVELS[to_big(math.min(vals.level, 7)):to_number()] + else + G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[1] + end + G.hand_text_area.hand_level:juice_up() + end + end + if config.sound and not config.modded then + play_sound(config.sound, config.pitch or 1, config.volume or 1) + end + if config.modded then + if + G.HUD_blind + and G.HUD_blind.get_UIE_by_ID + and G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_1") + and G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_2") + then + G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_1"):juice_up(0.3, 0) + G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_2"):juice_up(0.3, 0) + end + G.GAME.blind:juice_up() + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.06 * G.SETTINGS.GAMESPEED, + blockable = false, + blocking = false, + func = function() + play_sound("tarot2", 0.76, 0.4) + return true + end, + })) + play_sound("tarot2", 1, 0.4) + end + return true + end, + })) + else + uht(config, vals) + end + end + end, } local exponentia = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Exponentia", key = "exponentia", @@ -132,14 +277,15 @@ local exponentia = { order = 503, soul_pos = { x = 2, y = 0, extra = { x = 1, y = 0 } }, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Emult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.Emult) > to_big(1)) then return { - message = localize{type='variable',key='a_powmult',vars={number_format(card.ability.extra.Emult)}}, + message = localize({ + type = "variable", + key = "a_powmult", + vars = { + number_format(card.ability.extra.Emult), + }, + }), Emult_mod = card.ability.extra.Emult, colour = G.C.DARK_EDITION, } @@ -149,12 +295,40 @@ local exponentia = { return { vars = { center.ability.extra.Emult_mod, center.ability.extra.Emult } } end, cry_credits = { - idea = {"Enemui"}, - art = {"Jevonn"}, - code = {"Math"} + idea = { "Enemui" }, + art = { "Jevonn" }, + code = { "Math" }, }, + init = function(self) + -- Hook for scaling + local scie = SMODS.calculate_individual_effect + function SMODS.calculate_individual_effect(effect, scored_card, key, amount, from_edition) + local ret = scie(effect, scored_card, key, amount, from_edition) + if (key == "x_mult" or key == "xmult" or key == "x_mult_mod" or key == "Xmult_mod") and amount ~= 1 then + for _, v in pairs(find_joker("cry-Exponentia")) do + local old = v.ability.extra.Emult + v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod + card_eval_status_text(v, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_powmult", + vars = { number_format(to_big(v.ability.extra.Emult)) }, + }), + }) + exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) + end + end + return ret + end + end, } local speculo = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Speculo", key = "speculo", @@ -203,12 +377,18 @@ local speculo = { end end, cry_credits = { - idea = {"Mystic"}, - art = {"Mystic"}, - code = {"Math"} + idea = { "Mystic" }, + art = { "Mystic" }, + code = { "Math" }, }, } local redeo = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Redeo", key = "redeo", @@ -230,10 +410,10 @@ local redeo = { atlas = "atlasexotic", soul_pos = { x = 4, y = 0, extra = { x = 5, y = 0 } }, calculate = function(self, card, context) - if context.cry_ease_dollars and context.cry_ease_dollars < 0 and not context.blueprint then + if context.cry_ease_dollars and to_big(context.cry_ease_dollars) < to_big(0) and not context.blueprint then card.ability.extra.money_remaining = card.ability.extra.money_remaining - context.cry_ease_dollars local ante_mod = 0 - while card.ability.extra.money_remaining >= card.ability.extra.money_req do + while to_big(card.ability.extra.money_remaining) >= to_big(card.ability.extra.money_req) do card.ability.extra.money_remaining = card.ability.extra.money_remaining - card.ability.extra.money_req card.ability.extra.money_req = card.ability.extra.money_req + card.ability.extra.money_mod card.ability.extra.money_mod = math.min(1e300, math.ceil(card.ability.extra.money_mod * 1.06)) @@ -246,12 +426,27 @@ local redeo = { end end, cry_credits = { - idea = {"Enemui"}, - art = {"Jevonn"}, - code = {"Math", "jenwalter666"} + idea = { "Enemui" }, + art = { "Jevonn" }, + code = { "Math", "jenwalter666" }, }, + init = function(self) + local ed = ease_dollars + function ease_dollars(mod, x) + ed(mod, x) + for i = 1, #G.jokers.cards do + local effects = G.jokers.cards[i]:calculate_joker({ cry_ease_dollars = mod }) + end + end + end, } local tenebris = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Tenebris", key = "tenebris", @@ -275,12 +470,18 @@ local tenebris = { G.jokers.config.card_limit = G.jokers.config.card_limit - card.ability.extra.slots end, cry_credits = { - idea = {"Gold"}, - art = {"Mystic"}, - code = {"jenwalter666"} + idea = { "Gold" }, + art = { "Mystic" }, + code = { "jenwalter666" }, }, } local effarcire = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Effarcire", key = "effarcire", @@ -303,9 +504,9 @@ local effarcire = { end end, cry_credits = { - idea = {"Frix"}, - art = {"AlexZGreat"}, - code = {"jenwalter666"} + idea = { "Frix" }, + art = { "AlexZGreat" }, + code = { "jenwalter666" }, }, } local effarcire_sprite = { @@ -316,6 +517,12 @@ local effarcire_sprite = { py = 95, } local crustulum = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-crustulum", key = "crustulum", @@ -334,25 +541,13 @@ local crustulum = { calculate = function(self, card, context) if context.reroll_shop and not context.blueprint then card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chip_mod - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), - colour = G.C.CHIPS, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + colour = G.C.CHIPS, + }) return nil, true end - if - context.cardarea == G.jokers - and to_big(card.ability.extra.chips) > to_big(0) - and not context.before - and not context.after - then + if context.joker_main and to_big(card.ability.extra.chips) > to_big(0) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), chip_mod = card.ability.extra.chips, @@ -368,13 +563,19 @@ local crustulum = { calculate_reroll_cost(true) end, cry_credits = { - idea = {"AlexZGreat"}, - art = {"lolxddj"}, - code = {"Jevonn"} + idea = { "AlexZGreat" }, + art = { "lolxddj" }, + code = { "Jevonn" }, }, } --todo: make the Emult always prime local primus = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-primus", key = "primus", @@ -416,14 +617,15 @@ local primus = { } end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Emult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.Emult) > to_big(1)) then return { - message = localize{type='variable',key='a_powmult',vars={number_format(card.ability.extra.Emult)}}, + message = localize({ + type = "variable", + key = "a_powmult", + vars = { + number_format(card.ability.extra.Emult), + }, + }), Emult_mod = card.ability.extra.Emult, colour = G.C.DARK_EDITION, } @@ -433,61 +635,18 @@ local primus = { return { vars = { center.ability.extra.Emult_mod, center.ability.extra.Emult } } end, cry_credits = { - idea = {"Jevonn"}, - art = {"Jevonn"}, - code = {"Jevonn"} + idea = { "Jevonn" }, + art = { "Jevonn" }, + code = { "Jevonn" }, }, } -local big_num_whitelist = { - j_ride_the_bus = true, - j_egg = false, - j_runner = true, - j_ice_cream = true, - j_constellation = true, - j_green_joker = true, - j_red_card = true, - j_madness = true, - j_square = true, - j_vampire = true, - j_hologram = true, - j_obelisk = true, - j_turtle_bean = true, - j_lucky_cat = true, - j_flash = true, - j_popcorn = true, - j_trousers = true, - j_ramen = true, - j_castle = true, - j_campfire = true, - j_throwback = true, - j_glass = true, - j_wee = true, - j_hit_the_road = true, - j_caino = true, - j_yorick = true, - j_cry_dropshot = true, - j_cry_wee_fib = true, - j_cry_whip = true, - j_cry_pickle = true, - j_cry_chili_pepper = true, - j_cry_cursor = true, - j_cry_jimball = true, - j_cry_eternalflame = true, - j_cry_fspinner = true, - j_cry_krustytheclown = true, - j_cry_antennastoheaven = true, - j_cry_mondrian = true, - j_cry_spaceglobe = true, - j_cry_m = true, - -- j_cry_bonk = true, - j_cry_exponentia = true, - j_cry_crustulum = true, - j_cry_primus = true, - j_cry_stella_mortis = true, - j_cry_hugem = true, - j_cry_mprime = true, -} local scalae = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Scalae", key = "Scalae", @@ -526,25 +685,15 @@ local scalae = { to_big(true_base) * ( ( - 1 + ( - (to_big(orig_scale_scale) / to_big(true_base)) ^ ( - to_big(1) / to_big(card.ability.extra.scale) - ) + 1 + + ( + (to_big(orig_scale_scale) / to_big(true_base)) + ^ (to_big(1) / to_big(card.ability.extra.scale)) ) ) ^ card.ability.extra.scale ) ) - if - (new_scale < to_big(1e100)) - or not ( - ( - joker.config - and joker.config.center - and joker.config.center.key - and big_num_whitelist[joker.config.center.key] - ) or (joker.ability and joker.ability.big_num_scaler) - ) - then + if (new_scale < to_big(1e100)) or not is_card_big(joker) then if new_scale >= to_big(1e300) then new_scale = 1e300 else @@ -558,12 +707,18 @@ local scalae = { return { vars = { number_format(card.ability.extra.scale + 1), number_format(card.ability.extra.scale_mod) } } end, cry_credits = { - idea = {"Mathguy"}, - art = {"Mathguy"}, - code = {"Mathguy"} + idea = { "Mathguy" }, + art = { "Mathguy" }, + code = { "Mathguy" }, }, } local stella_mortis = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Stella Mortis", key = "stella_mortis", @@ -607,30 +762,28 @@ local stella_mortis = { end, })) if not (context.blueprint_card or self).getting_sliced then - card_eval_status_text( - (context.blueprint_card or card), - "extra", - nil, - nil, - nil, - { - message = localize{type='variable',key='a_powmult',vars={number_format( - to_big(card.ability.extra.Emult + card.ability.extra.Emult_mod * quota) - )}}, - } - ) + card_eval_status_text((context.blueprint_card or card), "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_powmult", + vars = { + number_format(to_big(card.ability.extra.Emult + card.ability.extra.Emult_mod * quota)), + }, + }), + }) end return nil, true end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Emult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.Emult) > to_big(1)) then return { - message = localize{type='variable',key='a_powmult',vars={number_format(card.ability.extra.Emult)}}, + message = localize({ + type = "variable", + key = "a_powmult", + vars = { + number_format(card.ability.extra.Emult), + }, + }), Emult_mod = card.ability.extra.Emult, colour = G.C.DARK_EDITION, } @@ -640,12 +793,18 @@ local stella_mortis = { return { vars = { center.ability.extra.Emult_mod, center.ability.extra.Emult } } end, cry_credits = { - idea = {"SMG9000"}, - art = {"SMG9000"}, - code = {"SMG9000"} + idea = { "SMG9000" }, + art = { "SMG9000" }, + code = { "SMG9000" }, }, } local circulus_pistoris = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Circulus Pistoris", key = "circulus_pistoris", @@ -660,7 +819,7 @@ local circulus_pistoris = { loc_vars = function(self, info_queue, center) return { vars = { - center.edition and center.edition.cry_oversat and "tau" or "pi", + safe_get(center, "edition", "cry_oversat") and "tau" or "pi", center.ability.extra.hands_remaining, }, } @@ -674,26 +833,36 @@ local circulus_pistoris = { ) then local pi = math.pi - if card.edition and card.edition.cry_oversat then + if safe_get(card, "edition", "cry_oversat") then pi = 2 * pi end return { Echip_mod = pi, Emult_mod = pi, - message = localize{type='variable',key='a_powmultchips',vars={(card.edition and card.edition.cry_oversat and "tau" or "pi")}}, + message = localize({ + type = "variable", + key = "a_powmultchips", + vars = { (safe_get(card, "edition", "cry_oversat") and "tau" or "pi") }, + }), colour = { 0.8, 0.45, 0.85, 1 }, --plasma colors } end end, cry_credits = { - idea = {"SMG9000", "Math"}, --not sure if there's more ppl I'm missing - art = {"HexaCryonic"}, - code = {"SMG9000", "Math"} + idea = { "SMG9000", "Math" }, --not sure if there's more ppl I'm missing + art = { "HexaCryonic" }, + code = { "SMG9000", "Math" }, }, } local aequilibrium = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", - name = "Ace Aequilibrium", --WARNING!!!! if name is changed, the aeqactive function in Cryptid.lua's create_card must also be changed since it checks for this! + name = "Ace Aequilibrium", key = "equilib", config = { extra = { jokers = 2, card = nil } }, rarity = "cry_exotic", @@ -800,40 +969,21 @@ local aequilibrium = { card.ability.extra.card:start_dissolve() end end, - ]]-- + ]] + -- cry_credits = { - idea = {"Elial2"}, - art = {"Elial2"}, - code = {"Elial2"} + idea = { "Elial2" }, + art = { "Elial2" }, + code = { "Elial2" }, }, } -local cc = copy_card -function copy_card(card, a, b, c, d) - local m - if - card - and card.ability - and card.ability.extra - and type(card.ability.extra) == "table" - and card.ability.extra.card - then - m = card.ability.extra.card - card.ability.extra.card = nil - end - local ret = cc(card, a, b, c, d) - if - card - and card.ability - and card.ability.extra - and type(card.ability.extra) == "table" - and card.ability.extra.card - and m - then - card.ability.extra.card = m - end - return ret -end local facile = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-facile", key = "facile", @@ -856,16 +1006,15 @@ local facile = { card.ability.extra.check2 = card.ability.extra.check2 + 1 end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Emult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.Emult) > to_big(1)) then if card.ability.extra.check2 <= card.ability.extra.check then card.ability.extra.check2 = 0 return { - message = localize{type='variable',key='a_powmult',vars={number_format(card.ability.extra.Emult)}}, + message = localize({ + type = "variable", + key = "a_powmult", + vars = { number_format(card.ability.extra.Emult) }, + }), Emult_mod = card.ability.extra.Emult, colour = G.C.DARK_EDITION, } @@ -875,12 +1024,18 @@ local facile = { end end, cry_credits = { - idea = {"Enemui"}, - art = {"Kailen"}, - code = {"Jevonn"} + idea = { "Enemui" }, + art = { "Kailen" }, + code = { "Jevonn" }, }, } local gemino = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Gemino", key = "gemino", @@ -892,8 +1047,8 @@ local gemino = { "Jolly Open Winner", "Requiacity", }, - art = {"Requiacity"}, - code = {"Math"} + art = { "Requiacity" }, + code = { "Math" }, }, rarity = "cry_exotic", blueprint_compat = true, @@ -901,25 +1056,49 @@ local gemino = { order = 515, atlas = "atlasexotic", loc_vars = function(self, info_queue, card) - card.ability.blueprint_compat_ui = card.ability.blueprint_compat_ui or ''; card.ability.blueprint_compat_check = nil + card.ability.blueprint_compat_ui = card.ability.blueprint_compat_ui or "" + card.ability.blueprint_compat_check = nil return { main_end = (card.area and card.area == G.jokers) and { - {n=G.UIT.C, config={align = "bm", minh = 0.4}, nodes={ - {n=G.UIT.C, config={ref_table = card, align = "m", colour = G.C.JOKER_GREY, r = 0.05, padding = 0.06, func = 'blueprint_compat'}, nodes={ - {n=G.UIT.T, config={ref_table = card.ability, ref_value = 'blueprint_compat_ui',colour = G.C.UI.TEXT_LIGHT, scale = 0.32*0.8}}, - }} - }} - } or nil + { + n = G.UIT.C, + config = { align = "bm", minh = 0.4 }, + nodes = { + { + n = G.UIT.C, + config = { + ref_table = card, + align = "m", + colour = G.C.JOKER_GREY, + r = 0.05, + padding = 0.06, + func = "blueprint_compat", + }, + nodes = { + { + n = G.UIT.T, + config = { + ref_table = card.ability, + ref_value = "blueprint_compat_ui", + colour = G.C.UI.TEXT_LIGHT, + scale = 0.32 * 0.8, + }, + }, + }, + }, + }, + }, + } or nil, } end, update = function(self, card, front) if G.STAGE == G.STAGES.RUN then other_joker = G.jokers.cards[1] if other_joker and other_joker ~= card and not (Card.no(other_joker, "immutable", true)) then - card.ability.blueprint_compat = 'compatible' - else - card.ability.blueprint_compat = 'incompatible' - end + card.ability.blueprint_compat = "compatible" + else + card.ability.blueprint_compat = "incompatible" + end end end, calculate = function(self, card2, context) @@ -946,8 +1125,13 @@ local gemino = { end end, } - local energia = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-Energia", key = "energia", @@ -959,7 +1143,7 @@ local energia = { config = { extra = { tags = 1, tag_mod = 1 } }, loc_vars = function(self, info_queue, center) return { - vars = { math.min(20, center.ability.extra.tags), center.ability.extra.tag_mod }, + vars = { math.min(center.ability.extra.tags, 40), center.ability.extra.tag_mod }, } end, rarity = "cry_exotic", @@ -967,30 +1151,36 @@ local energia = { atlas = "atlasexotic", calculate = function(self, card, context) if context.cry_add_tag then - local t = math.min(20, card.ability.extra.tags) + local value = #G.GAME.tags or 0 + local t = math.min(40 - value, card.ability.extra.tags) card.ability.extra.tags = card.ability.extra.tags + card.ability.extra.tag_mod - if card.ability.extra.tags < 20 then - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("k_upgrade_ex"), colour = G.C.DARK_EDITION } - ) + if t > 0 then + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = card.ability.extra.tags == 1 and "a_tag" or "a_tags", + vars = { t }, + })[1], + colour = G.C.DARK_EDITION, + }) end - return { tags = t } + return { tags = math.max(t, 0) } end end, cry_credits = { - idea = {"jenwalter666"}, - art = {"Kailen"}, - code = {"Math"} + idea = { "jenwalter666" }, + art = { "Kailen" }, + code = { "Math" }, }, } - --why is this an exotic??? local verisimile = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, object_type = "Joker", name = "cry-verisimile", key = "verisimile", @@ -1010,10 +1200,12 @@ local verisimile = { if context.post_trigger and not context.blueprint then --Todo: Gros Michel, Cavendish, Planet.lua --Bus driver is ignored because it always triggers anyway - if context.other_joker.ability.name == "8 Ball" - or context.other_joker.ability.name == "Space Joker" - or context.other_joker.ability.name == "Business Card" - or context.other_joker.ability.name == "Hallucination" then + if + context.other_joker.ability.name == "8 Ball" + or context.other_joker.ability.name == "Space Joker" + or context.other_joker.ability.name == "Business Card" + or context.other_joker.ability.name == "Hallucination" + then local variable = context.other_joker card.ability.extra.xmult = card.ability.extra.xmult + variable.ability.extra card_eval_status_text( @@ -1070,12 +1262,7 @@ local verisimile = { { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.xmult } }) } ) end - elseif - context.cardarea == G.jokers - and (to_big(card.ability.extra.xmult) > to_big(1)) - and not context.before - and not context.after - then + elseif context.joker_main and (to_big(card.ability.extra.xmult) > to_big(1)) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.xmult } }), Xmult_mod = card.ability.extra.xmult, @@ -1083,113 +1270,134 @@ local verisimile = { end end, cry_credits = { - idea = {"Enemui"}, - code = {"Jevonn"} + idea = { "Enemui" }, + code = { "Jevonn" }, }, } - local duplicare = { - object_type = "Joker", - name = "cry-duplicare", - key = "duplicare", - config = {extra = {Xmult = 1, Xmult_mod = 1}}, + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + }, + }, + object_type = "Joker", + name = "cry-duplicare", + key = "duplicare", + config = { extra = { Xmult = 1, Xmult_mod = 1 } }, pos = { x = 0, y = 6 }, soul_pos = { x = 2, y = 6, extra = { x = 1, y = 6 } }, - rarity = "cry_exotic", - cost = 50, - order = 517, - blueprint_compat = true, - atlas = "atlasexotic", - loc_vars = function(self, info_queue, center) - return { - vars = {center.ability.extra.Xmult, center.ability.extra.Xmult_mod} - } - end, - calculate = function(self, card, context) - if not context.blueprint and ((context.post_trigger and context.other_joker ~= card) or (context.individual and context.cardarea == G.play)) then + rarity = "cry_exotic", + cost = 50, + order = 517, + blueprint_compat = true, + atlas = "atlasexotic", + loc_vars = function(self, info_queue, center) + return { + vars = { center.ability.extra.Xmult, center.ability.extra.Xmult_mod }, + } + end, + calculate = function(self, card, context) + if + not context.blueprint + and ( + (context.post_trigger and context.other_joker ~= card) + or (context.individual and context.cardarea == G.play) + ) + then card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_upgrade_ex") }) end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.Xmult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.Xmult) > to_big(1)) then return { - message = localize{type='variable',key='a_xmult',vars={number_format(card.ability.extra.Xmult)}}, + message = localize({ + type = "variable", + key = "a_xmult", + vars = { + number_format(card.ability.extra.Xmult), + }, + }), Xmult_mod = card.ability.extra.Xmult, colour = G.C.MULT, } end - end, + end, cry_credits = { - idea = {"Enemui"}, - art = {"Shellular"}, - code = {"elial2"} + idea = { "Enemui" }, + art = { "Shellular" }, + code = { "elial2" }, }, } - -- to be honest, this needs a refactor because -- rescribed jokers are forgotten on save reload -- they are not saved in a good way right now -- status text is not handled properly local rescribere = { - object_type = "Joker", - name = "cry-Rescribere", - key = "rescribere", + object_type = "Joker", + name = "cry-Rescribere", + key = "rescribere", pos = { x = 0, y = 1 }, soul_pos = { x = 1, y = 1, extra = { x = 2, y = 1 } }, - blueprint_compat = false, - perishable_compat = false, - rarity = "cry_exotic", - cost = 50, - order = 69420, - atlas = "placeholders", - calculate = function(self, card, context) - local eligibleJokers = {} - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.name ~= card.ability.name then eligibleJokers[#eligibleJokers+1] = G.jokers.cards[i] end - end + blueprint_compat = false, + perishable_compat = false, + rarity = "cry_exotic", + cost = 50, + order = 69420, + atlas = "placeholders", + calculate = function(self, card, context) + local eligibleJokers = {} + for i = 1, #G.jokers.cards do + if G.jokers.cards[i].ability.name ~= card.ability.name then + eligibleJokers[#eligibleJokers + 1] = G.jokers.cards[i] + end + end - for i = 1, #eligibleJokers do - if context.selling_card and context.card.ability.name ~= card.ability.name and context.card ~= eligibleJokers[i] then - local oldfunc = eligibleJokers[i].calculate_joker + for i = 1, #eligibleJokers do + if + context.selling_card + and context.card.ability.name ~= card.ability.name + and context.card ~= eligibleJokers[i] + then + local oldfunc = eligibleJokers[i].calculate_joker + eligibleJokers[i].ability.rescribere_jokers = eligibleJokers[i].ability.rescribere_jokers or {} + eligibleJokers[i].ability.rescribere_jokers[#eligibleJokers[i].ability.rescribere_jokers + 1] = + context.card - eligibleJokers[i].ability.rescribere_jokers = eligibleJokers[i].ability.rescribere_jokers or {} - eligibleJokers[i].ability.rescribere_jokers[#eligibleJokers[i].ability.rescribere_jokers+1] = context.card + eligibleJokers[i].calculate_joker = function(cardd, contextt) + local totalret = oldfunc(cardd, contextt) + v = eligibleJokers[i].ability.rescribere_jokers[#eligibleJokers[i].ability.rescribere_jokers] - eligibleJokers[i].calculate_joker = function(cardd,contextt) - local totalret = oldfunc(cardd,contextt) - - v = eligibleJokers[i].ability.rescribere_jokers[#eligibleJokers[i].ability.rescribere_jokers] - - local ret = v:calculate_joker(contextt) - if ret and type(ret) == 'table' then - totalret = totalret or {message = "Copying", card = eligibleJokers[i]} - for _i,_v in pairs(ret) do - if not totalret[_i] then - totalret[_i] = ret[_i] or _v - --print(totalret[_i] .. "--------------") - else - if type(totalret[_i]) == 'number' then - totalret[_i] = totalret[_i] + ret[_i] - end - end - end - totalret.card = eligibleJokers[i] - end - return totalret - - end - end - end - end + local ret = v:calculate_joker(contextt) + if ret and type(ret) == "table" then + totalret = totalret or { message = "Copying", card = eligibleJokers[i] } + for _i, _v in pairs(ret) do + if not totalret[_i] then + totalret[_i] = ret[_i] or _v + --print(totalret[_i] .. "--------------") + else + if type(totalret[_i]) == "number" then + totalret[_i] = totalret[_i] + ret[_i] + end + end + end + totalret.card = eligibleJokers[i] + end + return totalret + end + end + end + end, } - local formidiulosus = { + dependencies = { + items = { + "c_cry_gateway", + "set_cry_exotic", + "set_cry_spooky", + }, + }, object_type = "Joker", name = "cry-Formidiulosus", key = "formidiulosus", @@ -1208,27 +1416,26 @@ local formidiulosus = { atlas = "atlasexotic", no_dbl = true, update = function(self, card, front) - local value = 0 - if G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].config.center.rarity == "cry_candy" then - value = value + 1 - end - end - end - card.ability.extra.Emult = 1 + (card.ability.extra.Emult_mod * value) + card.ability.extra.Emult = 1 + + (card.ability.extra.Emult_mod * #advanced_find_joker(nil, "cry_candy", nil, nil, true)) end, calculate = function(self, card, context) - if (context.buying_card or context.cry_creating_card) and context.card.ability.set == "Joker" and context.card.config.center.rarity == "cry_cursed" and not context.blueprint and not (context.card == card) then + if + (context.buying_card or context.cry_creating_card) + and context.card.ability.set == "Joker" + and context.card.config.center.rarity == "cry_cursed" + and not context.blueprint + and not (context.card == card) + then G.E_MANAGER:add_event(Event({ func = function() context.card:start_dissolve() - card_eval_status_text(card, 'extra', nil, nil, nil, { + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_nope_ex"), colour = G.C.BLACK, }) return true - end + end, })) end if context.ending_shop then @@ -1246,16 +1453,22 @@ local formidiulosus = { and not context.after then return { - message = localize{type='variable',key='a_powmult',vars={number_format(card.ability.extra.Emult)}}, + message = localize({ + type = "variable", + key = "a_powmult", + vars = { + number_format(card.ability.extra.Emult), + }, + }), Emult_mod = card.ability.extra.Emult, colour = G.C.DARK_EDITION, } end end, cry_credits = { - idea = {"HexaCryonic","Kailen"}, - art = {"Foegro"}, - code = {"Foegro"} + idea = { "HexaCryonic", "Kailen" }, + art = { "Foegro" }, + code = { "Foegro" }, }, } local items = { @@ -1280,136 +1493,37 @@ local items = { --verisimile, WHY IS THIS AN EXOTIC???????????????????? --rescribere, [NEEDS REFACTOR] duplicare, + --formidiulosus } -if Cryptid.enabled["Spooky"] then - items[#items + 1] = formidiulosus -end return { name = "Exotic Jokers", init = function() - --Universum Patches - local uht = update_hand_text - function update_hand_text(config, vals) - if next(find_joker("cry-Universum")) and not Talisman.config_file.disable_anims then - G.E_MANAGER:add_event(Event({ --This is the Hand name text for the poker hand - trigger = "before", - blockable = not config.immediate, - delay = config.delay or 0.8, - func = function() - local col = G.C.GREEN - if vals.chips and G.GAME.current_round.current_hand.chips ~= vals.chips then - local delta = vals.chips - if is_number(vals.chips) and is_number(G.GAME.current_round.current_hand.chips) then - delta = "X" .. number_format(vals.chips / G.GAME.current_round.current_hand.chips) - end - G.GAME.current_round.current_hand.chips = vals.chips - G.hand_text_area.chips:update(0) - if vals.StatusText then - attention_text({ - text = delta, - scale = 0.8, - hold = 1, - cover = G.hand_text_area.chips.parent, - cover_colour = mix_colours(G.C.CHIPS, col, 0.1), - emboss = 0.05, - align = "cm", - cover_align = "cr", - }) - end - end - if vals.mult and G.GAME.current_round.current_hand.mult ~= vals.mult then - local delta = vals.mult - if is_number(vals.mult) and is_number(G.GAME.current_round.current_hand.mult) then - delta = "X" .. number_format(vals.mult / G.GAME.current_round.current_hand.mult) - end - G.GAME.current_round.current_hand.mult = vals.mult - G.hand_text_area.mult:update(0) - if vals.StatusText then - attention_text({ - text = delta, - scale = 0.8, - hold = 1, - cover = G.hand_text_area.mult.parent, - cover_colour = mix_colours(G.C.MULT, col, 0.1), - emboss = 0.05, - align = "cm", - cover_align = "cl", - }) - end - if not G.TAROT_INTERRUPT then - G.hand_text_area.mult:juice_up() - end - end - if vals.handname and G.GAME.current_round.current_hand.handname ~= vals.handname then - G.GAME.current_round.current_hand.handname = vals.handname - if not config.nopulse then - G.hand_text_area.handname.config.object:pulse(0.2) - end - end - if vals.chip_total then - G.GAME.current_round.current_hand.chip_total = vals.chip_total - G.hand_text_area.chip_total.config.object:pulse(0.5) - end - if - vals.level - and G.GAME.current_round.current_hand.hand_level - ~= " " .. localize("k_lvl") .. tostring(vals.level) - then - if vals.level == "" then - G.GAME.current_round.current_hand.hand_level = vals.level - else - G.GAME.current_round.current_hand.hand_level = " " - .. localize("k_lvl") - .. tostring(vals.level) - if is_number(vals.level) then - G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[math.min(vals.level, 7)] - else - G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[1] - end - G.hand_text_area.hand_level:juice_up() - end - end - if config.sound and not config.modded then - play_sound(config.sound, config.pitch or 1, config.volume or 1) - end - if config.modded then - if - G.HUD_blind - and G.HUD_blind.get_UIE_by_ID - and G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_1") - and G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_2") - then - G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_1"):juice_up(0.3, 0) - G.HUD_blind:get_UIE_by_ID("HUD_blind_debuff_2"):juice_up(0.3, 0) - end - G.GAME.blind:juice_up() - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.06 * G.SETTINGS.GAMESPEED, - blockable = false, - blocking = false, - func = function() - play_sound("tarot2", 0.76, 0.4) - return true - end, - })) - play_sound("tarot2", 1, 0.4) - end - return true - end, - })) - else - uht(config, vals) + --I have no clue what this patch does + local cc = copy_card + function copy_card(card, a, b, c, d) + local m + if + card + and card.ability + and card.ability.extra + and type(card.ability.extra) == "table" + and card.ability.extra.card + then + m = card.ability.extra.card + card.ability.extra.card = nil end - end - - --Redeo Patches - local ed = ease_dollars - function ease_dollars(mod, x) - ed(mod, x) - for i = 1, #G.jokers.cards do - local effects = G.jokers.cards[i]:calculate_joker({ cry_ease_dollars = mod }) + local ret = cc(card, a, b, c, d) + if + card + and card.ability + and card.ability.extra + and type(card.ability.extra) == "table" + and card.ability.extra.card + and m + then + card.ability.extra.card = m end + return ret end end, items = items, diff --git a/Cryptid/Items/CryptidJokerDisplay.lua b/Cryptid/items/joker_display.lua similarity index 92% rename from Cryptid/Items/CryptidJokerDisplay.lua rename to Cryptid/items/joker_display.lua index d015f12..7cb570d 100644 --- a/Cryptid/Items/CryptidJokerDisplay.lua +++ b/Cryptid/items/joker_display.lua @@ -142,52 +142,51 @@ --Treacherous Joker if JokerDisplay then - --Side note: I Don't think retrigger type exp gives a correct value with Emult jokers, but ehhhhh ig I can live with that (It's good enough) --This is here so it shows up on the github symbol panel (easy to scroll to) local page1 = {} - - JokerDisplay.Definitions["j_cry_supercell"] = { - text = { - { text = "+", colour = G.C.CHIPS }, - { ref_table = "card.ability.extra", ref_value = "stat1", colour = G.C.CHIPS, retrigger_type = "mult" }, - { text = " +", colour = G.C.MULT }, - { ref_table = "card.ability.extra", ref_value = "stat1", colour = G.C.MULT, retrigger_type = "mult" }, - }, - extra = { - { - { - border_nodes = { - { text = "X" }, - { ref_table = "card.ability.extra", ref_value = "stat2", retrigger_type = "exp" }, - }, - border_colour = G.C.CHIPS, - }, - { text = " " }, - { - border_nodes = { - { text = "X" }, - { ref_table = "card.ability.extra", ref_value = "stat2", retrigger_type = "exp" }, - }, - }, - }, - { - { text = "+$", colour = G.C.GOLD }, - { ref_table = "card.ability.extra", ref_value = "money", colour = G.C.GOLD }, - { - ref_table = "card.joker_display_values", - ref_value = "localized_text", - colour = G.C.UI.TEXT_INACTIVE, - scale = 0.3, - }, - }, - }, - calc_function = function(card) - card.joker_display_values.localized_text = "(" .. localize("k_round") .. ")" - end, - } - JokerDisplay.Definitions["j_cry_dropshot"] = { + + JokerDisplay.Definitions["j_cry_supercell"] = { + text = { + { text = "+", colour = G.C.CHIPS }, + { ref_table = "card.ability.extra", ref_value = "stat1", colour = G.C.CHIPS, retrigger_type = "mult" }, + { text = " +", colour = G.C.MULT }, + { ref_table = "card.ability.extra", ref_value = "stat1", colour = G.C.MULT, retrigger_type = "mult" }, + }, + extra = { + { + { + border_nodes = { + { text = "X" }, + { ref_table = "card.ability.extra", ref_value = "stat2", retrigger_type = "exp" }, + }, + border_colour = G.C.CHIPS, + }, + { text = " " }, + { + border_nodes = { + { text = "X" }, + { ref_table = "card.ability.extra", ref_value = "stat2", retrigger_type = "exp" }, + }, + }, + }, + { + { text = "+$", colour = G.C.GOLD }, + { ref_table = "card.ability.extra", ref_value = "money", colour = G.C.GOLD }, + { + ref_table = "card.joker_display_values", + ref_value = "localized_text", + colour = G.C.UI.TEXT_INACTIVE, + scale = 0.3, + }, + }, + }, + calc_function = function(card) + card.joker_display_values.localized_text = "(" .. localize("k_round") .. ")" + end, + } + JokerDisplay.Definitions["j_cry_dropshot"] = { text = { { border_nodes = { @@ -439,10 +438,10 @@ if JokerDisplay then return retrigger_joker.ability.extra.retrigger or 0 end, } - + --This is here so it shows up on the github symbol panel (easy to scroll to) local page2 = {} - + JokerDisplay.Definitions["j_cry_membershipcardtwo"] = { text = { { text = "+" }, @@ -575,12 +574,15 @@ if JokerDisplay then } JokerDisplay.Definitions["j_cry_mprime"] = { mod_function = function(card, mod_joker) - return { e_mult = ( - card.ability.name == "Jolly Joker" - or card.edition and card.edition.key == "e_cry_m" - or card.ability.effect == "M Joker" - ) - and mod_joker.ability.extra.mult * JokerDisplay.calculate_joker_triggers(mod_joker) or nil } + return { + e_mult = ( + card.ability.name == "Jolly Joker" + or card.edition and card.edition.key == "e_cry_m" + or safe_get(card, "pools", "M") + ) + and mod_joker.ability.extra.mult * JokerDisplay.calculate_joker_triggers(mod_joker) + or nil, + } end, } JokerDisplay.Definitions["j_cry_whip"] = { @@ -665,7 +667,7 @@ if JokerDisplay then --This is here so it shows up on the github symbol panel (easy to scroll to) local page3 = {} - + JokerDisplay.Definitions["j_cry_jollysus"] = { reminder_text = { { text = "(" }, @@ -808,7 +810,7 @@ if JokerDisplay then }, calc_function = function(card) local bonus = math.max(0, math.floor(0.01 * card.ability.extra.percent * (G.GAME.dollars or 1))) - card.joker_display_values.dollars = bonus and bonus > 0 and bonus or 0 + card.joker_display_values.dollars = bonus and bonus > to_big(0) and bonus or 0 card.joker_display_values.localized_text = "(" .. localize("k_round") .. ")" end, } @@ -914,7 +916,7 @@ if JokerDisplay then --This is here so it shows up on the github symbol panel (easy to scroll to) local page4 = {} - + JokerDisplay.Definitions["j_cry_jimball"] = { text = { { @@ -1171,7 +1173,7 @@ if JokerDisplay then --This is here so it shows up on the github symbol panel (easy to scroll to) local page5 = {} - + JokerDisplay.Definitions["j_cry_curse_sob"] = { text = { { ref_table = "card.joker_display_values", ref_value = "localized_text", colour = G.C.DARK_EDITION }, @@ -1387,7 +1389,7 @@ if JokerDisplay then --This is here so it shows up on the github symbol panel (easy to scroll to) local page6 = {} - + JokerDisplay.Definitions["j_cry_meteor"] = { text = { { text = "+" }, @@ -1416,8 +1418,11 @@ if JokerDisplay then card.joker_display_values.localized_text = localize({ type = "name_text", set = "Edition", key = "e_foil" }) end, mod_function = function(card, mod_joker) --Foil Jokers - return { chips = (card ~= mod_joker and card.edition and card.edition.foil == true) and - mod_joker.ability.extra.chips * JokerDisplay.calculate_joker_triggers(mod_joker) or nil } + return { + chips = (card ~= mod_joker and card.edition and card.edition.foil == true) + and mod_joker.ability.extra.chips * JokerDisplay.calculate_joker_triggers(mod_joker) + or nil, + } end, } JokerDisplay.Definitions["j_cry_exoplanet"] = { @@ -1444,19 +1449,26 @@ if JokerDisplay then end end for _, playing_card in ipairs(G.hand.cards) do --Holographic cards held in hand - if playing_hand or not playing_card.highlighted then - if not (playing_card.facing == 'back') and not playing_card.debuff - and playing_card.edition and playing_card.edition.holo == true then - count = count + JokerDisplay.calculate_card_triggers(playing_card, nil, true) - end - end - end + if playing_hand or not playing_card.highlighted then + if + not (playing_card.facing == "back") + and not playing_card.debuff + and playing_card.edition + and playing_card.edition.holo == true + then + count = count + JokerDisplay.calculate_card_triggers(playing_card, nil, true) + end + end + end card.joker_display_values.mult = card.ability.extra.mult * count card.joker_display_values.localized_text = localize({ type = "name_text", set = "Edition", key = "e_holo" }) end, - mod_function = function(card, mod_joker)--Holographic Jokers - return { mult = (card ~= mod_joker and card.edition and card.edition.holo == true) and - mod_joker.ability.extra.mult * JokerDisplay.calculate_joker_triggers(mod_joker) or nil } + mod_function = function(card, mod_joker) --Holographic Jokers + return { + mult = (card ~= mod_joker and card.edition and card.edition.holo == true) + and mod_joker.ability.extra.mult * JokerDisplay.calculate_joker_triggers(mod_joker) + or nil, + } end, } JokerDisplay.Definitions["j_cry_stardust"] = { @@ -1486,20 +1498,27 @@ if JokerDisplay then end end for _, playing_card in ipairs(G.hand.cards) do --Polychrome cards held in hand - if playing_hand or not playing_card.highlighted then - if not (playing_card.facing == 'back') and not playing_card.debuff - and playing_card.edition and playing_card.edition.polychrome == true then - count = count + JokerDisplay.calculate_card_triggers(playing_card, nil, true) - end - end - end + if playing_hand or not playing_card.highlighted then + if + not (playing_card.facing == "back") + and not playing_card.debuff + and playing_card.edition + and playing_card.edition.polychrome == true + then + count = count + JokerDisplay.calculate_card_triggers(playing_card, nil, true) + end + end + end card.joker_display_values.x_mult = card.ability.extra.xmult ^ count card.joker_display_values.localized_text = localize({ type = "name_text", set = "Edition", key = "e_polychrome" }) end, mod_function = function(card, mod_joker) --Polychrome Jokers - return { x_mult = (card ~= mod_joker and card.edition and card.edition.polychrome == true) and - mod_joker.ability.extra.xmult ^ JokerDisplay.calculate_joker_triggers(mod_joker) or nil } + return { + x_mult = (card ~= mod_joker and card.edition and card.edition.polychrome == true) + and mod_joker.ability.extra.xmult ^ JokerDisplay.calculate_joker_triggers(mod_joker) + or nil, + } end, } JokerDisplay.Definitions["j_cry_multjoker"] = { @@ -1544,7 +1563,7 @@ if JokerDisplay then }, calc_function = function(card) local bonus = math.max(0, math.floor(0.01 * card.ability.extra.percent * (G.GAME.dollars or 0))) - card.joker_display_values.dollars = bonus and bonus > 0 and bonus or 0 + card.joker_display_values.dollars = bonus and bonus > to_big(0) and bonus or 0 card.joker_display_values.localized_text = "(" .. localize("k_round") .. ")" end, } @@ -1630,7 +1649,7 @@ if JokerDisplay then --This is here so it shows up on the github symbol panel (easy to scroll to) local page7 = {} - + JokerDisplay.Definitions["j_cry_wheelhope"] = { text = { { @@ -1819,7 +1838,7 @@ if JokerDisplay then { text = "(" }, { ref_table = "card.ability", ref_value = "extra" }, { text = "/4)" }, - } + }, } JokerDisplay.Definitions["j_cry_facile"] = { text = { @@ -1846,12 +1865,17 @@ if JokerDisplay then --This is here so it shows up on the github symbol panel (easy to scroll to) local page8 = {} - + local hand_tmult_jd = { text = { - { text = "+", colour = G.C.MULT }, - { ref_table = "card.joker_display_values", ref_value = "t_mult", colour = G.C.MULT, retrigger_type = "mult" }, - }, + { text = "+", colour = G.C.MULT }, + { + ref_table = "card.joker_display_values", + ref_value = "t_mult", + colour = G.C.MULT, + retrigger_type = "mult", + }, + }, reminder_text = { { text = "(" }, { ref_table = "card.joker_display_values", ref_value = "localized_text", colour = G.C.ORANGE }, @@ -1869,9 +1893,14 @@ if JokerDisplay then } local hand_tchips_jd = { text = { - { text = "+", colour = G.C.CHIPS }, - { ref_table = "card.joker_display_values", ref_value = "t_chips", colour = G.C.CHIPS, retrigger_type = "mult" }, - }, + { text = "+", colour = G.C.CHIPS }, + { + ref_table = "card.joker_display_values", + ref_value = "t_chips", + colour = G.C.CHIPS, + retrigger_type = "mult", + }, + }, reminder_text = { { text = "(" }, { ref_table = "card.joker_display_values", ref_value = "localized_text", colour = G.C.ORANGE }, @@ -1908,7 +1937,7 @@ if JokerDisplay then }, text_config = { colour = G.C.ORANGE }, } - + --This is here so it shows up on the github symbol panel (easy to scroll to) local page9 = {} diff --git a/Cryptid/Items/M.lua b/Cryptid/items/m.lua similarity index 74% rename from Cryptid/Items/M.lua rename to Cryptid/items/m.lua index a6a8cb5..b61ab85 100644 --- a/Cryptid/Items/M.lua +++ b/Cryptid/items/m.lua @@ -1,8 +1,8 @@ local jollysus = { + pools = { ["M"] = true }, object_type = "Joker", name = "cry-jollysus Joker", key = "jollysus", - effect = "M Joker", pos = { x = 3, y = 1 }, config = { extra = { spawn = true, active = localize("k_active_ex") } }, rarity = 1, @@ -10,9 +10,14 @@ local jollysus = { order = 267, blueprint_compat = true, eternal_compat = false, + dependencies = { + items = { "set_cry_m" }, + }, immutable = true, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m + if cry_card_enabled("e_cry_m") == true then + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m + end return { vars = { center.ability.extra.active } } end, atlas = "atlastwo", @@ -34,7 +39,9 @@ local jollysus = { card.ability.extra.spawn = false end local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "jollysus") - card:set_edition({ cry_m = true }) + if cry_card_enabled("e_cry_m") == true then + card:set_edition({ cry_m = true }) + end card:add_to_deck() G.jokers:emplace(card) return { @@ -51,7 +58,9 @@ local jollysus = { card.ability.extra.spawn = false end local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "jollysus") - card:set_edition({ cry_m = true }) + if cry_card_enabled("e_cry_m") == true then + card:set_edition({ cry_m = true }) + end card:add_to_deck() G.jokers:emplace(card) return { @@ -65,37 +74,36 @@ local jollysus = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } --TODO --Fix Incompatiblity with Brainstorm (the joker not the mod) --Make Blueprints create copies when this is sold to the right of Blueprint local bubblem = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-bubblem", key = "bubblem", - effect = "M Joker", + pools = { ["M"] = true }, order = 251, pos = { x = 0, y = 0 }, - config = { extra = { spawn = false, type = "Three of a Kind" }, jolly = { t_mult = 8, type = "Pair" } }, + config = { extra = { spawn = false, type = "Three of a Kind" } }, rarity = 1, cost = 2, eternal_compat = false, immutable = true, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly if not center.edition or (center.edition and not center.edition.foil) then info_queue[#info_queue + 1] = G.P_CENTERS.e_foil end @@ -147,38 +155,34 @@ local bubblem = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local foodm = { object_type = "Joker", name = "cry-foodm", key = "foodm", - effect = "M Joker", - config = { - extra = { mult = 40, rounds_remaining = 2, round_inc = 1 }, - jolly = { t_mult = 8, type = "Pair" }, - }, + pools = { ["M"] = true, ["Food"] = true }, + config = { extra = { mult = 40, rounds_remaining = 2, round_inc = 1 } }, pos = { x = 4, y = 2 }, rarity = 1, + dependencies = { + items = { "set_cry_m" }, + }, order = 252, cost = 5, atlas = "atlasone", blueprint_compat = true, eternal_compat = false, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { center.ability.extra.mult, @@ -188,12 +192,7 @@ local foodm = { } end, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (card.ability.extra.mult > 0) - and not context.before - and not context.after - then + if context.joker_main and (card.ability.extra.mult > 0) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), mult_mod = card.ability.extra.mult, @@ -249,7 +248,7 @@ local foodm = { card.ability.extra.rounds_remaining = card.ability.extra.rounds_remaining + card.ability.extra.round_inc return { card_eval_status_text(card, "extra", nil, nil, nil, { - message = localize{type='variable',key='a_round',vars={card.ability.extra.round_inc}}, + message = localize({ type = "variable", key = "a_round", vars = { card.ability.extra.round_inc } }), colour = G.C.FILTER, }), } @@ -257,23 +256,26 @@ local foodm = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local mstack = { object_type = "Joker", name = "cry-mstack", key = "mstack", - effect = "M Joker", + pools = { ["M"] = true }, order = 253, - config = { extra = { sell = 0, sell_req = 3, retriggers = 1, check = false }, jolly = { t_mult = 8, type = "Pair" } }, + config = { extra = { sell = 0, sell_req = 3, retriggers = 1, check = false } }, + dependencies = { + items = { "set_cry_m" }, + }, pos = { x = 2, y = 3 }, atlas = "atlastwo", rarity = 3, @@ -281,19 +283,15 @@ local mstack = { blueprint_compat = true, perishable_compat = false, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { center.ability.extra.retriggers, center.ability.extra.sell_req, center.ability.extra.sell } } end, - calculate = function(self, card, context) --note: hardcoded like this intentionally + calculate = function(self, card, context) if context.repetition then if context.cardarea == G.play then return { message = localize("k_again_ex"), - repetitions = card.ability.extra.retriggers, + repetitions = math.min(card.ability.extra.retriggers, 40), card = card, } end @@ -336,34 +334,33 @@ local mstack = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local mneon = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-mneon", key = "mneon", - effect = "M Joker", + pools = { ["M"] = true }, pos = { x = 4, y = 2 }, order = 254, - config = { extra = { bonus = 1, money = 0 }, jolly = { t_mult = 8, type = "Pair" } }, + config = { extra = { bonus = 1, money = 0 } }, rarity = 2, cost = 7, perishable_compat = false, blueprint_compat = false, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { center.ability.extra.bonus, center.ability.extra.money } } end, atlas = "atlastwo", @@ -371,14 +368,12 @@ local mneon = { if context.end_of_round and not context.blueprint and not context.individual and not context.repetition then local jollycount = 0 for i = 1, #G.jokers.cards do - if - G.jokers.cards[i]:is_jolly() - or G.jokers.cards[i].ability.effect == "M Joker" - then + if G.jokers.cards[i]:is_jolly() or safe_get(G.jokers.cards[i], "pools", "M") then jollycount = jollycount + 1 end end - card.ability.extra.money = card.ability.extra.money + math.max(1, card.ability.extra.bonus) * (jollycount or 1) + card.ability.extra.money = card.ability.extra.money + + math.max(1, card.ability.extra.bonus) * (jollycount or 1) return { message = localize("cry_m_ex") } end end, @@ -389,36 +384,34 @@ local mneon = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local notebook = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-notebook", key = "notebook", - effect = "M Joker", + pools = { ["M"] = true }, pos = { x = 1, y = 0 }, order = 255, config = { extra = { odds = 7, slot = 0, jollies = 4, check = true, active = "Active", inactive = "", add = 1 }, - jolly = { t_mult = 8, type = "Pair" }, }, rarity = 3, cost = 9, perishable_compat = false, loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), @@ -440,15 +433,14 @@ local notebook = { then local jollycount = 0 for i = 1, #G.jokers.cards do - if - G.jokers.cards[i]:is_jolly() - then + if G.jokers.cards[i]:is_jolly() then jollycount = jollycount + 1 end end if jollycount >= card.ability.extra.jollies --if there are 5 or more jolly jokers - or pseudorandom("cry_notebook") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds + or pseudorandom("cry_notebook") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then card.ability.extra.slot = card.ability.extra.slot + card.ability.extra.add G.jokers.config.card_limit = G.jokers.config.card_limit + card.ability.extra.add @@ -481,31 +473,30 @@ local notebook = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local bonk = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-bonk", key = "bonk", - effect = "M Joker", + pools = { ["M"] = true }, order = 256, pos = { x = 2, y = 2 }, - config = { extra = { chips = 6, bonus = 1, xchips = 3, type = "Pair" }, jolly = { t_mult = 8, type = "Pair" } }, - pools = {["Meme"] = true}, + config = { extra = { chips = 6, bonus = 1, xchips = 3, type = "Pair" } }, + pools = { ["Meme"] = true }, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { center.ability.extra.chips, @@ -532,9 +523,7 @@ local bonk = { end end if context.other_joker and context.other_joker.ability.set == "Joker" then - if - context.other_joker:is_jolly() - then + if context.other_joker:is_jolly() then if not Talisman.config_file.disable_anims then G.E_MANAGER:add_event(Event({ func = function() @@ -572,23 +561,26 @@ local bonk = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local loopy = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-loopy", key = "loopy", - effect = "M Joker", - config = { extra = { retrigger = 0}, jolly = { t_mult = 8, type = "Pair" } }, - pos = { x = 4, y = 1 }, + pools = { ["M"] = true }, + config = { extra = { retrigger = 0 } }, + pos = { x = 7, y = 0 }, order = 257, atlas = "atlastwo", immutable = true, @@ -597,11 +589,7 @@ local loopy = { joker_gate = "Jolly Joker", blueprint_compat = true, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { center.ability.extra.retrigger } } end, calculate = function(self, card, context) @@ -635,21 +623,24 @@ local loopy = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local scrabble = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-scrabble", key = "scrabble", - effect = "M Joker", + pools = { ["M"] = true }, config = { extra = { odds = 4 } }, pos = { x = 0, y = 2 }, order = 258, @@ -658,49 +649,66 @@ local scrabble = { blueprint_compat = true, atlas = "atlasone", loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m - return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), card.ability.extra.odds } } + if cry_card_enabled("e_cry_m") == true then + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m + end + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), + card.ability.extra.odds, + }, + } end, calculate = function(self, card, context) if context.cardarea == G.jokers and context.before and not context.retrigger_joker then local check = false - --if pseudorandom('scrabble') < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged)/card.ability.extra.odds then - --check = true - --local card = create_card('Joker', G.jokers, nil, nil, nil, nil, 'j_jolly') - --card:add_to_deck() - --G.jokers:emplace(card) - --end - if pseudorandom("scrabbleother") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then + if + pseudorandom("scrabbleother") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) + / card.ability.extra.odds + then check = true local card = create_card("Joker", G.jokers, nil, 0.9, nil, nil, nil, "scrabbletile") - card:set_edition({ cry_m = true }) + if cry_card_enabled("e_cry_m") == true then + card:set_edition({ cry_m = true }) + end card:add_to_deck() G.jokers:emplace(card) end if check then - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION }) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION } + ) return nil, true end end end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local sacrifice = { object_type = "Joker", name = "cry-sacrifice", + dependencies = { + items = { "set_cry_m" }, + }, key = "sacrifice", - effect = "M Joker", - config = { extra = { jollies = 3, unc = 1, text = localize("k_active_ex"), spawn = true }, jolly = { t_mult = 8, type = "Pair" } }, + pools = { ["M"] = true }, + config = { extra = { jollies = 3, unc = 1, text = localize("k_active_ex"), spawn = true } }, pos = { x = 5, y = 2 }, order = 259, rarity = 1, @@ -708,12 +716,14 @@ local sacrifice = { blueprint_compat = true, atlas = "atlasone", loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly + return { + vars = { + center.ability.extra.text, + math.min(30, center.ability.extra.jollies), + math.min(30, center.ability.extra.unc), + }, } - return { vars = { center.ability.extra.text, math.min(30, center.ability.extra.jollies), math.min(30, center.ability.extra.unc) } } end, calculate = function(self, card, context) if context.using_consumeable and card.ability.extra.spawn and not context.retrigger_joker then @@ -726,8 +736,11 @@ local sacrifice = { end, })) end - if not card.ability.extra.spawn then - -- card.ability.extra.text = localize("cry_no_triggers") what is going on here? + if card.ability.extra.jollies < 1 then + card.ability.extra.jollies = 1 + end + if card.ability.extra.unc < 1 then + card.ability.extra.unc = 1 end for i = 1, math.min(30, card.ability.extra.jollies) do local jolly = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_jolly") @@ -740,7 +753,14 @@ local sacrifice = { G.jokers:emplace(unc) unc:start_materialize() end - card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, { message = localize("cry_m_ex"), colour = G.C.SPECTRAL }) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("cry_m_ex"), colour = G.C.SPECTRAL } + ) return nil, true end end @@ -757,14 +777,14 @@ local sacrifice = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } --TODO: Fix Brainstorm incompatibility (the joker not the mod) @@ -773,9 +793,13 @@ local reverse = { name = "cry-reverse", key = "reverse", effect = "M Joker", - config = { extra = { type = "Pair", spawn = 0 }, jolly = { t_mult = 8, type = "Pair" } }, - pools = {["Meme"] = true}, + dependencies = { + items = { "set_cry_m" }, + }, + config = { extra = { type = "Pair" } }, + pools = { ["Meme"] = true, ["M"] = true }, pos = { x = 0, y = 0 }, + display_size = { w = 0.7 * 71, h = 0.7 * 95 }, rarity = 2, order = 260, cost = 4, @@ -783,11 +807,7 @@ local reverse = { immutable = true, atlas = "atlastwo", loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly if not center.edition or (center.edition and not center.edition.holo) then info_queue[#info_queue + 1] = G.P_CENTERS.e_holo end @@ -837,20 +857,27 @@ local reverse = { return true end, })) - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION }) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION } + ) end end end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local doodlem = { @@ -858,19 +885,21 @@ local doodlem = { name = "cry-doodlem", key = "doodlem", atlas = "atlasepic", - effect = "M Joker", - config = { extra = {add = 1, init = 2}, jolly = { t_mult = 8, type = "Pair" } }, + pools = { ["M"] = true }, + dependencies = { + items = { + "set_cry_m", + "set_cry_epic", + }, + }, + config = { extra = { add = 1, init = 2 } }, pos = { x = 2, y = 0 }, rarity = "cry_epic", cost = 13, order = 266, blueprint_compat = true, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly info_queue[#info_queue + 1] = { key = "e_negative_consumable", set = "Edition", config = { extra = 1 } } return { vars = { center.ability.extra.add, center.ability.extra.init } } end, @@ -878,10 +907,8 @@ local doodlem = { if context.setting_blind and not (context.blueprint_card or self).getting_sliced then local jollycount = card.ability.extra.init for i = 1, #G.jokers.cards do - if - G.jokers.cards[i]:is_jolly() - then - jollycount = jollycount + card.ability.extra.add + if G.jokers.cards[i]:is_jolly() then + jollycount = jollycount + math.floor(card.ability.extra.add) end end if jollycount > 25 then @@ -906,34 +933,36 @@ local doodlem = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local virgo = { object_type = "Joker", name = "cry-virgo", key = "virgo", - effect = "M Joker", + pools = { ["M"] = true }, + dependencies = { + items = { + "set_cry_m", + "set_cry_epic", + }, + }, pos = { x = 1, y = 2 }, soul_pos = { x = 10, y = 0, extra = { x = 2, y = 2 } }, - config = { extra = { bonus = 4, type = "Pair" }, jolly = { t_mult = 8, type = "Pair" } }, + config = { extra = { bonus = 4, type = "Pair" } }, rarity = "cry_epic", cost = 8, order = 265, eternal_compat = false, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly if not center.edition or (center.edition and not center.edition.polychrome) then info_queue[#info_queue + 1] = G.P_CENTERS.e_polychrome end @@ -974,7 +1003,14 @@ local virgo = { return true end, })) - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION }) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION } + ) return true end, })) @@ -983,21 +1019,28 @@ local virgo = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local smallestm = { object_type = "Joker", name = "cry-smallestm", + dependencies = { + items = { + "set_cry_m", + "set_cry_epic", + "tag_cry_double_m", + }, + }, key = "smallestm", - effect = "M Joker", + pools = { ["M"] = true }, config = { extra = { type = "Pair" } }, pos = { x = 5, y = 0 }, rarity = "cry_epic", @@ -1018,8 +1061,8 @@ local smallestm = { --This isn't retrigger joker compatible for some reason if context.scoring_name == card.ability.extra.type then add_tag(Tag("tag_cry_double_m")) - play_sound('generic1', 0.9 + math.random()*0.1, 0.8) - play_sound('holo1', 1.2 + math.random()*0.1, 0.4) + play_sound("generic1", 0.9 + math.random() * 0.1, 0.8) + play_sound("holo1", 1.2 + math.random() * 0.1, 0.4) card_eval_status_text(context.blueprint_card or card, "extra", nil, nil, nil, { message = localize("cry_m_ex"), colour = G.C.FILTER, @@ -1029,14 +1072,14 @@ local smallestm = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local biggestm = { @@ -1045,8 +1088,15 @@ local biggestm = { key = "biggestm", config = { extra = { x_mult = 7, type = "Pair", check = false, text = "Inactive" } }, pos = { x = 3, y = 3 }, + display_size = { w = 1.7 * 71, h = 1.7 * 95 }, + dependencies = { + items = { + "set_cry_m", + "set_cry_epic", + }, + }, rarity = "cry_epic", - effect = "M Joker", + pools = { ["M"] = true }, cost = 12, order = 268, blueprint_compat = true, @@ -1061,9 +1111,9 @@ local biggestm = { } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and card.ability.extra.check and not context.before and not context.after then + if context.joker_main and card.ability.extra.check then return { - message = localize{type='variable',key='a_xmult',vars={card.ability.extra.x_mult}}, + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, colour = G.C.MULT, } @@ -1096,29 +1146,31 @@ local biggestm = { end, cry_credits = { idea = { - "Kailen" + "Kailen", }, art = { - "Kailen" + "Kailen", }, code = { - "Kailen" - } + "Kailen", + }, }, } local mprime = { + dependencies = { + items = { + "set_cry_m", + "c_cry_gateway", + }, + }, object_type = "Joker", name = "cry-mprime", key = "mprime", pos = { x = 0, y = 5 }, soul_pos = { x = 2, y = 5, extra = { x = 1, y = 5 } }, - config = { extra = { mult = 1.05, bonus = 0.04 }, jolly = { t_mult = 8, type = "Pair" } }, + config = { extra = { mult = 1.05, bonus = 0.04 } }, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { center.ability.extra.mult, center.ability.extra.bonus } } end, rarity = "cry_exotic", @@ -1128,41 +1180,33 @@ local mprime = { atlas = "atlasexotic", perishable_compat = false, calculate = function(self, card, context) - if - context.selling_card - and ( - context.card:is_jolly() - ) - then + if context.selling_card and (context.card:is_jolly()) then if not context.blueprint then card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.bonus end if not context.retrigger_joker then - card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION }) - end - elseif context.end_of_round and not context.individual and not context.repetition - and #G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit - and not context.retrigger_joker then - local loyalservants = {} - for k, _ in pairs(Cryptid.M_jokers) do - if G.P_CENTERS[k] then - loyalservants[#loyalservants + 1] = k - end + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("cry_m_ex"), colour = G.C.DARK_EDITION } + ) end + elseif + context.end_of_round + and not context.individual + and not context.repetition + and #G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit + and not context.retrigger_joker + then local mjoker = math.min(1, G.jokers.config.card_limit - (#G.jokers.cards + G.GAME.joker_buffer)) G.GAME.joker_buffer = G.GAME.joker_buffer + mjoker G.E_MANAGER:add_event(Event({ func = function() if mjoker > 0 then - local card = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - pseudorandom_element(loyalservants, pseudoseed("mprime")) - ) + local card = create_card("M", G.jokers, nil, nil, nil, nil, nil, "mprime") card:add_to_deck() G.jokers:emplace(card) card:start_materialize() @@ -1174,10 +1218,7 @@ local mprime = { elseif context.other_joker then if context.other_joker - and ( - context.other_joker:is_jolly() - or context.other_joker.ability.effect == "M Joker" - ) + and (context.other_joker:is_jolly() or safe_get(context.other_joker, "pools", "M")) then if not Talisman.config_file.disable_anims then G.E_MANAGER:add_event(Event({ @@ -1188,7 +1229,7 @@ local mprime = { })) end return { - message = localize{type='variable',key='a_powmult',vars={card.ability.extra.mult}}, + message = localize({ type = "variable", key = "a_powmult", vars = { card.ability.extra.mult } }), Emult_mod = card.ability.extra.mult, colour = G.C.DARK_EDITION, card = card, @@ -1198,30 +1239,32 @@ local mprime = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local macabre = { + dependencies = { + items = { + "set_cry_m", + }, + }, object_type = "Joker", name = "cry-Macabre Joker", key = "macabre", - effect = "M Joker", + pools = { ["M"] = true }, order = 263, pos = { x = 1, y = 2 }, - config = { extra = {add = 1}, jolly = { t_mult = 8, type = "Pair" } }, + display_size = { w = 1.2 * 71, h = 1.2 * 95 }, + config = { extra = { add = 1 } }, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { math.min(15, center.ability.extra.add) } } end, rarity = 1, @@ -1229,6 +1272,9 @@ local macabre = { atlas = "atlasthree", calculate = function(self, card, context) if context.setting_blind and not (context.blueprint or context.retrigger_joker) and not card.getting_sliced then + if card.ability.extra.add < 1 then + card.ability.extra.add = 1 + end G.E_MANAGER:add_event(Event({ func = function() local triggered = false @@ -1238,11 +1284,7 @@ local macabre = { v ~= card and not v:is_jolly() and v.config.center.key ~= "j_cry_mprime" - and not ( - v.ability.eternal - or v.getting_sliced - or Cryptid.M_jokers[v.config.center.key] - ) + and not (v.ability.eternal or v.getting_sliced or safe_get(v, "pools", "M")) then destroyed_jokers[#destroyed_jokers + 1] = v end @@ -1271,32 +1313,31 @@ local macabre = { end, cry_credits = { idea = { - "SDM_0" + "SDM_0", }, art = { - "SDM_0" + "SDM_0", }, code = { - "SDM_0" - } + "SDM_0", + }, }, } local megg = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-megg", key = "Megg", - effect = "M Joker", + pools = { ["M"] = true }, blueprint_compat = false, eternal_compat = false, pos = { x = 0, y = 4 }, order = 262, config = { extra = { amount = 0, amount_mod = 1 }, jolly = { t_mult = 8, type = "Pair" } }, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } + info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly return { vars = { math.max(1, center.ability.extra.amount_mod), @@ -1318,7 +1359,14 @@ local megg = { if card.ability.extra.amount > 200 then card.ability.extra.amount = 200 end - card_eval_status_text(card, "extra", nil, nil, nil, { message = { localize("cry_jolly_ex") }, colour = G.C.FILTER }) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = { localize("cry_jolly_ex") }, colour = G.C.FILTER } + ) return nil, true end if @@ -1335,17 +1383,20 @@ local megg = { end, cry_credits = { idea = { - "Watermelon Lover" + "Watermelon Lover", }, art = { - "Watermelon Lover" + "Watermelon Lover", }, code = { - "SDM_0" - } + "SDM_0", + }, }, } local longboi = { + dependencies = { + items = { "set_cry_m" }, + }, object_type = "Joker", name = "cry-longboi", key = "longboi", @@ -1354,21 +1405,24 @@ local longboi = { rarity = 1, cost = 5, order = 261, - effect = "M Joker", + pools = { ["M"] = true }, no_dbl = true, blueprint_compat = true, eternal_compat = false, loc_vars = function(self, info_queue, center) - return { vars = { math.max(0.75, math.floor(center.ability.extra.bonus)), (center.ability.extra.mult ~= nil and center.ability.extra.mult or (G.GAME.monstermult or 1)) } } + return { + vars = { + math.max(0.75, math.floor(center.ability.extra.bonus)), + (center.ability.extra.mult ~= nil and center.ability.extra.mult or (G.GAME.monstermult or 1)), + }, + } end, atlas = "atlasthree", calculate = function(self, card, context) - if - context.end_of_round - and not context.individual - and not context.repetition - then - if not G.GAME.monstermult then G.GAME.monstermult = 1 end + if context.end_of_round and not context.individual and not context.repetition then + if not G.GAME.monstermult then + G.GAME.monstermult = 1 + end G.GAME.monstermult = G.GAME.monstermult + math.max(0.75, math.floor(card.ability.extra.bonus)) if not context.retrigger_joker then return { @@ -1378,12 +1432,7 @@ local longboi = { }), } end - elseif - context.cardarea == G.jokers - and ((card.ability.extra.mult or 1) > 1) - and not context.before - and not context.after - then + elseif context.joker_main and ((card.ability.extra.mult or 1) > 1) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.mult } }), Xmult_mod = card.ability.extra.mult, @@ -1393,21 +1442,23 @@ local longboi = { add_to_deck = function(self, card, from_debuff) if (not from_debuff and card.ability.extra.mult == nil) or card.checkmonster then --Stops Things like Gemini from updating mult when it isn't supposed to - if card.checkmonster then card.checkmonster = nil end + if card.checkmonster then + card.checkmonster = nil + end card.ability.extra.mult = G.GAME.monstermult or 1 end end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Watermelon Lover" + "Watermelon Lover", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local ret_items = { @@ -1422,7 +1473,12 @@ local ret_items = { reverse, macabre, megg, - longboi + longboi, + doodlem, + virgo, + smallestm, + biggestm, + mprime, } --retriggering system for M Vouchers function get_m_retriggers(self, card, context) @@ -1449,54 +1505,6 @@ function get_m_retriggers(self, card, context) end return { name = "M Jokers", - init = function() - --Load In Jokers if specific Cryptid configs are enabled - if Cryptid.enabled["Epic Jokers"] then - Cryptid.M_jokers["j_cry_m"] = true - Cryptid.M_jokers["j_cry_M"] = true - for _, jkr in pairs({ doodlem, virgo, biggestm }) do - ret_items[#ret_items + 1] = jkr - end - end - if Cryptid.enabled["Exotic Jokers"] then - for _, jkr in pairs({ mprime }) do - ret_items[#ret_items + 1] = jkr - end - end - if Cryptid.enabled["Misc."] then - for _, jkr in pairs({ jollysus, scrabble }) do - ret_items[#ret_items + 1] = jkr - end - end - --there must be a better way than this - if Cryptid.enabled["Misc."] and Cryptid.enabled["Epic Jokers"] and Cryptid.enabled["Tags"] then - for _, jkr in pairs({ smallestm }) do - ret_items[#ret_items + 1] = jkr - end - end - --end of cryptid config loading - - for i = 1, #ret_items do - Cryptid.M_jokers["j_cry_" .. ret_items[i].key] = true - local vc = ret_items[i].calculate - ret_items[i].calculate = function(self, card, context) - local ret, trig = vc(self, card, context) - if context.retrigger_joker_check and context.other_card == card then - local reps = get_m_retriggers(self, card, context) - if reps > 0 then - return { - message = localize("k_again_ex"), - repetitions = reps + (ret and ret.repetitions or 0), - card = card, - } - end - end - return ret, trig - end - end - if Cryptid.enabled["Exotic Jokers"] then - Cryptid.M_jokers.j_cry_mprime = nil - end - end, + init = function() end, items = ret_items, } diff --git a/Cryptid/Items/Misc.lua b/Cryptid/items/misc.lua similarity index 53% rename from Cryptid/Items/Misc.lua rename to Cryptid/items/misc.lua index 480cd49..10a630b 100644 --- a/Cryptid/Items/Misc.lua +++ b/Cryptid/items/misc.lua @@ -1,40 +1,25 @@ -local memepack_atlas = { - object_type = "Atlas", - key = "memepack", - path = "pack_cry.png", - px = 71, - py = 95, -} -local meme_object_type = { - object_type = "ObjectType", - key = "Meme", - default = "j_mr_bones", - cards = {}, - inject = function(self) - SMODS.ObjectType.inject(self) - -- insert base game meme jokers - self:inject_card(G.P_CENTERS.j_mr_bones) - self:inject_card(G.P_CENTERS.j_obelisk) - self:inject_card(G.P_CENTERS.j_jolly) - self:inject_card(G.P_CENTERS.j_space) - for i, v in ipairs(Cryptid.memepack) do - self.cards[v] = true - end - end -} +-- Packs local meme1 = { object_type = "Booster", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "meme_1", kind = "meme", - atlas = "memepack", + atlas = "pack", pos = { x = 0, y = 1 }, order = 5, config = { extra = 5, choose = 2 }, cost = 14, weight = 0.18 / 3, --0.18 base ÷ 3 since there are 3 identical packs create_card = function(self, card) - if Cryptid.enabled["Misc. Jokers"] and not (G.GAME.used_jokers['j_cry_waluigi'] and not next(find_joker("Showman"))) then - if pseudorandom('meme1_'..G.GAME.round_resets.ante) > 0.997 then + if + Cryptid.enabled["Misc. Jokers"] + and not (G.GAME.used_jokers["j_cry_waluigi"] and not next(find_joker("Showman"))) + then + if pseudorandom("meme1_" .. G.GAME.round_resets.ante) > 0.997 then return create_card(nil, G.pack_cards, nil, nil, true, true, "j_cry_waluigi", nil) end end @@ -45,15 +30,13 @@ local meme1 = { ease_background_colour({ new_colour = G.C.CRY_ASCENDANT, special_colour = G.C.BLACK, contrast = 2 }) end, loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } - end, --For some reason, I need to keep the loc_txt or else it crashes - loc_txt = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } + end, update_pack = function(self, dt) ease_colour(G.C.DYN_UI.MAIN, G.C.CRY_ASCENDANT) ease_background_colour({ new_colour = G.C.CRY_ASCENDANT, special_colour = G.C.BLACK, contrast = 2 }) @@ -63,17 +46,26 @@ local meme1 = { } local meme2 = { object_type = "Booster", + dependencies = { + items = { + "set_cry_misc", + "p_cry_meme_1", + }, + }, key = "meme_two", kind = "meme", - atlas = "memepack", + atlas = "pack", pos = { x = 1, y = 1 }, order = 6, config = { extra = 5, choose = 2 }, cost = 14, weight = 0.18 / 3, --0.18 base ÷ 3 since there are 3 identical packs create_card = function(self, card) - if Cryptid.enabled["Misc. Jokers"] and not (G.GAME.used_jokers['j_cry_waluigi'] and not next(find_joker("Showman"))) then - if pseudorandom('memetwo_'..G.GAME.round_resets.ante) > 0.997 then + if + Cryptid.enabled["Misc. Jokers"] + and not (G.GAME.used_jokers["j_cry_waluigi"] and not next(find_joker("Showman"))) + then + if pseudorandom("memetwo_" .. G.GAME.round_resets.ante) > 0.997 then return create_card(nil, G.pack_cards, nil, nil, true, true, "j_cry_waluigi", nil) end end @@ -84,15 +76,13 @@ local meme2 = { ease_background_colour({ new_colour = G.C.CRY_ASCENDANT, special_colour = G.C.BLACK, contrast = 2 }) end, loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } end, - loc_txt = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, update_pack = function(self, dt) ease_colour(G.C.DYN_UI.MAIN, G.C.CRY_ASCENDANT) ease_background_colour({ new_colour = G.C.CRY_ASCENDANT, special_colour = G.C.BLACK, contrast = 2 }) @@ -102,17 +92,27 @@ local meme2 = { } local meme3 = { object_type = "Booster", + dependencies = { + items = { + "set_cry_misc", + "p_cry_meme_1", + "p_cry_meme_two", + }, + }, key = "meme_three", kind = "meme", - atlas = "memepack", + atlas = "pack", pos = { x = 2, y = 1 }, order = 7, config = { extra = 5, choose = 2 }, cost = 14, weight = 0.18 / 3, --0.18 base ÷ 3 since there are 3 identical packs create_card = function(self, card) - if Cryptid.enabled["Misc. Jokers"] and not (G.GAME.used_jokers['j_cry_waluigi'] and not next(find_joker("Showman"))) then - if pseudorandom('memethree_'..G.GAME.round_resets.ante) > 0.997 then + if + Cryptid.enabled["Misc. Jokers"] + and not (G.GAME.used_jokers["j_cry_waluigi"] and not next(find_joker("Showman"))) + then + if pseudorandom("memethree_" .. G.GAME.round_resets.ante) > 0.997 then return create_card(nil, G.pack_cards, nil, nil, true, true, "j_cry_waluigi", nil) end end @@ -123,15 +123,13 @@ local meme3 = { ease_background_colour({ new_colour = G.C.CRY_ASCENDANT, special_colour = G.C.BLACK, contrast = 2 }) end, loc_vars = function(self, info_queue, card) - return { vars = { card.config.center.config.choose, card.ability.extra } } + return { + vars = { + card and card.ability.choose or self.config.choose, + card and card.ability.extra or self.config.extra, + }, + } end, - loc_txt = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, update_pack = function(self, dt) ease_colour(G.C.DYN_UI.MAIN, G.C.CRY_ASCENDANT) ease_background_colour({ new_colour = G.C.CRY_ASCENDANT, special_colour = G.C.BLACK, contrast = 2 }) @@ -145,7 +143,6 @@ if not AurinkoAddons then end --Edition code based on Bunco's Glitter Edition - local mosaic_shader = { object_type = "Shader", key = "mosaic", @@ -153,13 +150,18 @@ local mosaic_shader = { } local mosaic = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "mosaic", order = 2, weight = 0.8, --slightly rarer than Polychrome shader = "mosaic", in_shop = true, - extra_cost = 6, - config = { x_chips = 2.5 }, + extra_cost = 5, + config = { x_chips = 2.5, trigger = nil }, sound = { sound = "cry_e_mosaic", per = 1, @@ -171,7 +173,29 @@ local mosaic = { loc_vars = function(self, info_queue) return { vars = { self.config.x_chips } } end, + calculate = function(self, card, context) + if + ( + context.edition -- for when on jonklers + and context.cardarea == G.jokers -- checks if should trigger + and card.config.trigger -- fixes double trigger + ) or ( + context.main_scoring -- for when on playing cards + and context.cardarea == G.play + ) + then + return { x_chips = self.config.x_chips } -- updated value + end + if context.joker_main then + card.config.trigger = true -- context.edition triggers twice, this makes it only trigger once (only for jonklers) + end + + if context.after then + card.config.trigger = nil + end + end, } + local oversat_shader = { object_type = "Shader", key = "oversat", @@ -179,6 +203,11 @@ local oversat_shader = { } local oversat = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "oversat", order = 3, weight = 3, @@ -195,77 +224,76 @@ local oversat = { end, on_apply = function(card) cry_with_deck_effects(card, function(card) - cry_misprintize(card, nil, true) cry_misprintize(card, { - min = 2 * (G.GAME.modifiers.cry_misprint_min or 1), - max = 2 * (G.GAME.modifiers.cry_misprint_max or 1), - }) + min = 2, + max = 2, + }, nil, true) end) if card.config.center.apply_oversat then - card.config.center:apply_oversat(card, function(val) + card.config.center:apply_oversat(card, function(val) return cry_misprintize_val(val, { - min = 2 * (G.GAME.modifiers.cry_misprint_min or 1), - max = 2 * (G.GAME.modifiers.cry_misprint_max or 1), - }) + min = 2, + max = 2, + }, is_card_big(card), true) end) end end, on_remove = function(card) cry_with_deck_effects(card, function(card) - cry_misprintize(card, {min = 1, max = 1}, true) -- - cry_misprintize(card) + cry_misprintize(card, { min = 0.5, max = 0.5 }, nil, true) end) end, + init = function(self) + AurinkoAddons.cry_oversat = function(card, hand, instant, amount) + G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + (G.GAME.hands[hand].l_chips * amount), 0) + G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + (G.GAME.hands[hand].l_mult * amount), 1) + if not instant then + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + func = function() + play_sound("chips1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 1.3 }, { chips = G.GAME.hands[hand].chips, StatusText = true }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + func = function() + play_sound("multhit1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 1.3 }, { mult = G.GAME.hands[hand].mult, StatusText = true }) + elseif hand == G.handlist[#G.handlist] then + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("chips1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 1.3 }, { chips = (amount > 0 and "++" or "--"), StatusText = true }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("multhit1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 1.3 }, { mult = (amount > 0 and "++" or "--"), StatusText = true }) + end + end + end, } -AurinkoAddons.cry_oversat = function(card, hand, instant, amount) - G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + (G.GAME.hands[hand].l_chips * amount), 0) - G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + (G.GAME.hands[hand].l_mult * amount), 1) - if not instant then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - func = function() - play_sound("chips1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { chips = G.GAME.hands[hand].chips, StatusText = true }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - func = function() - play_sound("multhit1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { mult = G.GAME.hands[hand].mult, StatusText = true }) - elseif hand == G.handlist[#G.handlist] then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("chips1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { chips = (amount > 0 and "++" or "--"), StatusText = true }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("multhit1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { mult = (amount > 0 and "++" or "--"), StatusText = true }) - end -end - local glitched_shader = { object_type = "Shader", key = "glitched", @@ -273,12 +301,17 @@ local glitched_shader = { } local glitched = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "glitched", order = 1, weight = 15, shader = "glitched", in_shop = true, - extra_cost = 3, + extra_cost = 0, sound = { sound = "cry_e_glitched", per = 1, @@ -287,193 +320,204 @@ local glitched = { get_weight = function(self) return G.GAME.edition_rate * self.weight end, + -- Note: This is happening even when it shouldn't (like in deck view) + -- Also messes with rank sort order a bit for some reason on_apply = function(card) cry_with_deck_effects(card, function(card) - cry_misprintize(card, nil, true) cry_misprintize(card, { - min = 0.1 * (G.GAME.modifiers.cry_misprint_min or 1), - max = 10 * (G.GAME.modifiers.cry_misprint_max or 1), - }) + min = 0.1, + max = 10, + }, nil, true) end) if card.config.center.apply_glitched then card.config.center:apply_glitched(card, function(val) return cry_misprintize_val(val, { min = 0.1 * (G.GAME.modifiers.cry_misprint_min or 1), max = 10 * (G.GAME.modifiers.cry_misprint_max or 1), - }) + }, is_card_big(card), true) end) end end, on_remove = function(card) cry_with_deck_effects(card, function(card) - cry_misprintize(card, {min = 1, max = 1}, true) + cry_misprintize(card, { min = 1, max = 1 }, true) cry_misprintize(card) -- Correct me if i'm wrong but this is for misprint deck. or atleast it is after this patch end) end, -} + init = function(self) + local randtext = { + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + " ", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "+", + "-", + "?", + "!", + "$", + "%", + "[", + "]", + "(", + ")", + } -local randtext = { - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - " ", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "+", - "-", - "?", - "!", - "$", - "%", - "[", - "]", - "(", - ")", -} - -local function obfuscatedtext(length) - local str = "" - for i = 1, length do - str = str .. randtext[math.random(#randtext)] - end - return str -end - -AurinkoAddons.cry_glitched = function(card, hand, instant, amount) - local modc = G.GAME.hands[hand].l_chips - * cry_log_random( - pseudoseed("cry_aurinko_chips_misprint" .. G.GAME.round_resets.ante), - (G.GAME.modifiers.cry_misprint_min or 1) / 10, - (G.GAME.modifiers.cry_misprint_max or 1) * 10 - ) - * amount - local modm = G.GAME.hands[hand].l_mult - * cry_log_random( - pseudoseed("cry_aurinko_mult_misprint" .. G.GAME.round_resets.ante), - (G.GAME.modifiers.cry_misprint_min or 1) / 10, - (G.GAME.modifiers.cry_misprint_max or 1) * 10 - ) - * amount - G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + modc, 1) - G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + modm, 1) - if not instant then - for i = 1, math.random(2, 4) do - update_hand_text( - { sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, - { chips = obfuscatedtext(3) } - ) + local function obfuscatedtext(length) + local str = "" + for i = 1, length do + str = str .. randtext[math.random(#randtext)] + end + return str end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0, - func = function() - play_sound("chips1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text( - { delay = 0 }, - { chips = (amount > 0 and "+" or "-") .. number_format(math.abs(modc)), StatusText = true } - ) - update_hand_text({ delay = 1.3 }, { chips = G.GAME.hands[hand].chips }) - for i = 1, math.random(2, 4) do - update_hand_text({ sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, { mult = obfuscatedtext(3) }) + + AurinkoAddons.cry_glitched = function(card, hand, instant, amount) + local modc = G.GAME.hands[hand].l_chips + * cry_log_random( + pseudoseed("cry_aurinko_chips_misprint" .. G.GAME.round_resets.ante), + (G.GAME.modifiers.cry_misprint_min or 1) / 10, + (G.GAME.modifiers.cry_misprint_max or 1) * 10 + ) + * amount + local modm = G.GAME.hands[hand].l_mult + * cry_log_random( + pseudoseed("cry_aurinko_mult_misprint" .. G.GAME.round_resets.ante), + (G.GAME.modifiers.cry_misprint_min or 1) / 10, + (G.GAME.modifiers.cry_misprint_max or 1) * 10 + ) + * amount + G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + modc, 1) + G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + modm, 1) + if not instant then + for i = 1, math.random(2, 4) do + update_hand_text( + { sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, + { chips = obfuscatedtext(3) } + ) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + play_sound("chips1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 0 }, { + chips = (to_big(amount) > to_big(0) and "+" or "-") .. number_format(math.abs(modc)), + StatusText = true, + }) + update_hand_text({ delay = 1.3 }, { chips = G.GAME.hands[hand].chips }) + for i = 1, math.random(2, 4) do + update_hand_text( + { sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, + { mult = obfuscatedtext(3) } + ) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + play_sound("multhit1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 0 }, { + mult = (to_big(amount) > to_big(0) and "+" or "-") .. number_format(math.abs(modm)), + StatusText = true, + }) + update_hand_text({ delay = 1.3 }, { mult = G.GAME.hands[hand].mult }) + elseif hand == G.handlist[#G.handlist] then + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("chips1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text( + { delay = 1.3 }, + { chips = (to_big(amount) > to_big(0) and "+" or "-") .. "???", StatusText = true } + ) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("multhit1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text( + { delay = 1.3 }, + { mult = (to_big(amount) > to_big(0) and "+" or "-") .. "???", StatusText = true } + ) + end end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0, - func = function() - play_sound("multhit1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text( - { delay = 0 }, - { mult = (amount > 0 and "+" or "-") .. number_format(math.abs(modm)), StatusText = true } - ) - update_hand_text({ delay = 1.3 }, { mult = G.GAME.hands[hand].mult }) - elseif hand == G.handlist[#G.handlist] then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("chips1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { chips = (amount > 0 and "+" or "-") .. "???", StatusText = true }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("multhit1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { mult = (amount > 0 and "+" or "-") .. "???", StatusText = true }) - end -end + end, +} local astral_shader = { object_type = "Shader", @@ -482,12 +526,17 @@ local astral_shader = { } local astral = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "astral", order = 30, weight = 0.3, --very rare shader = "astral", in_shop = true, - extra_cost = 3, + extra_cost = 9, sound = { sound = "talisman_emult", per = 1, @@ -496,11 +545,33 @@ local astral = { get_weight = function(self) return G.GAME.edition_rate * self.weight end, - config = { e_mult = 1.1 }, + config = { e_mult = 1.1, trigger = nil }, loc_vars = function(self, info_queue) return { vars = { self.config.e_mult } } end, + calculate = function(self, card, context) + if + ( + context.edition -- for when on jonklers + and context.cardarea == G.jokers -- checks if should trigger + and card.config.trigger -- fixes double trigger + ) or ( + context.main_scoring -- for when on playing cards + and context.cardarea == G.play + ) + then + return { e_mult = self.config.e_mult } -- updated value + end + if context.joker_main then + card.config.trigger = true -- context.edition triggers twice, this makes it only trigger once (only for jonklers) + end + + if context.after then + card.config.trigger = nil + end + end, } + local blurred_shader = { object_type = "Shader", key = "blur", @@ -508,12 +579,17 @@ local blurred_shader = { } local blurred = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "blur", order = 6, weight = 0.5, --very rare shader = "blur", in_shop = true, - extra_cost = 3, + extra_cost = 5, sound = { sound = "cry_e_blur", per = 1, @@ -524,23 +600,31 @@ local blurred = { end, config = { retrigger_chance = 2, retriggers = 1, extra_retriggers = 1 }, loc_vars = function(self, info_queue, center) - local chance = center and center.edition.retrigger_chance or self.config.retrigger_chance - local retriggers = center and center.edition.retriggers or self.config.retriggers + local chance = center and center.edition and center.edition.retrigger_chance or self.config.retrigger_chance + local retriggers = center and center.edition and center.edition.retriggers or self.config.retriggers return { vars = { G.GAME.probabilities.normal, chance, retriggers } } end, + --Note: This doesn't always play the animations properly for Jokers calculate = function(self, card, context) - if context.retrigger_edition_check then - if pseudorandom("cry_blurred") <= G.GAME.probabilities.normal / self.config.retrigger_chance then - return { - message = localize("cry_again_q"), - repetitions = self.config.extra_retriggers, - card = card, - } - end + if + context.other_card == card + and ( + (context.repetition and context.cardarea == G.play) + or (context.retrigger_joker_check and not context.retrigger_joker) + ) + then + local extra_retrigger = pseudorandom("cry_blurred") + <= G.GAME.probabilities.normal / self.config.retrigger_chance + return { + message = localize("cry_again_q"), + repetitions = self.config.retriggers + (extra_retrigger and self.config.extra_retriggers or 0), + card = card, + } end end, } + local noisy_shader = { object_type = "Shader", key = "noisy", @@ -549,31 +633,60 @@ local noisy_shader = { local noisy_stats = { min = { mult = 0, - chips = 0 + chips = 0, }, max = { mult = 30, - chips = 150 - } + chips = 150, + }, } local noisy = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, key = "noisy", order = 7, weight = 3, shader = "noisy", in_shop = true, extra_cost = 4, - config = { min_mult = noisy_stats.min.mult, max_mult = noisy_stats.max.mult, min_chips = noisy_stats.min.chips, max_chips = noisy_stats.max.chips }, + config = { + min_mult = noisy_stats.min.mult, + max_mult = noisy_stats.max.mult, + min_chips = noisy_stats.min.chips, + max_chips = noisy_stats.max.chips, + trigger = nil, + }, sound = { sound = "cry_e_noisy", per = 1, vol = 0.25, }, calculate = function(self, card, context) - if context.edition_main and context.edition_val then - context.edition_val.mult_mod = pseudorandom("cry_noisy_mult", self.config.min_mult, self.config.max_mult) - context.edition_val.chip_mod = pseudorandom("cry_noisy_chips", self.config.min_chips, self.config.max_chips) + if + ( + context.edition -- for when on jonklers + and context.cardarea == G.jokers -- checks if should trigger + and card.config.trigger -- fixes double trigger + ) or ( + context.main_scoring -- for when on playing cards + and context.cardarea == G.play + ) + then + return { + mult = pseudorandom("cry_noisy_mult", self.config.min_mult, self.config.max_mult), + chips = pseudorandom("cry_noisy_chips", self.config.min_chips, self.config.max_chips), + } -- updated value + end + if context.joker_main then + card.config.trigger = true -- context.edition triggers twice, this makes it only trigger once (only for jonklers) + end + + if context.after then + card.config.trigger = nil end end, generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) @@ -675,7 +788,10 @@ local noisy = { { string = "rand()", colour = G.C.JOKER_GREY }, { string = "@#" - .. (G.deck and G.deck.cards[1] and G.deck.cards[1].base.suit and G.deck.cards[1].base.suit:sub(2, 2) or "m") + .. (G.deck and G.deck.cards[1] and G.deck.cards[1].base.suit and G.deck.cards[1].base.suit:sub( + 2, + 2 + ) or "m") .. (G.deck and G.deck.cards[1] and G.deck.cards[1].base.id or 7), colour = G.C.BLUE, }, @@ -707,75 +823,79 @@ local noisy = { desc_nodes[#desc_nodes + 1] = mult_ui desc_nodes[#desc_nodes + 1] = chip_ui end, + init = function(self) + AurinkoAddons.cry_noisy = function(card, hand, instant, amount) + local modc = pseudorandom("cry_noisy_chips_aurinko", noisy_stats.min.chips, noisy_stats.max.chips) + local modm = pseudorandom("cry_noisy_mult_aurinko", noisy_stats.min.mult, noisy_stats.max.mult) + G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + modc, 1) + G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + modm, 1) + if not instant then + for i = 1, math.random(2, 4) do + update_hand_text( + { sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, + { chips = obfuscatedtext(3) } + ) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + play_sound("chips1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text( + { delay = 0 }, + { chips = (amount > to_big(0) and "+" or "-") .. number_format(math.abs(modc)), StatusText = true } + ) + update_hand_text({ delay = 1.3 }, { chips = G.GAME.hands[hand].chips }) + for i = 1, math.random(2, 4) do + update_hand_text( + { sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, + { mult = obfuscatedtext(3) } + ) + end + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + play_sound("multhit1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text( + { delay = 0 }, + { mult = (amount > to_big(0) and "+" or "-") .. number_format(math.abs(modm)), StatusText = true } + ) + update_hand_text({ delay = 1.3 }, { mult = G.GAME.hands[hand].mult }) + elseif hand == G.handlist[#G.handlist] then + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("chips1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 1.3 }, { chips = (amount > 0 and "+" or "-") .. "???", StatusText = true }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("multhit1") + card:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 1.3 }, { mult = (amount > 0 and "+" or "-") .. "???", StatusText = true }) + end + end + end, } -AurinkoAddons.cry_noisy = function(card, hand, instant, amount) - local modc = pseudorandom("cry_noisy_chips_aurinko", noisy_stats.min.chips, noisy_stats.max.chips) - local modm = pseudorandom("cry_noisy_mult_aurinko", noisy_stats.min.mult, noisy_stats.max.mult) - G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + modc, 1) - G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + modm, 1) - if not instant then - for i = 1, math.random(2, 4) do - update_hand_text( - { sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, - { chips = obfuscatedtext(3) } - ) - end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0, - func = function() - play_sound("chips1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text( - { delay = 0 }, - { chips = (amount > 0 and "+" or "-") .. number_format(math.abs(modc)), StatusText = true } - ) - update_hand_text({ delay = 1.3 }, { chips = G.GAME.hands[hand].chips }) - for i = 1, math.random(2, 4) do - update_hand_text({ sound = "button", volume = 0.4, pitch = 1.1, delay = 0.2 }, { mult = obfuscatedtext(3) }) - end - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0, - func = function() - play_sound("multhit1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text( - { delay = 0 }, - { mult = (amount > 0 and "+" or "-") .. number_format(math.abs(modm)), StatusText = true } - ) - update_hand_text({ delay = 1.3 }, { mult = G.GAME.hands[hand].mult }) - elseif hand == G.handlist[#G.handlist] then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("chips1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { chips = (amount > 0 and "+" or "-") .. "???", StatusText = true }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("multhit1") - card:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 1.3 }, { mult = (amount > 0 and "+" or "-") .. "???", StatusText = true }) - end -end - local jollyeditionshader = { object_type = "Shader", key = "m", @@ -783,10 +903,16 @@ local jollyeditionshader = { } local jollyedition = { object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + "set_cry_m", + }, + }, in_shop = false, order = 31, weight = 0, - pos = {x = 2, y = 0}, + pos = { x = 2, y = 0 }, name = "cry-jollyedition", sound = { sound = "cry_e_jolly", @@ -794,7 +920,7 @@ local jollyedition = { vol = 0.3, }, extra_cost = 0, - config = { mult = 8 }, + config = { mult = 8, trigger = nil }, apply_to_float = true, key = "m", shader = "m", @@ -803,823 +929,28 @@ local jollyedition = { loc_vars = function(self, info_queue) return { vars = { self.config.mult } } end, -} - -local glass_shader = { - object_type = "Shader", - key = "glass", - path = "glass.fs", - send_vars = function(sprite, card) - return { - lines_offset = card and card.edition and card.edition.cry_glass_seed or 0, - } - end, -} -local glass_edition = { - object_type = "Edition", - key = "glass", - order = 4, - shader = "glass", - in_shop = true, - disable_base_shader = true, - disable_shadow = true, - on_apply = function(card) - -- Randomize offset to -1..1 - card.edition.cry_glass_seed = pseudorandom("e_cry_glass") * 2 - 1 - end, - sound = { - sound = "cry_e_fragile", - per = 1, - vol = 0.3, - }, - weight = 7, - extra_cost = 2, - config = { x_mult = 3, shatter_chance = 8 }, - loc_vars = function(self, info_queue) - return { - vars = { - (G.GAME.probabilities.normal or 1) * (self.config.shatter_chance - 1), - self.config.shatter_chance, - self.config.x_mult, - }, - } - end, calculate = function(self, card, context) if - context.joker_triggered - or ( - context.from_playing_card - and context.cardarea + ( + context.edition -- for when on jonklers + and context.cardarea == G.jokers -- checks if should trigger + and card.config.trigger -- fixes double trigger + ) or ( + context.main_scoring -- for when on playing cards and context.cardarea == G.play - and not context.repetition ) then - if - pseudorandom("cry_fragile") - > G.GAME.probabilities.normal * (self.config.shatter_chance - 1) / self.config.shatter_chance - and not card.ability.eternal - then - card.will_shatter = true - G.E_MANAGER:add_event(Event({ - trigger = "after", - func = function() - card:shatter() - return true - end, - })) - end + return { mult = self.config.mult } -- updated value + end + if context.joker_main then + card.config.trigger = true -- context.edition triggers twice, this makes it only trigger once (only for jonklers) + end + + if context.after then + card.config.trigger = nil end end, -} - -local gold_shader = { - object_type = "Shader", - key = "gold", - path = "gold.fs", - send_vars = function(sprite, card) - return { - lines_offset = card and card.edition and card.edition.cry_gold_seed or 0, - } - end, -} -local gold_edition = { - object_type = "Edition", - key = "gold", - order = 5, - shader = "gold", - weight = 7, - extra_cost = 2, - in_shop = true, - config = { dollars = 2 }, - loc_vars = function(self, info_queue) - return { vars = { self.config.dollars } } - end, - sound = { - sound = "cry_e_golden", - per = 1, - vol = 0.3, - }, - on_apply = function(card) - -- Randomize offset to -1..1 - card.edition.cry_gold_seed = pseudorandom("e_cry_gold") * 2 - 1 - end, - calculate = function(self, card, context) - if - context.joker_triggered - or context.from_consumable - or ( - context.from_playing_card - and context.cardarea - and context.cardarea == G.play - and not context.repetition - ) - then - ease_dollars(self.config.dollars) - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("$") .. self.config.dollars, colour = G.C.MONEY } - ) - end - end, -} - -local double_sided = { - object_type = "Edition", - key = "double_sided", - shader = false, - order = 32, - weight = 10, - extra_cost = 0, - in_shop = true, - sound = { - sound = "cry_e_double_sided", - per = 1, - vol = 0.3, - }, - cry_credits = { - jolly = { - "Jolly Open Winner", - "Axolotolus", - }, - }, - get_weight = function(self) - return G.GAME.edition_rate * self.weight * (G.GAME.used_vouchers.v_cry_double_vision and 4 or 1) - end, -} -local echo = { - object_type = "Enhancement", - key = "echo", - atlas = "cry_misc", - pos = { x = 2, y = 0 }, - config = { retriggers = 2, extra = 2 }, - loc_vars = function(self, info_queue, card) - return { vars = { self.config.retriggers, card and cry_prob(card.ability.cry_prob or 1, card.ability.extra, card.ability.cry_rigged) or 1, self.config.extra } } -- note that the check for (card.ability.cry_prob or 1) is probably unnecessary due to cards being initialised with ability.cry_prob - end, -} -local eclipse = { - object_type = "Consumable", - set = "Tarot", - name = "cry-Eclipse", - key = "eclipse", - order = 1, - pos = { x = 4, y = 0 }, - config = { mod_conv = "m_cry_echo", max_highlighted = 1 }, - atlas = "atlasnotjokers", - loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = G.P_CENTERS.m_cry_echo - - return { vars = { card and card.ability.max_highlighted or self.config.max_highlighted } } - end, -} -local light = { - object_type = "Enhancement", - key = "light", - atlas = "cry_misc", - pos = { x = 0, y = 3 }, - config = {extra = {a_x_mult = 0.2, current_x_mult = 1, req = 5, current = 5}}, - loc_vars = function(self, info_queue, card) - return { vars = { card and card.ability.extra.a_x_mult or self.config.extra.a_x_mult, card and card.ability.extra.current_x_mult or self.config.extra.current_x_mult, card and card.ability.extra.current or self.config.extra.current, card and card.ability.extra.req or self.config.extra.req } } - end, - calculate = function(self,card,context,effect) - if context.cardarea == G.play and not context.repetition then - if #context.scoring_hand > 1 then - card.ability.extra.current = card.ability.extra.current - (#context.scoring_hand - 1) - while card.ability.extra.current <= 0 do - card.ability.extra.req = card.ability.extra.req +5 - card.ability.extra.current = card.ability.extra.current + card.ability.extra.req - card.ability.extra.current_x_mult = card.ability.extra.current_x_mult + card.ability.extra.a_x_mult - end - end - if card.ability.extra.current_x_mult > 1 then - effect.x_mult = card.ability.extra.current_x_mult - end - end - end, -} -local seraph = { - object_type = "Consumable", - set = "Tarot", - name = "cry-Seraph", - key = "seraph", - order = 2, - pos = { x = 1, y = 2 }, - config = { mod_conv = "m_cry_light", max_highlighted = 2 }, - atlas = "placeholders", - loc_vars = function(self, info_queue) - info_queue[#info_queue + 1] = G.P_CENTERS.m_cry_light - - return { vars = { self.config.max_highlighted } } - end, -} -local blessing = { - object_type = "Consumable", - set = "Tarot", - name = "cry-theblessing", - key = "theblessing", - order = 6, - pos = { x = 2, y = 3 }, - cost = 3, - atlas = "atlasnotjokers", - can_use = function(self, card) - return #G.consumeables.cards < G.consumeables.config.card_limit or card.area == G.consumeables - end, - can_bulk_use = true, - use = function(self, card, area, copier) - local used_consumable = copier or card - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - if G.consumeables.config.card_limit > #G.consumeables.cards then - play_sound("timpani") - local forced_key = get_random_consumable("blessing", nil, "c_cry_blessing") - local _card = create_card("Consumeables", G.consumables, nil, nil, nil, nil, forced_key.config.center_key, "blessing") - _card:add_to_deck() - G.consumeables:emplace(_card) - used_consumable:juice_up(0.3, 0.5) - end - return true - end, - })) - delay(0.6) - end, -} -local azure_seal = { - object_type = "Seal", - name = "cry-Azure-Seal", - key = "azure", - badge_colour = HEX("1d4fd7"), - config = { planets_amount = 3 }, - loc_vars = function(self, info_queue) - return { vars = { self.config.planets_amount } } - end, - atlas = "cry_misc", - pos = { x = 0, y = 2 }, - calculate = function(self, card, context) - if context.destroying_card then - G.E_MANAGER:add_event(Event({ - trigger = "before", - delay = 0.0, - func = function() - local card_type = "Planet" - local _planet = nil - if G.GAME.last_hand_played then - for k, v in pairs(G.P_CENTER_POOLS.Planet) do - if v.config.hand_type == G.GAME.last_hand_played then - _planet = v.key - break - end - end - end - - for i = 1, self.config.planets_amount do - local card = create_card(card_type, G.consumeables, nil, nil, nil, nil, _planet, "cry_azure") - - card:set_edition({ negative = true }, true) - card:add_to_deck() - G.consumeables:emplace(card) - end - return true - end, - })) - - return true - end - end, -} - -local typhoon = { - object_type = "Consumable", - set = "Spectral", - name = "cry-Typhoon", - key = "typhoon", - order = 8, - config = { - -- This will add a tooltip. - mod_conv = "cry_azure_seal", - -- Tooltip args - seal = { planets_amount = 3 }, - max_highlighted = 1, - }, - loc_vars = function(self, info_queue, center) - -- Handle creating a tooltip with set args. - info_queue[#info_queue + 1] = - { set = "Other", key = "cry_azure_seal", specific_vars = { self.config.seal.planets_amount } } - return { vars = { center.ability.max_highlighted } } - end, - cost = 4, - atlas = "atlasnotjokers", - pos = { x = 0, y = 4 }, - use = function(self, card, area, copier) --Good enough - local used_consumable = copier or card - for i = 1, #G.hand.highlighted do - local highlighted = G.hand.highlighted[i] - G.E_MANAGER:add_event(Event({ - func = function() - play_sound("tarot1") - highlighted:juice_up(0.3, 0.5) - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - if highlighted then - highlighted:set_seal("cry_azure") - end - return true - end, - })) - delay(0.5) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - G.hand:unhighlight_all() - return true - end, - })) - end - end, -} - -local meld = { - object_type = "Consumable", - set = "Tarot", - name = "cry-Meld", - key = "meld", - order = 3, - pos = { x = 4, y = 4 }, - config = { extra = 4 }, - cost = 4, - atlas = "atlasnotjokers", - can_use = function(self, card) - if #G.jokers.highlighted + #G.hand.highlighted - (G.hand.highlighted[1] and G.hand.highlighted[1] == self and 1 or 0) == 1 then - if - #G.jokers.highlighted == 1 and - ( - Card.no(G.jokers.highlighted[1], "dbl") - or G.jokers.highlighted[1].edition - ) - then return false end - if - #G.hand.highlighted == 1 - and G.hand.highlighted[1].edition - then return false end - return true - end - end, - cry_credits = { - jolly = { - "Jolly Open Winner", - "Axolotolus", - }, - }, - loc_vars = function(self, info_queue) - info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided - end, - use = function(self, card, area, copier) - if #G.jokers.highlighted == 1 then - G.jokers.highlighted[1]:remove_from_deck(true) - G.jokers.highlighted[1]:set_edition({ cry_double_sided = true }) - G.jokers.highlighted[1]:add_to_deck(true) - G.jokers:remove_from_highlighted(G.jokers.highlighted[1]) - else - G.hand.highlighted[1]:set_edition({ cry_double_sided = true }) - G.hand:remove_from_highlighted(G.hand.highlighted[1]) - end - end, - in_pool = function() - return G.GAME.used_vouchers.v_cry_double_slit - end -} - -local bwark = { - object_type = "PokerHand", - key = 'Bulwark', - visible = false, - chips = 100, - mult = 10, - l_chips = 50, - l_mult = 1, - example = { - { 'S_A', true, 'm_stone' }, - { 'S_A', true, 'm_stone' }, - { 'S_A', true, 'm_stone' }, - { 'S_A', true, 'm_stone' }, - { 'S_A', true, 'm_stone' }, - }, - evaluate = function(parts, hand) - local stones = {} - for i, card in ipairs(hand) do - if card.config.center_key == 'm_stone' or (card.config.center.no_rank and card.config.center.no_suit) then stones[#stones+1] = card end - end - return #stones >= 5 and {stones} or {} - end, -} -local cluster = { - object_type = "PokerHand", - key = 'Clusterfuck', - visible = false, - chips = 200, - mult = 19, - l_chips = 40, - l_mult = 4, - example = { - { 'S_A', true }, - { 'C_K', true }, - { 'H_J', true }, - { 'S_T', true }, - { 'D_9', true }, - { 'D_8', true }, - { 'S_6', true }, - { 'C_5', true }, - }, - evaluate = function(parts, hand) - local other_hands = next(parts._flush) or next(parts._straight) or next(parts._all_pairs) - if #hand > 7 then - if not other_hands then return {hand} end - end - end, -} -local upair = { - object_type = "PokerHand", - key = 'UltPair', - visible = false, - chips = 220, - mult = 22, - l_chips = 40, - l_mult = 4, - example = { - { 'S_A', true }, - { 'S_A', true }, - { 'S_T', true }, - { 'S_T', true }, - { 'H_K', true }, - { 'H_K', true }, - { 'H_7', true }, - { 'H_7', true }, - }, - evaluate = function(parts, hand) - local scoring_pairs = {} - local unique_suits = 0 - for suit, _ in pairs(SMODS.Suits) do - local scoring_suit_pairs = {} - for i = 1, #parts._2 do - if parts._2[i][1]:is_suit(suit) and parts._2[i][2]:is_suit(suit) then - scoring_suit_pairs[#scoring_suit_pairs+1] = i - end - end - if #scoring_suit_pairs >= 2 then - unique_suits = unique_suits + 1 - for i = 1, #scoring_suit_pairs do - scoring_pairs[scoring_suit_pairs[i]] = (scoring_pairs[scoring_suit_pairs[i]] or 0) + 1 - end - end - end - if unique_suits < 2 then return end - local scored_cards = {} - local sc_max = 0 - local sc_unique = 0 - for i = 1, #parts._2 do - if scoring_pairs[i] then - if scoring_pairs[i] > 1 then - sc_unique = sc_unique + 1 - end - sc_max = math.max(sc_max, scoring_pairs[i]) - scored_cards[#scored_cards+1] = parts._2[i][1] - scored_cards[#scored_cards+1] = parts._2[i][2] - end - end - if sc_max == #scored_cards/2 - 1 and sc_unique == 1 then - return - end - if #scored_cards >= 8 then - return {scored_cards} - end -end, -} -local fulldeck = { - object_type = "PokerHand", - key = 'WholeDeck', - visible = false, - chips = 525252525252525252525252525252, - mult = 52525252525252525252525252525, - l_chips = 52525252525252525252525252525, - l_mult = 5252525252525252525252525252, - example = { - { 'S_A', true }, - { 'H_A', true }, - { 'C_A', true }, - { 'D_A', true }, - { 'S_K', true }, - { 'H_K', true }, - { 'C_K', true }, - { 'D_K', true }, - { 'S_Q', true }, - { 'H_Q', true }, - { 'C_Q', true }, - { 'D_Q', true }, - { 'S_J', true }, - { 'H_J', true }, - { 'C_J', true }, - { 'D_J', true }, - { 'S_T', true }, - { 'H_T', true }, - { 'C_T', true }, - { 'D_T', true }, - { 'S_9', true }, - { 'H_9', true }, - { 'C_9', true }, - { 'D_9', true }, - { 'S_8', true }, - { 'H_8', true }, - { 'C_8', true }, - { 'D_8', true }, - { 'S_7', true }, - { 'H_7', true }, - { 'C_7', true }, - { 'D_7', true }, - { 'S_6', true }, - { 'H_6', true }, - { 'C_6', true }, - { 'D_6', true }, - { 'S_5', true }, - { 'H_5', true }, - { 'C_5', true }, - { 'D_5', true }, - { 'S_4', true }, - { 'H_4', true }, - { 'C_4', true }, - { 'D_4', true }, - { 'S_3', true }, - { 'H_3', true }, - { 'C_3', true }, - { 'D_3', true }, - { 'S_2', true }, - { 'H_2', true }, - { 'C_2', true }, - { 'D_2', true }, - }, - evaluate = function(parts, hand) - if #hand >= 52 then - local deck_booleans = {} - local scored_cards = {} - for i = 1, 52 do - table.insert(deck_booleans, false) -- i could write this out but nobody wants to see that - end - local wilds = {} - for i, card in ipairs(hand) do - if (card.config.center_key ~= 'm_wild' and not card.config.center.any_suit) - and (card.config.center_key ~= 'm_stone' and not card.config.center.no_rank) then -- i don't know if these are different... this could be completely redundant but redundant is better than broken - local rank = card:get_id() - local suit = card.base.suit - local suit_int = 0 - suit_table = {"Spades", "Hearts", "Clubs", "Diamonds"} - for i = 1, 4 do - if suit == suit_table[i] then suit_int = i end - end - if suit_int > 0 then -- check for custom rank here to prevent breakage? - deck_booleans[suit_int+((rank-2)*4)] = true - table.insert(scored_cards, card) - end - elseif (card.config.center_key == 'm_wild' or card.config.center.any_suit) then - table.insert(wilds, card) - end - end - for i, card in ipairs(wilds) do -- this 100% breaks with custom ranks - local rank = card:get_id() - for i = 1, 4 do - if not deck_booleans[i+((rank-2)*4)] then - deck_booleans[i+((rank-2)*4)] = true - break - end - end - table.insert(scored_cards, card) - end - local entire_fucking_deck = true - for i = 1, #deck_booleans do - if deck_booleans[i] == false then entire_fucking_deck = false break end - end - if entire_fucking_deck == true then - return {scored_cards} - end - end - return - end, -} -local abelt = { - object_type = "Consumable", - set = 'Planet', - key = 'asteroidbelt', - config = { hand_type = 'cry_Bulwark', softlock = true }, - pos = {x = 1, y = 5 }, - order = 2, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = function(self, card, badges) - badges[1] = create_badge(localize("k_planet_disc"), get_type_colour(self or card.config, card), nil, 1.2) - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["cry_Bulwark"].level or 1 - local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] - if levelone == 1 then - planetcolourone = G.C.UI.TEXT_DARK - end - return { - vars = { - localize("cry_hand_bulwark"), - G.GAME.hands["cry_Bulwark"].level, - G.GAME.hands["cry_Bulwark"].l_mult, - G.GAME.hands["cry_Bulwark"].l_chips, - colours = { planetcolourone }, - }, - } - end, - generate_ui = 0, -} -local void = { - object_type = "Consumable", - set = 'Planet', - key = 'void', - order = 3, - config = { hand_type = 'cry_Clusterfuck', softlock = true }, - pos = {x = 0, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = function(self, card, badges) - badges[1] = create_badge("", get_type_colour(self or card.config, card), nil, 1.2) - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["cry_Clusterfuck"].level or 1 - local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] - if levelone == 1 then - planetcolourone = G.C.UI.TEXT_DARK - end - return { - vars = { - localize("cry_Clusterfuck"), - G.GAME.hands["cry_Clusterfuck"].level, - G.GAME.hands["cry_Clusterfuck"].l_mult, - G.GAME.hands["cry_Clusterfuck"].l_chips, - colours = { planetcolourone }, - }, - } - end, - generate_ui = 0, -} -local marsmoons = { - object_type = "Consumable", - set = 'Planet', - key = 'marsmoons', - order = 4, - config = { hand_type = 'cry_UltPair', softlock = true }, - pos = {x = 2, y = 5 }, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = function(self, card, badges) - badges[1] = create_badge(localize("k_planet_satellite"), get_type_colour(self or card.config, card), nil, 1.2) - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["cry_UltPair"].level or 1 - local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] - if levelone == 1 then - planetcolourone = G.C.UI.TEXT_DARK - end - return { - vars = { - localize("cry_UltPair"), - G.GAME.hands["cry_UltPair"].level, - G.GAME.hands["cry_UltPair"].l_mult, - G.GAME.hands["cry_UltPair"].l_chips, - colours = { planetcolourone }, - }, - } - end, - generate_ui = 0, -} -local universe = { - object_type = "Consumable", - set = 'Planet', - key = 'universe', - config = { hand_type = 'cry_WholeDeck', softlock = true }, - pos = {x = 4, y = 5 }, - order = 5, - atlas = 'atlasnotjokers', - aurinko = true, - set_card_type_badge = function(self, card, badges) - badges[1] = create_badge(localize("k_planet_universe"), get_type_colour(self or card.config, card), nil, 1.2) - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["cry_WholeDeck"].level or 1 - local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] - if levelone == 1 then - planetcolourone = G.C.UI.TEXT_DARK - end - return { - vars = { - localize("cry_UltPair"), - G.GAME.hands["cry_WholeDeck"].level, - G.GAME.hands["cry_WholeDeck"].l_mult, - G.GAME.hands["cry_WholeDeck"].l_chips, - colours = { planetcolourone }, - }, - } - end, - generate_ui = 0, -} -local absolute = { - object_type = "Sticker", - badge_colour = HEX('c75985'), - prefix_config = { key = false }, - key = "cry_absolute", - atlas = "sticker", - pos = { x = 1, y = 5 }, - should_apply = false, - no_sticker_sheet = true, - draw = function(self, card, layer) - G.shared_stickers["cry_absolute"].role.draw_major = card - G.shared_stickers["cry_absolute"]:draw_shader('dissolve', nil, nil, nil, card.children.center) - G.shared_stickers["cry_absolute"]:draw_shader('polychrome', nil, card.ARGS.send_to_shader, nil, card.children.center) - G.shared_stickers["cry_absolute"]:draw_shader('voucher', nil, card.ARGS.send_to_shader, nil, card.children.center) - end, -} -local miscitems = { - memepack_atlas, - meme_object_type, - meme1, - meme2, - meme3, - mosaic_shader, - oversat_shader, - glitched_shader, - astral_shader, - blurred_shader, - glass_shader, - gold_shader, - noisy_shader, - glass_edition, - gold_edition, - glitched, - noisy, - mosaic, - oversat, - blurred, - astral, - echo, - eclipse, - blessing, - typhoon, - azure_seal, - double_sided, - meld, - bwark, - cluster, - upair, - fulldeck, - abelt, - void, - marsmoons, - universe, - absolute, - light, - seraph, -} -if Cryptid.enabled["M Jokers"] then - miscitems[#miscitems + 1] = jollyeditionshader - miscitems[#miscitems + 1] = jollyedition -end -return { - name = "Misc.", - init = function() - --echo card - cs = Card.calculate_seal - function Card:calculate_seal(context) - local ret = cs(self, context) - if context.repetition then - local total_repetitions = ret and ret.repetitions or 0 - - if self.config.center == G.P_CENTERS.m_cry_echo then - if pseudorandom("echo") < cry_prob(self.ability.cry_prob, self.ability.extra or 2, self.ability.cry_rigged) / (self.ability.extra or 2) then --hacky crash fix - total_repetitions = total_repetitions + self.ability.retriggers - end - end - - if total_repetitions > 0 then - return { - message = localize("k_again_ex"), - repetitions = total_repetitions, - card = self, - } - end - end - return ret - end + init = function(self) --Change name of cards with Jolly edition local gcui = generate_card_ui function generate_card_ui( @@ -1689,7 +1020,230 @@ return { end return full_UI_table end + end, +} +local glass_shader = { + object_type = "Shader", + key = "glass", + path = "glass.fs", + send_vars = function(sprite, card) + return { + lines_offset = card and card.edition and card.edition.cry_glass_seed or 0, + } + end, +} +local glass_edition = { + object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, + key = "glass", + order = 4, + shader = "glass", + in_shop = true, + disable_base_shader = true, + disable_shadow = true, + on_apply = function(card) + -- Randomize offset to -1..1 + card.edition.cry_glass_seed = pseudorandom("e_cry_glass") * 2 - 1 + end, + sound = { + sound = "cry_e_fragile", + per = 1, + vol = 0.3, + }, + weight = 7, + extra_cost = 2, + config = { x_mult = 3, shatter_chance = 8, trigger = nil }, + loc_vars = function(self, info_queue) + return { + vars = { + (G.GAME.probabilities.normal or 1) * (self.config.shatter_chance - 1), + self.config.shatter_chance, + self.config.x_mult, + }, + } + end, + calculate = function(self, card, context) + if context.edition and context.cardarea == G.jokers and card.config.trigger then + return { x_mult = self.config.x_mult } + end + + if + context.cardarea == G.jokers + and context.post_trigger + and context.other_card == card --animation-wise this looks weird sometimes + then + if + not card.ability.eternal + and ( + pseudorandom(pseudoseed("cry_fragile")) + > ((self.config.shatter_chance - 1) / self.config.shatter_chance) + ) + then + -- this event call might need to be pushed later to make more sense + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("glass" .. math.random(1, 6), math.random() * 0.2 + 0.9, 0.5) + card.states.drag.is = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card:start_dissolve({ HEX("57ecab") }, nil, 1.6) + card = nil + return true + end, + })) + return true + end, + })) + end + end + if context.main_scoring and context.cardarea == G.play then + if + not card.ability.eternal + and ( + pseudorandom(pseudoseed("cry_fragile")) + > ((self.config.shatter_chance - 1) / self.config.shatter_chance) + ) + then + card.config.will_shatter = true + end + return { x_mult = self.config.x_mult } + end + + if context.joker_main then + card.config.trigger = true -- context.edition triggers twice, this makes it only trigger once (only for jonklers) + end + + if context.after then + card.config.trigger = nil + end + + if context.destroying_card and card.config.will_shatter then + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("glass" .. math.random(1, 6), math.random() * 0.2 + 0.9, 0.5) + card.states.drag.is = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card:start_dissolve({ HEX("57ecab") }, nil, 1.6) + card = nil + return true + end, + })) + return true + end, + })) + return { remove = true } + end + end, +} + +local gold_shader = { + object_type = "Shader", + key = "gold", + path = "gold.fs", + send_vars = function(sprite, card) + return { + lines_offset = card and card.edition and card.edition.cry_gold_seed or 0, + } + end, +} +local gold_edition = { + object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, + key = "gold", + order = 5, + shader = "gold", + weight = 7, + extra_cost = 4, + in_shop = true, + config = { dollars = 2, active = true }, + loc_vars = function(self, info_queue) + return { vars = { self.config.dollars } } + end, + sound = { + sound = "cry_e_golden", + per = 1, + vol = 0.3, + }, + on_apply = function(card) + -- Randomize offset to -1..1 + card.edition.cry_gold_seed = pseudorandom("e_cry_gold") * 2 - 1 + end, + calculate = function(self, card, context) + if + ( + context.post_trigger -- for when on jonklers + and context.other_card == card + ) + or ( + context.main_scoring -- for when on playing cards + and context.cardarea == G.play + ) + or ( + context.using_consumeable -- for when using a consumable + and context.consumeable == card + ) + then + return { p_dollars = self.config.dollars } -- updated value + end + end, +} + +local double_sided = { + object_type = "Edition", + dependencies = { + items = { + "set_cry_misc", + }, + }, + gameset_config = { + modest = { disabled = true }, + mainline = { disabled = true }, + madness = { disabled = true }, + experimental = {}, + }, + extra_gamesets = { "experimental" }, + key = "double_sided", + shader = false, + order = 32, + weight = 10, + extra_cost = 0, + in_shop = true, + no_edeck = true, --major lag issues even if draw_shader crashes are patched + sound = { + sound = "cry_e_double_sided", + per = 1, + vol = 0.3, + }, + cry_credits = { + jolly = { + "Jolly Open Winner", + "Axolotolus", + }, + }, + get_weight = function(self) + return G.GAME.edition_rate * self.weight * (G.GAME.used_vouchers.v_cry_double_vision and 4 or 1) + end, + init = function(self) -- Double-Sided - create FLIP button -- kinda based on Fusion Jokers local card_focus_ui = G.UIDEF.card_focus_ui @@ -1868,7 +1422,7 @@ return { end self:dbl_side_flip() end - if self.ability.cry_absolute then -- feedback loop... may be problematic + if self.ability.cry_absolute then -- feedback loop... may be problematic self.cry_absolute = true end if self.cry_absolute then @@ -1892,11 +1446,11 @@ return { end if not self.dbl_side then self.dbl_side = cry_deep_copy(self) - self.dbl_side:set_ability(G.P_CENTERS.c_base) + self.dbl_side:set_ability(G.P_CENTERS.j_joker) -- self.dbl_side:set_base(G.P_CARDS.empty) -- RIGHT HERE THIS RIGHT HERE THATS YOUR DAM CULPRIT if self.area == G.hand then - self.dbl_side.config.center = cry_deep_copy(self.dbl_side.config.center) - self.dbl_side.config.center.no_rank = true + self.dbl_side = cry_deep_copy(self) + self.dbl_side:set_ability(G.P_CENTERS.c_base) end self.dbl_side.added_to_deck = false return true @@ -1911,8 +1465,8 @@ return { if next(find_joker("cry-Flip Side")) and self.dbl_side then active_side = self.dbl_side end - if not init_dbl_side then - active_side:remove_from_deck(true) + if not init_dbl_side then + active_side:remove_from_deck(true) end copy_dbl_card(self, self.dbl_side, false) copy_dbl_card(tmp_side, self, false) @@ -1926,17 +1480,21 @@ return { end end self:set_sprites(nil, self.config.card) - if self.children and self.children.front and self.config.card_key then self.children.front:set_sprite_pos(G.P_CARDS[self.config.card_key].pos) end + if self.children and self.children.front and self.config.card_key then + self.children.front:set_sprite_pos(G.P_CARDS[self.config.card_key].pos) + end end if (not self.base or not self.base.name) and self.children.front then self.children.front:remove() self.children.front = nil end - self:set_edition({cry_double_sided = true},true,true) + self:set_edition({ cry_double_sided = true }, true, true) end local cgcb = Card.get_chip_bonus function Card:get_chip_bonus() - if self.ability.set == "Joker" then return 0 end + if self.ability.set == "Joker" then + return 0 + end return cgcb(self) end local csave = Card.save @@ -1981,21 +1539,21 @@ return { local catd = Card.add_to_deck local crfd = Card.remove_from_deck function Card:add_to_deck(debuff) - if debuff and self.ability.name == 'Chaos the Clown' then + if debuff and self.ability.name == "Chaos the Clown" then return end return catd(self, debuff) end function Card:remove_from_deck(debuff) - if debuff and self.ability.name == 'Chaos the Clown' then + if debuff and self.ability.name == "Chaos the Clown" then return end return crfd(self, debuff) end local cae = CardArea.emplace - function CardArea:emplace(card,m1,m2) + function CardArea:emplace(card, m1, m2) if not (card.will_shatter or card.destroyed or card.shattered) then - cae(self,card,m1,m2) + cae(self, card, m1, m2) else if card.area then card.area:remove_card(card) @@ -2008,16 +1566,448 @@ return { function set_joker_win() sjw() for k, v in pairs(G.jokers.cards) do - if v.dbl_side and v.dbl_side.config.center_key and v.dbl_side.ability.set == 'Joker' then - G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key] = G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key] or {count = 1, order = v.dbl_side.config.center.order, wins = {}, losses = {}, wins_by_key = {}, losses_by_key = {}} - if G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key] then - G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins = G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins or {} - G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins[G.GAME.stake] = (G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins[G.GAME.stake] or 0) + 1 + if v.dbl_side and v.dbl_side.config.center_key and v.dbl_side.ability.set == "Joker" then + G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key] = G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key] + or { + count = 1, + order = v.dbl_side.config.center.order, + wins = {}, + losses = {}, + wins_by_key = {}, + losses_by_key = {}, + } + if G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key] then + G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins = G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins + or {} + G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins[G.GAME.stake] = ( + G.PROFILES[G.SETTINGS.profile].joker_usage[v.dbl_side.config.center_key].wins[G.GAME.stake] + or 0 + ) + 1 + end end - end end G:save_settings() end end, +} +local meld = { + object_type = "Consumable", + dependencies = { + items = { + "set_cry_misc", + "e_cry_double_sided", + }, + }, + set = "Tarot", + name = "cry-Meld", + key = "meld", + order = 3, + pos = { x = 4, y = 4 }, + config = { extra = 4 }, + cost = 4, + atlas = "atlasnotjokers", + can_use = function(self, card) + if + #G.jokers.highlighted + + #G.hand.highlighted + - (G.hand.highlighted[1] and G.hand.highlighted[1] == self and 1 or 0) + == 1 + then + if + #G.jokers.highlighted == 1 + and (Card.no(G.jokers.highlighted[1], "dbl") or G.jokers.highlighted[1].edition) + then + return false + end + if #G.hand.highlighted == 1 and G.hand.highlighted[1].edition then + return false + end + return true + end + end, + cry_credits = { + jolly = { + "Jolly Open Winner", + "Axolotolus", + }, + }, + loc_vars = function(self, info_queue) + info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided + end, + use = function(self, card, area, copier) + if #G.jokers.highlighted == 1 then + G.jokers.highlighted[1]:remove_from_deck(true) + G.jokers.highlighted[1]:set_edition({ cry_double_sided = true }) + G.jokers.highlighted[1]:add_to_deck(true) + G.jokers:remove_from_highlighted(G.jokers.highlighted[1]) + else + G.hand.highlighted[1]:set_edition({ cry_double_sided = true }) + G.hand:remove_from_highlighted(G.hand.highlighted[1]) + end + end, + in_pool = function() + return G.GAME.used_vouchers.v_cry_double_slit + end, +} + +-- Enhancements/Tarots +local echo = { + object_type = "Enhancement", + dependencies = { + items = { + "set_cry_misc", + }, + }, + key = "echo", + atlas = "cry_misc", + pos = { x = 2, y = 0 }, + config = { retriggers = 2, extra = 2 }, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and card.ability.retriggers or self.config.retriggers, + card and cry_prob(card.ability.cry_prob or 1, card.ability.extra, card.ability.cry_rigged) or 1, + card and card.ability.extra or self.config.extra, + }, + } -- note that the check for (card.ability.cry_prob or 1) is probably unnecessary due to cards being initialised with ability.cry_prob + end, + calculate = function(self, card, context) + if + context.repetition + and pseudorandom("echo") + < cry_prob(card.ability.cry_prob or 1, card.ability.extra or 2, card.ability.cry_rigged) / (card.ability.extra or 2) + then + return { + message = localize("k_again_ex"), + repetitions = card.ability.retriggers, + card = card, + } + end + end, +} +local eclipse = { + object_type = "Consumable", + dependencies = { + items = { + "set_cry_misc", + "m_cry_echo", + }, + }, + set = "Tarot", + name = "cry-Eclipse", + key = "eclipse", + order = 1, + pos = { x = 4, y = 0 }, + config = { mod_conv = "m_cry_echo", max_highlighted = 1 }, + atlas = "atlasnotjokers", + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = G.P_CENTERS.m_cry_echo + + return { vars = { card and card.ability.max_highlighted or self.config.max_highlighted } } + end, +} +local light = { + object_type = "Enhancement", + dependencies = { + items = { + "set_cry_misc", + }, + }, + key = "light", + atlas = "cry_misc", + cry_noshadow = true, + pos = { x = 0, y = 3 }, + config = { extra = { a_x_mult = 0.2, current_x_mult = 1, req = 5, current = 5 } }, + loc_vars = function(self, info_queue, card) + return { + vars = { + card and card.ability.extra.a_x_mult or self.config.extra.a_x_mult, + card and card.ability.extra.current_x_mult or self.config.extra.current_x_mult, + card and card.ability.extra.current or self.config.extra.current, + card and card.ability.extra.req or self.config.extra.req, + }, + } + end, + calculate = function(self, card, context) + if context.cardarea == G.play and context.main_scoring then + if #context.scoring_hand > 1 then + card.ability.extra.current = card.ability.extra.current - (#context.scoring_hand - 1) + while card.ability.extra.current <= 0 do + card.ability.extra.req = card.ability.extra.req + 5 + card.ability.extra.current = card.ability.extra.current + card.ability.extra.req + card.ability.extra.current_x_mult = card.ability.extra.current_x_mult + card.ability.extra.a_x_mult + end + end + if card.ability.extra.current_x_mult > 1 then + return { + x_mult = card.ability.extra.current_x_mult, + } + end + end + end, +} +local seraph = { + object_type = "Consumable", + dependencies = { + items = { + "set_cry_misc", + "m_cry_light", + }, + }, + set = "Tarot", + name = "cry-Seraph", + key = "seraph", + order = 2, + pos = { x = 5, y = 3 }, + config = { mod_conv = "m_cry_light", max_highlighted = 2 }, + atlas = "atlasnotjokers", + loc_vars = function(self, info_queue, card) + info_queue[#info_queue + 1] = G.P_CENTERS.m_cry_light + + return { vars = { card and card.ability.max_highlighted or self.config.max_highlighted } } + end, +} +local blessing = { + object_type = "Consumable", + dependencies = { + items = { + "set_cry_misc", + }, + }, + set = "Tarot", + name = "cry-theblessing", + key = "theblessing", + order = 6, + pos = { x = 2, y = 3 }, + cost = 3, + atlas = "atlasnotjokers", + can_use = function(self, card) + return #G.consumeables.cards < G.consumeables.config.card_limit or card.area == G.consumeables + end, + can_bulk_use = true, + use = function(self, card, area, copier) + local used_consumable = copier or card + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + if G.consumeables.config.card_limit > #G.consumeables.cards then + play_sound("timpani") + local forced_key = get_random_consumable("blessing", nil, "c_cry_blessing") + local _card = create_card( + "Consumeables", + G.consumables, + nil, + nil, + nil, + nil, + forced_key.config.center_key, + "blessing" + ) + _card:add_to_deck() + G.consumeables:emplace(_card) + used_consumable:juice_up(0.3, 0.5) + end + return true + end, + })) + delay(0.6) + end, +} + +-- Seals +local azure_seal = { + object_type = "Seal", + dependencies = { + items = { + "set_cry_misc", + }, + }, + name = "cry-Azure-Seal", + key = "azure", + badge_colour = HEX("1d4fd7"), + config = { planets_amount = 3 }, + loc_vars = function(self, info_queue) + return { vars = { self.config.planets_amount } } + end, + atlas = "cry_misc", + pos = { x = 0, y = 2 }, + -- This is still quite jank + calculate = function(self, card, context) + if context.destroying_card and not card.will_shatter then + card.will_shatter = true + G.E_MANAGER:add_event(Event({ + trigger = "before", + delay = 0.0, + func = function() + local card_type = "Planet" + local _planet = nil + if G.GAME.last_hand_played then + for k, v in pairs(G.P_CENTER_POOLS.Planet) do + if v.config.hand_type == G.GAME.last_hand_played then + _planet = v.key + break + end + end + end + + for i = 1, self.config.planets_amount do + local card = create_card(card_type, G.consumeables, nil, nil, nil, nil, _planet, "cry_azure") + + card:set_edition({ negative = true }, true) + card:add_to_deck() + G.consumeables:emplace(card) + end + return true + end, + })) + + return { remove = true } + end + end, +} +local typhoon = { + object_type = "Consumable", + dependencies = { + items = { + "set_cry_misc", + "cry_azure", + }, + }, + set = "Spectral", + name = "cry-Typhoon", + key = "typhoon", + order = 8, + config = { + -- This will add a tooltip. + mod_conv = "cry_azure_seal", + -- Tooltip args + seal = { planets_amount = 3 }, + max_highlighted = 1, + }, + loc_vars = function(self, info_queue, center) + -- Handle creating a tooltip with set args. + info_queue[#info_queue + 1] = + { set = "Other", key = "cry_azure_seal", specific_vars = { self.config.seal.planets_amount } } + return { vars = { center.ability.max_highlighted } } + end, + cost = 4, + atlas = "atlasnotjokers", + pos = { x = 0, y = 4 }, + use = function(self, card, area, copier) --Good enough + local used_consumable = copier or card + for i = 1, #G.hand.highlighted do + local highlighted = G.hand.highlighted[i] + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + highlighted:juice_up(0.3, 0.5) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + if highlighted then + highlighted:set_seal("cry_azure") + end + return true + end, + })) + delay(0.5) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + G.hand:unhighlight_all() + return true + end, + })) + end + end, +} + +local absolute = { + object_type = "Sticker", + dependencies = { + items = { + "set_cry_misc", + }, + }, + badge_colour = HEX("c75985"), + prefix_config = { key = false }, + key = "cry_absolute", + atlas = "sticker", + pos = { x = 1, y = 5 }, + should_apply = false, + no_sticker_sheet = true, + draw = function(self, card, layer) + G.shared_stickers["cry_absolute"].role.draw_major = card + G.shared_stickers["cry_absolute"]:draw_shader("dissolve", nil, nil, nil, card.children.center) + G.shared_stickers["cry_absolute"]:draw_shader( + "polychrome", + nil, + card.ARGS.send_to_shader, + nil, + card.children.center + ) + G.shared_stickers["cry_absolute"]:draw_shader( + "voucher", + nil, + card.ARGS.send_to_shader, + nil, + card.children.center + ) + end, +} +local miscitems = { + meme1, + meme2, + meme3, + mosaic_shader, + oversat_shader, + glitched_shader, + astral_shader, + blurred_shader, + glass_shader, + gold_shader, + noisy_shader, + glass_edition, + gold_edition, + glitched, + noisy, + mosaic, + oversat, + blurred, + astral, + echo, + eclipse, + blessing, + typhoon, + azure_seal, + double_sided, + meld, + absolute, + light, + seraph, + jollyeditionshader, + jollyedition, +} +return { + name = "Misc.", + init = function() + -- Remove shadow from cards (e.g. Light Cards) + local setabilityref = Card.set_ability + function Card:set_ability(center, initial, delay_sprites) + setabilityref(self, center, initial, delay_sprites) + + if self.config.center.cry_noshadow then + self.ignore_shadow["cry_noshadow"] = true + elseif self.ignore_shadow["cry_noshadow"] then + self.ignore_shadow["cry_noshadow"] = nil + end + end + end, items = miscitems, } diff --git a/Cryptid/Items/MiscJokers.lua b/Cryptid/items/misc_joker.lua similarity index 72% rename from Cryptid/Items/MiscJokers.lua rename to Cryptid/items/misc_joker.lua index 074d737..4aafb0f 100644 --- a/Cryptid/Items/MiscJokers.lua +++ b/Cryptid/items/misc_joker.lua @@ -1,5 +1,10 @@ local dropshot = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Dropshot", key = "dropshot", order = 3, @@ -58,12 +63,7 @@ local dropshot = { return nil, true end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_mult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_mult) > to_big(1)) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -72,25 +72,60 @@ local dropshot = { end, cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Math" - } + "Math", + }, }, + init = function(self) + local gigo = Game.init_game_object + function Game:init_game_object() + local g = gigo(self) + g.current_round.cry_dropshot_card = { suit = "Spades" } + return g + end + local rcc = reset_castle_card + function reset_castle_card() + rcc() + if not G.GAME.current_round.cry_dropshot_card then + G.GAME.current_round.cry_dropshot_card = {} + end + G.GAME.current_round.cry_dropshot_card.suit = "Spades" + local valid_castle_cards = {} + for k, v in ipairs(G.playing_cards) do + if v.ability.effect ~= "Stone Card" then + valid_castle_cards[#valid_castle_cards + 1] = v + end + end + if valid_castle_cards[1] then + local castle_card = + pseudorandom_element(valid_castle_cards, pseudoseed("cry_dro" .. G.GAME.round_resets.ante)) + if not G.GAME.current_round.cry_dropshot_card then + G.GAME.current_round.cry_dropshot_card = {} + end + G.GAME.current_round.cry_dropshot_card.suit = castle_card.base.suit + end + end + end, } local happyhouse = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-happyhouse", key = "happyhouse", pos = { x = 2, y = 4 }, order = 2, config = { extra = { mult = 4, check = 0 } }, immutable = true, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, rarity = 2, cost = 2, blueprint_compat = true, @@ -125,15 +160,9 @@ local happyhouse = { } end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.mult) > to_big(1)) - and card.ability.extra.check > 113 - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.mult) > to_big(1)) and card.ability.extra.check > 113 then return { - message = localize{type='variable',key='a_powmult',vars={card.ability.extra.mult}}, + message = localize({ type = "variable", key = "a_powmult", vars = { card.ability.extra.mult } }), Emult_mod = card.ability.extra.mult, colour = G.C.DARK_EDITION, card = card, @@ -142,18 +171,23 @@ local happyhouse = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local maximized = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Maximized", key = "maximized", pos = { x = 5, y = 2 }, @@ -164,18 +198,50 @@ local maximized = { atlas = "atlastwo", cry_credits = { idea = { - "Gold" + "Gold", }, art = { - "Gold" + "Gold", }, code = { - "Math" - } + "Math", + }, }, + init = function(self) + local cgi_ref = Card.get_id + override_maximized = false + function Card:get_id() + local id = cgi_ref(self) + if id == nil then + id = 10 + end + if next(find_joker("cry-Maximized")) and not override_maximized then + if id >= 2 and id <= 10 then + id = 10 + end + if id >= 11 and id <= 13 or next(find_joker("Pareidolia")) then + id = 13 + end + end + return id + end + --Fix issues with View Deck and Maximized + local gui_vd = G.UIDEF.view_deck + function G.UIDEF.view_deck(unplayed_only) + override_maximized = true + local ret_value = gui_vd(unplayed_only) + override_maximized = false + return ret_value + end + end, } local potofjokes = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Pot of Jokes", key = "pot_of_jokes", config = { extra = { h_size = -2, h_mod = 1 } }, @@ -188,14 +254,15 @@ local potofjokes = { loc_vars = function(self, info_queue, center) return { vars = { - center.ability.extra.h_size < 0 and center.ability.extra.h_size or "+" .. math.min(1000, center.ability.extra.h_size), + center.ability.extra.h_size < 0 and center.ability.extra.h_size + or "+" .. math.min(1000, center.ability.extra.h_size), center.ability.extra.h_mod, }, } end, calculate = function(self, card, context) if context.end_of_round and not context.individual and not context.repetition and not context.blueprint then - G.hand:change_size(math.min(1000-card.ability.extra.h_size, card.ability.extra.h_mod)) + G.hand:change_size(math.min(1000 - card.ability.extra.h_size, card.ability.extra.h_mod)) card.ability.extra.h_size = card.ability.extra.h_size + card.ability.extra.h_mod return { message = localize({ type = "variable", key = "a_handsize", vars = { card.ability.extra.h_mod } }), @@ -208,34 +275,39 @@ local potofjokes = { G.hand:change_size(math.min(1000, card.ability.extra.h_size)) end, remove_from_deck = function(self, card, from_debuff) - G.hand:change_size(-1*math.min(1000, card.ability.extra.h_size)) + G.hand:change_size(-1 * math.min(1000, card.ability.extra.h_size)) end, cry_credits = { idea = { - "Mjiojio" + "Mjiojio", }, art = { - "Ein13" + "Ein13", }, code = { - "Math" - } + "Math", + }, }, 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 >= 12 then unlock_card(self) end - if args.type == 'cry_lock_all' then + if args.type == "cry_lock_all" then lock_card(self) end - if args.type == 'cry_unlock_all' then + if args.type == "cry_unlock_all" then unlock_card(self) end end, } local queensgambit = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Queen's Gambit", key = "queens_gambit", pos = { x = 1, y = 0 }, @@ -281,23 +353,29 @@ local queensgambit = { end, cry_credits = { idea = { - "Project666" + "Project666", }, art = { - "Ein13" + "Ein13", }, code = { --wonder what happened to this guy - "Thedrunkenbrick" - } + "Thedrunkenbrick", + }, }, } local wee_fib = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Wee Fibonacci", key = "wee_fib", config = { extra = { mult = 0, mult_mod = 3 } }, pos = { x = 1, y = 5 }, + display_size = { w = 0.7 * 71, h = 0.7 * 95 }, rarity = 3, cost = 9, order = 98, @@ -308,7 +386,7 @@ local wee_fib = { end, calculate = function(self, card, context) if context.cardarea == G.play and context.individual and not context.blueprint then - local rank = SMODS.Ranks[context.other_card.base.value].key + local rank = context.other_card:get_id() if rank == "Ace" or rank == "2" or rank == "3" or rank == "5" or rank == "8" then card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.mult_mod @@ -319,12 +397,7 @@ local wee_fib = { } end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.mult) > to_big(0)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.mult) > to_big(0)) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), mult_mod = card.ability.extra.mult, @@ -334,18 +407,23 @@ local wee_fib = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "LocalThunk" + "LocalThunk", }, code = { - "Math" - } + "Math", + }, }, } local whip = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-The WHIP", key = "whip", pos = { x = 5, y = 3 }, @@ -368,58 +446,60 @@ local whip = { for i = 1, #context.full_hand do if context.full_hand[i]:get_id() == 2 or context.full_hand[i]:get_id() == 7 then if context.full_hand[i]:get_id() == 2 then - if not two then two = true end + if not two then + two = true + end for k, v in pairs(SMODS.Suits) do if context.full_hand[i]:is_suit(k, nil, true) then local contained = false for i = 1, #twosuits do - if k == twosuits[i] then contained = true end + if k == twosuits[i] then + contained = true + end + end + if not contained then + twosuits[#twosuits + 1] = k end - if not contained then twosuits[#twosuits + 1] = k end end end else - if not seven then seven = true end + if not seven then + seven = true + end for k, v in pairs(SMODS.Suits) do if context.full_hand[i]:is_suit(k, nil, true) then local contained = false for i = 1, #sevensuits do - if k == sevensuits[i] then contained = true end + if k == sevensuits[i] then + contained = true + end + end + if not contained then + sevensuits[#sevensuits + 1] = k end - if not contained then sevensuits[#sevensuits + 1] = k end end end end end if two and seven then - if (#twosuits > 1 or #sevensuits > 1) - or (#twosuits == 1 and #sevensuits == 1 and twosuits[1] ~= sevensuits[1]) then + if + (#twosuits > 1 or #sevensuits > 1) + or (#twosuits == 1 and #sevensuits == 1 and twosuits[1] ~= sevensuits[1]) + then card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.Xmult_mod - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult }, - }), - } - ) + }), + }) return nil, true end end end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_mult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_mult) > to_big(1)) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -428,18 +508,23 @@ local whip = { end, cry_credits = { idea = { - "Gold" + "Gold", }, art = { - "Ein13" + "Ein13", }, code = { - "Math" - } + "Math", + }, }, } local lucky_joker = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Lucky Joker", key = "lucky_joker", config = { extra = { dollars = 5 } }, @@ -457,10 +542,12 @@ local lucky_joker = { calculate = function(self, card, context) if context.individual and context.other_card.lucky_trigger then G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + card.ability.extra.dollars - G.E_MANAGER:add_event(Event({ func = function() - G.GAME.dollar_buffer = 0 - return true - end })) + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.dollar_buffer = 0 + return true + end, + })) return { dollars = card.ability.extra.dollars, card = card, @@ -469,18 +556,23 @@ local lucky_joker = { end, cry_credits = { idea = { - "Ein13" + "Ein13", }, art = { - "Jevonn" + "Jevonn", }, code = { - "WilsontheWolf" - } + "WilsontheWolf", + }, }, } local cursor = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Cursor", key = "cursor", config = { extra = { chips = 0, chip_mod = 8 } }, @@ -497,25 +589,13 @@ local cursor = { calculate = function(self, card, context) if context.buying_card and not context.blueprint and not (context.card == card) then card.ability.extra.chips = card.ability.extra.chips + card.ability.extra.chip_mod - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), - colour = G.C.CHIPS, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + colour = G.C.CHIPS, + }) return nil, true end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.chips) > to_big(0)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.chips) > to_big(0)) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), chip_mod = card.ability.extra.chips, @@ -524,18 +604,23 @@ local cursor = { end, cry_credits = { idea = { - "Math" + "Math", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Math" - } + "Math", + }, }, } local pickle = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Pickle", key = "pickle", config = { extra = { tags = 3, tags_mod = 1 } }, @@ -546,6 +631,7 @@ local pickle = { blueprint_compat = true, eternal_compat = false, atlas = "atlasone", + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) return { vars = { math.min(20, center.ability.extra.tags), center.ability.extra.tags_mod } } end, @@ -568,33 +654,27 @@ local pickle = { add_tag(tag) end end - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = "+"..localize({ type = "variable", key = "a_tag" .. (card.ability.extra.tags > 1 and "s" or ""), vars = { card.ability.extra.tags } })[1], - colour = G.C.FILTER, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = card.ability.extra.tags == 1 and "a_tag" or "a_tags", + vars = { card.ability.extra.tags }, + })[1], + colour = G.C.FILTER, + }) return nil, true end if context.setting_blind and not context.blueprint then card.ability.extra.tags = card.ability.extra.tags - card.ability.extra.tags_mod if to_big(card.ability.extra.tags) > to_big(0) then - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = "-"..localize({ type = "variable", key = "a_tag" .. (card.ability.extra.tags > 1 and "s" or ""), vars = { card.ability.extra.tags } })[1], - colour = G.C.FILTER, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = card.ability.extra.tags == 1 and "a_tag_minus" or "a_tags_minus", + vars = { card.ability.extra.tags }, + })[1], + colour = G.C.FILTER, + }) return nil, true else G.E_MANAGER:add_event(Event({ @@ -627,34 +707,40 @@ local pickle = { end, cry_credits = { idea = { - "5381" + "5381", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Math" - } + "Math", + }, }, } local cube = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Cube", key = "cube", config = { extra = { chips = 6 } }, pos = { x = 5, y = 4 }, + pixel_size = { w = 0.1 * 71, h = 0.1 * 95 }, rarity = 1, order = 11, cost = -27, blueprint_compat = true, atlas = "atlasone", - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, source_gate = "sho", loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.chips } } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after then + if context.joker_main then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), chip_mod = card.ability.extra.chips, @@ -663,18 +749,36 @@ local cube = { end, cry_credits = { idea = { - "Ein13", "Math" + "Ein13", + "Math", }, art = { - "Ein13" + "Ein13", }, code = { - "Math" - } + "Math", + }, }, + init = function(self) + local sc = Card.set_cost + function Card:set_cost() + sc(self) + if self.ability.name == "cry-Cube" then + self.cost = -27 + end + if self.ability.name == "cry-Big Cube" then + self.cost = 27 + end + end + end, } local triplet_rhythm = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Triplet Rhythm", key = "triplet_rhythm", config = { extra = { Xmult = 3 } }, @@ -688,10 +792,10 @@ local triplet_rhythm = { return { vars = { center.ability.extra.Xmult } } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.scoring_hand then + if context.joker_main and context.scoring_hand then local threes = 0 for i = 1, #context.scoring_hand do - if SMODS.Ranks[context.scoring_hand[i].base.value].key == "3" then + if context.scoring_hand[i]:get_id() then threes = threes + 1 end end @@ -705,22 +809,28 @@ local triplet_rhythm = { end, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Math" - } + "Math", + }, }, } local booster = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Booster Joker", key = "booster", config = { extra = { booster_slots = 1 } }, pos = { x = 2, y = 0 }, + display_size = { w = 1.17 * 71, h = 1.17 * 95 }, order = 34, rarity = 2, cost = 6, @@ -733,28 +843,35 @@ local booster = { 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.min(25, card.ability.extra.booster_slots) + G.GAME.modifiers.cry_booster_packs = G.GAME.modifiers.cry_booster_packs + + math.min(25, card.ability.extra.booster_slots) end, remove_from_deck = function(self, card, from_debuff) 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.min(25, card.ability.extra.booster_slots) + G.GAME.modifiers.cry_booster_packs = G.GAME.modifiers.cry_booster_packs + - math.min(25, card.ability.extra.booster_slots) end, cry_credits = { idea = { - "Ein13" + "Ein13", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Math" - } + "Math", + }, }, } local chili_pepper = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Chili Pepper", key = "chili_pepper", config = { extra = { Xmult = 1, Xmult_mod = 0.5, rounds_remaining = 8 } }, @@ -766,18 +883,14 @@ local chili_pepper = { eternal_compat = false, perishable_compat = false, atlas = "atlastwo", + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.Xmult, center.ability.extra.Xmult_mod, center.ability.extra.rounds_remaining }, } end, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and not context.before - and not context.after - and to_big(card.ability.extra.Xmult) > to_big(1) - then + if context.joker_main and to_big(card.ability.extra.Xmult) > to_big(1) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }), Xmult_mod = card.ability.extra.Xmult, @@ -828,18 +941,23 @@ local chili_pepper = { end, cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Math" - } + "Math", + }, }, } local compound_interest = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Compound Interest", key = "compound_interest", config = { extra = { percent_mod = 3, percent = 12 } }, @@ -853,36 +971,38 @@ local compound_interest = { return { vars = { center.ability.extra.percent, center.ability.extra.percent_mod } } end, calc_dollar_bonus = function(self, card) - if G.GAME.dollars > 0 then + if G.GAME.dollars > to_big(0) then local bonus = math.max(0, math.floor(0.01 * card.ability.extra.percent * (G.GAME.dollars or 1))) local old = card.ability.extra.percent card.ability.extra.percent = card.ability.extra.percent + card.ability.extra.percent_mod compound_interest_scale_mod(card, card.ability.extra.percent_mod, old, card.ability.extra.percent) - if bonus > 0 then - if G.GAME.dollars > 1e10 then - return 1 - else - return bonus - end + if bonus > to_big(0) then + return bonus end - else + else return 0 end end, cry_credits = { idea = { - "Mjiojio" + "Mjiojio", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Math" - } + "Math", + }, }, } local big_cube = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "j_cry_cube", + }, + }, name = "cry-Big Cube", key = "big_cube", joker_gate = "cry-Cube", @@ -897,7 +1017,7 @@ local big_cube = { return { vars = { center.ability.extra.x_chips } } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after then + if context.joker_main then return { message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }), Xchip_mod = card.ability.extra.x_chips, @@ -907,44 +1027,50 @@ local big_cube = { end, cry_credits = { idea = { - "Mystick Myclick" + "Mystic Misclick", }, art = { - "AlexZGreat" + "AlexZGreat", }, code = { - "Math" - } + "Math", + }, }, } local eternalflame = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-eternalflame", key = "eternalflame", pos = { x = 0, y = 4 }, - config = { extra = { extra = 0.1, x_mult = 1 } }, + config = { extra = { extra = 0.2, x_mult = 1 } }, rarity = 3, order = 100, cost = 9, perishable_compat = false, blueprint_compat = true, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.extra, center.ability.extra.x_mult } } + return { + vars = { center.ability.extra.extra, center.ability.extra.x_mult }, + key = Card.get_gameset(card) ~= "modest" and "j_cry_eternalflame2" or "j_cry_eternalflame", + } end, atlas = "atlasone", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_mult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_mult) > to_big(1)) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, } - end - if context.selling_card and not context.blueprint then + elseif + context.selling_card + and (context.card.sell_cost >= 3 or Card.get_gameset(card) ~= "modest") + and not context.blueprint + then card.ability.extra.x_mult = card.ability.extra.x_mult + card.ability.extra.extra card_eval_status_text( card, @@ -959,23 +1085,28 @@ local eternalflame = { end, cry_credits = { idea = { - "Dovahkiin1307" + "Dovahkiin1307", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local nice = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Nice", key = "nice", config = { extra = { chips = 420, sixcount = 0, ninecount = 0 } }, pos = { x = 2, y = 3 }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, rarity = 3, cost = 6.9, order = 84, @@ -985,7 +1116,7 @@ local nice = { return { vars = { center.ability.extra.chips } } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and context.before and not context.after then + if context.cardarea == G.jokers and context.before then card.ability.extra.sixcount = 0 card.ability.extra.ninecount = 0 for i, v in pairs(context.full_hand) do @@ -995,7 +1126,7 @@ local nice = { card.ability.extra.ninecount = card.ability.extra.ninecount + 1 end end - elseif context.cardarea == G.jokers and not context.before and not context.after then + elseif context.cardarea == G.jokers and context.joker_main then if card.ability.extra.sixcount > 0 and card.ability.extra.ninecount > 0 then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips or 0 } }), @@ -1006,18 +1137,23 @@ local nice = { end, cry_credits = { idea = { - "AlexZGreat" + "AlexZGreat", }, art = { - "Jevonn" + "Jevonn", }, code = { - "AlexZGreat" - } + "AlexZGreat", + }, }, } local seal_the_deal = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Seal The Deal", key = "seal_the_deal", config = { extra = nil }, @@ -1028,18 +1164,27 @@ local seal_the_deal = { immutable = true, atlas = "atlasone", calculate = function(self, card, context) - if context.after and G.GAME.current_round.hands_left == 0 and not context.blueprint and not context.retrigger_joker then + if + context.after + and G.GAME.current_round.hands_left == 0 + and not context.blueprint + and not context.retrigger_joker + then G.E_MANAGER:add_event(Event({ - trigger = 'before', + trigger = "before", delay = 1.3, - func = function() -- i can't figure out how to split these events without making em look bad so you get this? + func = function() -- i can't figure out how to split these events without making em look bad so you get this? for j = 1, #context.scoring_hand do if not context.scoring_hand[j].seal then - context.scoring_hand[j]:set_seal(SMODS.poll_seal({guaranteed = true, type_key = 'sealthedeal'}), true, false) + context.scoring_hand[j]:set_seal( + SMODS.poll_seal({ guaranteed = true, type_key = "sealthedeal" }), + true, + false + ) context.scoring_hand[j]:juice_up() end end - play_sound('gold_seal', 1.2, 0.4) + play_sound("gold_seal", 1.2, 0.4) card:juice_up() return true end, @@ -1049,45 +1194,54 @@ local seal_the_deal = { end, set_ability = function(self, card, initial, delay_sprites) local sealtable = { "blue", "red", "purple" } - if Cryptid.enabled["Misc."] then sealtable[#sealtable + 1] = "azure" end - if Cryptid.enabled["Code Cards"] then sealtable[#sealtable + 1] = "green" end - card.ability.extra = pseudorandom_element(sealtable, pseudoseed('abc')) + if Cryptid.enabled["Misc."] then + sealtable[#sealtable + 1] = "azure" + end + if Cryptid.enabled["Code Cards"] then + sealtable[#sealtable + 1] = "green" + end + card.ability.extra = pseudorandom_element(sealtable, pseudoseed("abc")) if G.P_CENTERS["j_cry_seal_the_deal"].discovered then --Gold (ULTRA RARE!!!!!!!!) - if pseudorandom('xyz') <= 0.000001 and not (card.area and card.area.config.collection) then - card.children.center:set_sprite_pos({x = 6, y = 4}) + if pseudorandom("xyz") <= 0.000001 and not (card.area and card.area.config.collection) then + card.children.center:set_sprite_pos({ x = 6, y = 4 }) --Others elseif card.ability.extra == "red" then - card.children.center:set_sprite_pos({x = 6, y = 0}) + card.children.center:set_sprite_pos({ x = 6, y = 0 }) elseif card.ability.extra == "azure" then - card.children.center:set_sprite_pos({x = 6, y = 2}) + card.children.center:set_sprite_pos({ x = 6, y = 2 }) elseif card.ability.extra == "purple" then - card.children.center:set_sprite_pos({x = 6, y = 3}) + card.children.center:set_sprite_pos({ x = 6, y = 3 }) elseif card.ability.extra == "green" then - card.children.center:set_sprite_pos({x = 6, y = 1}) + card.children.center:set_sprite_pos({ x = 6, y = 1 }) end end end, cry_credits = { idea = { - "Zak" + "Zak", }, art = { - "5381" + "5381", }, code = { - "AlexZGreat" - } + "AlexZGreat", + }, }, } local chad = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Chad", key = "chad", pos = { x = 0, y = 3 }, order = 71, config = { extra = { retriggers = 2 } }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, rarity = 3, cost = 10, blueprint_compat = true, @@ -1110,24 +1264,30 @@ local chad = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "SDM_0" + "SDM_0", }, code = { - "Math" - } + "Math", + }, }, } local jimball = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Jimball", key = "jimball", pos = { x = 0, y = 0 }, + pixel_size = { w = 57 / 69 * 71, h = 57 / 69 * 71 }, order = 8, config = { x_mult = 1, extra = 0.15, override_x_mult_check = true }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra, center.ability.x_mult } } end, @@ -1166,20 +1326,21 @@ local jimball = { atlas = "jimball", cry_credits = { idea = { - "Math" + "Math", }, art = { - "Grazzy", "Zakosek Artworks" + "Grazzy", + "Zakosek Artworks", }, code = { - "Math" - } + "Math", + }, }, unlocked = false, check_for_unlock = function(self, args) - if args.type == 'win' then + if args.type == "win" then local hand = nil - for k,v in pairs(G.GAME.hands) do + for k, v in pairs(G.GAME.hands) do if G.GAME.hands[k].played ~= 0 then if not hand then hand = G.GAME.hands[k] @@ -1190,20 +1351,22 @@ local jimball = { end return true end - if args.type == 'cry_lock_all' then + if args.type == "cry_lock_all" then lock_card(self) end - if args.type == 'cry_unlock_all' then + if args.type == "cry_unlock_all" then unlock_card(self) end end, + init = function(self) + G.FUNCS.notif_jimball = function() + Cryptid_config.Cryptid.jimball_music = false + G:save_settings() + G.FUNCS:exit_overlay_menu() + -- todo: autosave settings (Not sure if this autosaves it) + end + end, } -G.FUNCS.notif_jimball = function() - Cryptid_config.Cryptid.jimball_music = false - G:save_settings() - G.FUNCS:exit_overlay_menu() - -- todo: autosave settings (Not sure if this autosaves it) -end local jimball_sprite = { --left this one on it's own atlas for obvious reasons object_type = "Atlas", key = "jimball", @@ -1213,10 +1376,15 @@ local jimball_sprite = { --left this one on it's own atlas for obvious reasons } local sus = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-SUS", key = "sus", pos = { x = 1, y = 3 }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, rarity = 3, cost = 7, order = 79, @@ -1226,7 +1394,7 @@ local sus = { local function is_impostor(card) return card.base.value and SMODS.Ranks[card.base.value].key == "King" and card:is_suit("Hearts") end - if context.end_of_round and not context.cardarea then + if context.end_of_round and context.cardarea == G.jokers then if not card.ability.used_round or card.ability.used_round ~= G.GAME.round then card.ability.chosen_card = nil end @@ -1260,8 +1428,11 @@ local sus = { end if #deletable_cards ~= 0 then local _first_dissolve = nil - for j=1, #G.jokers.cards do - eval_card(G.jokers.cards[j], {cardarea = G.jokers, remove_playing_cards = true, removed = deletable_cards}) + for j = 1, #G.jokers.cards do + eval_card( + G.jokers.cards[j], + { cardarea = G.jokers, remove_playing_cards = true, removed = deletable_cards } + ) end G.E_MANAGER:add_event(Event({ trigger = "before", @@ -1277,7 +1448,6 @@ local sus = { return true end, })) - end end if card.ability.chosen_card ~= nil then @@ -1303,18 +1473,23 @@ local sus = { end, cry_credits = { idea = { - "Math" + "Math", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Math" - } + "Math", + }, }, } local fspinner = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-fspinner", key = "fspinner", pos = { x = 4, y = 0 }, @@ -1341,12 +1516,7 @@ local fspinner = { end end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.chips) > to_big(0)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.chips) > to_big(0)) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), chip_mod = card.ability.extra.chips, @@ -1356,19 +1526,23 @@ local fspinner = { atlas = "atlasone", cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } - local waluigi = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Waluigi", key = "waluigi", pos = { x = 0, y = 3 }, @@ -1400,19 +1574,23 @@ local waluigi = { atlas = "atlastwo", cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Math" - } + "Math", + }, }, } - local wario = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-wario", key = "wario", order = 88, @@ -1424,50 +1602,52 @@ local wario = { end, calculate = function(self, card, context) if context.post_trigger then - ease_dollars(card.ability.extra.money) - if not Talisman.config_file.disable_anims then - G.E_MANAGER:add_event(Event({ - func = function() - (context.blueprint_card or card):juice_up(0.5, 0.5) - return true - end, - })) - end - card_eval_status_text( - context.other_context.blueprint_card or context.other_joker, - "extra", - nil, - nil, - nil, - { message = localize("$") .. card.ability.extra.money, colour = G.C.MONEY } - ) - return nil, true + return { + dollars = card.ability.extra.money, + card = context.other_context.blueprint_card or context.other_card, + -- This function isn't working properly :sob: + --[[func = function() + G.E_MANAGER:add_event(Event({ + func = function() + if not Talisman.config_file.disable_anims then + (context.blueprint_card or card):juice_up(0.5, 0.5) + end + return true + end, + })) + return true + end,--]] + } end end, - rarity = 4, cost = 20, blueprint_compat = true, atlas = "atlasthree", cry_credits = { idea = { - "Auto Watto" + "Auto Watto", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Auto Watto" - } + "Auto Watto", + }, }, } local krustytheclown = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-krustytheclown", key = "krustytheclown", pos = { x = 3, y = 4 }, config = { extra = { extra = 0.02, x_mult = 1 } }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, rarity = 2, order = 31, cost = 7, @@ -1478,12 +1658,7 @@ local krustytheclown = { end, atlas = "atlasone", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_mult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_mult) > to_big(1)) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -1500,22 +1675,27 @@ local krustytheclown = { end, cry_credits = { idea = { - "Izumi" + "Izumi", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local blurred = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-blurred Joker", key = "blurred", pos = { x = 4, y = 4 }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, config = { extra = 1 }, rarity = 1, cost = 4, @@ -1527,33 +1707,41 @@ local blurred = { atlas = "atlastwo", calculate = function(self, card, context) if context.setting_blind and not (context.blueprint_card or card).getting_sliced then - G.E_MANAGER:add_event(Event({func = function() - ease_hands_played(card.ability.extra) - card_eval_status_text( - context.blueprint_card or card, - 'extra', - nil, - nil, - nil, - {message = localize{type = 'variable', key = 'a_hands', vars = {card.ability.extra}}} - ) - return true end })) + G.E_MANAGER:add_event(Event({ + func = function() + ease_hands_played(card.ability.extra) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize({ type = "variable", key = "a_hands", vars = { card.ability.extra } }) } + ) + return true + end, + })) end end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local gardenfork = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-gardenfork", key = "gardenfork", pos = { x = 0, y = 1 }, @@ -1569,9 +1757,9 @@ local gardenfork = { calculate = function(self, card, context) if context.cardarea == G.jokers and context.before and not context.blueprint then for i = 1, #context.full_hand do - if SMODS.Ranks[context.full_hand[i].base.value].key == "Ace" then + if context.other_card:get_id() == 14 then for j = 1, #context.full_hand do - if SMODS.Ranks[context.full_hand[j].base.value].key == "7" then + if context.other_card:get_id() == 7 then -- :( ekshpenshive ease_dollars(card.ability.extra.money) return { message = "$" .. card.ability.extra.money, colour = G.C.MONEY } end @@ -1582,18 +1770,23 @@ local gardenfork = { end, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local lightupthenight = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-lightupthenight", key = "lightupthenight", config = { extra = { xmult = 1.5 } }, @@ -1608,8 +1801,8 @@ local lightupthenight = { end, calculate = function(self, card, context) if context.cardarea == G.play and context.individual then - local rank = SMODS.Ranks[context.other_card.base.value].key - if rank == "2" or rank == "7" then + local rank = context.other_card:get_id() + if rank == 2 or rank == 7 then return { x_mult = card.ability.extra.xmult, colour = G.C.RED, @@ -1620,18 +1813,23 @@ local lightupthenight = { end, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local nosound = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-nosound", key = "nosound", config = { extra = { retriggers = 3 } }, @@ -1647,8 +1845,7 @@ local nosound = { calculate = function(self, card, context) if context.repetition then if context.cardarea == G.play then - local rank = SMODS.Ranks[context.other_card.base.value].key - if rank == "7" then + if context.other_card:get_id() == 7 then return { message = localize("k_again_ex"), repetitions = card.ability.extra.retriggers, @@ -1660,18 +1857,23 @@ local nosound = { end, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local antennastoheaven = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-antennastoheaven", key = "antennastoheaven", pos = { x = 3, y = 1 }, @@ -1686,21 +1888,20 @@ local antennastoheaven = { end, atlas = "atlasone", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_chips) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_chips) > to_big(1)) then return { - message = localize({ type = "variable", key = "a_xchips", vars = { number_format(card.ability.extra.x_chips) } }), + message = localize({ + type = "variable", + key = "a_xchips", + vars = { number_format(card.ability.extra.x_chips) }, + }), Xchip_mod = card.ability.extra.x_chips, colour = G.C.CHIPS, } end if context.cardarea == G.play and context.individual and not context.blueprint then - local rank = SMODS.Ranks[context.other_card.base.value].key - if rank == "4" or rank == "7" then + local rank = context.other_card:get_id() + if rank == 4 or rank == 7 then card.ability.extra.x_chips = card.ability.extra.x_chips + card.ability.extra.bonus return { extra = { focus = card, message = localize("k_upgrade_ex") }, @@ -1712,18 +1913,23 @@ local antennastoheaven = { end, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local hunger = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-hunger", key = "hunger", config = { extra = { money = 3 } }, @@ -1736,33 +1942,28 @@ local hunger = { loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.money } } end, - calculate = function(self, card, context) --This didn't work for Jevonn for some reason but it works for me :joker: - if context.using_consumeable then --shush - ease_dollars(card.ability.extra.money) - card_eval_status_text( - context.blueprint_card or card, - "extra", - nil, - nil, - nil, - { message = "$" .. card.ability.extra.money, colour = G.C.MONEY, } - ) - end + calculate = function(self, card, context) -- haha one liner + return context.using_consumeable and { p_dollars = card.ability.extra.money } end, cry_credits = { idea = { - "Mjiojio" + "Mjiojio", }, art = { - "AlexZGreat" + "AlexZGreat", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local weegaming = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-weegaming", key = "weegaming", order = 62, @@ -1778,8 +1979,7 @@ local weegaming = { calculate = function(self, card, context) if context.repetition then if context.cardarea == G.play then - local rank = SMODS.Ranks[context.other_card.base.value].key - if rank == "2" then + if context.other_card:get_id() == 2 then return { message = localize("k_again_ex"), repetitions = card.ability.extra.retriggers, @@ -1791,18 +1991,23 @@ local weegaming = { end, cry_credits = { idea = { - "Gold" + "Gold", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local redbloon = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-redbloon", key = "redbloon", config = { extra = { money = 20, rounds_remaining = 2 } }, @@ -1863,18 +2068,23 @@ local redbloon = { end, cry_credits = { idea = { - "Roguefort Cookie" + "Roguefort Cookie", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local apjoker = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-AP Joker", key = "apjoker", pos = { x = 2, y = 0 }, @@ -1889,7 +2099,7 @@ local apjoker = { return { vars = { center.ability.extra.x_mult } } end, calculate = function(self, card, context) - if context.cardarea == G.jokers and G.GAME.blind.boss and not context.before and not context.after then + if context.joker_main and G.GAME.blind.boss then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -1898,18 +2108,23 @@ local apjoker = { end, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local maze = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-maze", key = "maze", pos = { x = 1, y = 1 }, @@ -1918,54 +2133,45 @@ local maze = { order = 61, immutable = true, atlas = "atlastwo", - calculate = function(self, card, context) - if context.after and not context.blueprint and not context.retrigger_joker then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - blockable = false, - func = function() - G.GAME.current_round.hands_played = 0 - G.GAME.current_round.discards_used = 0 - return true - end, - })) - return true - end - if context.discard and not context.blueprint and not context.retrigger_joker then - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.3, - blockable = false, - func = function() - G.GAME.current_round.hands_played = 0 - G.GAME.current_round.discards_used = 0 - return true - end, - })) - return true + update = function(self, card, dt) + if G.STAGE == G.STAGES.RUN then + if G.GAME.current_round.hands_played > 0 then + G.GAME.current_round.hands_played = 0 + end + if G.GAME.current_round.discards_used > 0 then + G.GAME.current_round.discards_used = 0 + end end end, add_to_deck = function(self, card, from_debuff) - G.GAME.current_round.hands_played = 0 - G.GAME.current_round.discards_used = 0 + if G.GAME.current_round.hands_played > 0 then + G.GAME.current_round.hands_played = 0 + end + if G.GAME.current_round.discards_used > 0 then + G.GAME.current_round.discards_used = 0 + end end, cry_credits = { idea = { - "zy-b-org" + "zy-b-org", }, art = { - "Math" + "Math", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } --Fixed Jank for the most part. Other modded jokers may still be jank depending on how they are implemented --funny side effect of this fix causes trading card and dna to juice up like craaazy lol local panopticon = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-panopticon", key = "panopticon", pos = { x = 1, y = 4 }, @@ -1993,21 +2199,28 @@ local panopticon = { end, cry_credits = { idea = { - "Samario" + "Samario", }, art = { - "Samario" + "Samario", }, code = { - "Samario", "Toneblock" - } + "Samario", + "Toneblock", + }, }, } local magnet = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-magnet", key = "magnet", pos = { x = 4, y = 0 }, + pixel_size = { w = 35, h = 35 }, config = { extra = { money = 2, Xmoney = 5, slots = 4 } }, rarity = 1, cost = 6, @@ -2026,18 +2239,23 @@ local magnet = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local unjust_dagger = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Unjust Dagger", key = "unjust_dagger", pos = { x = 3, y = 0 }, @@ -2052,12 +2270,7 @@ local unjust_dagger = { atlas = "atlasone", blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (card.ability.extra.x_mult > 1) - and not context.before - and not context.after - then + if context.joker_main and (card.ability.extra.x_mult > 1) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -2094,39 +2307,37 @@ local unjust_dagger = { return true end, })) - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ - type = "variable", - key = "a_xmult", - vars = { card.ability.extra.x_mult + 0.2 * sliced_card.sell_cost }, - }), - colour = G.C.RED, - no_juice = true, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_xmult", + vars = { card.ability.extra.x_mult + 0.2 * sliced_card.sell_cost }, + }), + colour = G.C.RED, + no_juice = true, + }) return nil, true end end, cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Mystic Misclick" - } + "Mystic Misclick", + }, }, } local monkey_dagger = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Monkey Dagger", key = "monkey_dagger", pos = { x = 4, y = 3 }, @@ -2141,12 +2352,7 @@ local monkey_dagger = { end, atlas = "atlastwo", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.chips) > to_big(0)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.chips) > to_big(0)) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), chip_mod = card.ability.extra.chips, @@ -2183,39 +2389,37 @@ local monkey_dagger = { return true end, })) - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ - type = "variable", - key = "a_chips", - vars = { card.ability.extra.chips + 10 * sliced_card.sell_cost }, - }), - colour = G.C.CHIPS, - no_juice = true, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_chips", + vars = { card.ability.extra.chips + 10 * sliced_card.sell_cost }, + }), + colour = G.C.CHIPS, + no_juice = true, + }) return nil, true end end, cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Mystic Misclick" - } + "Mystic Misclick", + }, }, } local pirate_dagger = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Pirate Dagger", key = "pirate_dagger", pos = { x = 3, y = 3 }, @@ -2230,12 +2434,7 @@ local pirate_dagger = { end, atlas = "atlastwo", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (card.ability.extra.x_chips > 1) - and not context.before - and not context.after - then + if context.joker_main and (card.ability.extra.x_chips > 1) then return { message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }), Xchip_mod = card.ability.extra.x_chips, @@ -2272,39 +2471,37 @@ local pirate_dagger = { return true end, })) - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ - type = "variable", - key = "a_xchips", - vars = { card.ability.extra.x_chips + 0.25 * sliced_card.sell_cost }, - }), - colour = G.C.CHIPS, - no_juice = true, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_xchips", + vars = { card.ability.extra.x_chips + 0.25 * sliced_card.sell_cost }, + }), + colour = G.C.CHIPS, + no_juice = true, + }) return nil, true end end, cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Mystic Misclick" + "Mystic Misclick", }, code = { - "Mystic Misclick" - } + "Mystic Misclick", + }, }, } local mondrian = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-mondrian", key = "mondrian", pos = { x = 5, y = 3 }, @@ -2319,12 +2516,7 @@ local mondrian = { end, atlas = "atlastwo", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_mult) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_mult) > to_big(1)) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -2346,18 +2538,23 @@ local mondrian = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local sapling = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-sapling", key = "sapling", pos = { x = 3, y = 2 }, @@ -2368,7 +2565,14 @@ local sapling = { blueprint_compat = false, eternal_compat = false, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.score, center.ability.extra.req } } + return { + vars = { + center.ability.extra.score, + center.ability.extra.req, + cry_card_enabled("set_cry_epic") == true and localize("k_cry_epic") or localize("k_rare"), + colours = { G.C.RARITY[cry_card_enabled("set_cry_epic") == true and "cry_epic" or 3] }, + }, + } end, atlas = "atlasone", calculate = function(self, card, context) @@ -2382,41 +2586,59 @@ local sapling = { card.ability.extra.score = card.ability.extra.score + 1 if card.ability.extra.score >= card.ability.extra.req and not card.ability.extra.check then card.ability.extra.check = true --Prevents violent juice up spam when playing enchanced cards while already active - local eval = function(card) return not card.REMOVED end - juice_card_until(card, eval, true) - end + local eval = function(card) + return not card.REMOVED + end + juice_card_until(card, eval, true) + end end - elseif - context.selling_self - and not context.blueprint - and not context.retrigger_joker - then + elseif context.selling_self and not context.blueprint and not context.retrigger_joker then if card.ability.extra.score >= card.ability.extra.req then - card_eval_status_text(card, 'extra', nil, nil, nil, {message = localize('k_plus_joker'), colour = G.C.RARITY["cry_epic"]}) - local card = create_card("Joker", G.jokers, nil, cry_enable_epics and 'cry_epic' or 1, nil, nil, nil, "cry_sapling") + local value = cry_card_enabled("set_cry_epic") == true and "cry_epic" or 0.99 + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_plus_joker"), colour = G.C.RARITY["cry_epic"] } + ) + local card = create_card("Joker", G.jokers, nil, value, nil, nil, nil, "cry_sapling") card:add_to_deck() G.jokers:emplace(card) card:start_materialize() return nil, true else - card_eval_status_text(card, 'extra', nil, nil, nil, {message = localize("k_nope_ex"), colour = G.C.RARITY["cry_epic"]}) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_nope_ex"), colour = G.C.RARITY["cry_epic"] } + ) end end end, cry_credits = { idea = { - "Mjiojio" + "Mjiojio", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local spaceglobe = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-spaceglobe", key = "spaceglobe", pos = { x = 1, y = 4 }, @@ -2438,10 +2660,12 @@ local spaceglobe = { atlas = "atlasone", set_ability = function(self, card, initial, delay_sprites) local _poker_hands = {} - for k, v in pairs(G.GAME.hands) do - if v.visible then _poker_hands[#_poker_hands+1] = k end - end - card.ability.extra.type = pseudorandom_element(_poker_hands, pseudoseed('cry_space_globe')) + for k, v in pairs(G.GAME.hands) do + if v.visible then + _poker_hands[#_poker_hands + 1] = k + end + end + card.ability.extra.type = pseudorandom_element(_poker_hands, pseudoseed("cry_space_globe")) end, calculate = function(self, card, context) if context.cardarea == G.jokers and context.before and not context.blueprint then @@ -2466,14 +2690,13 @@ local spaceglobe = { } end end - if - context.cardarea == G.jokers - and (to_big(card.ability.extra.x_chips) > to_big(1)) - and not context.before - and not context.after - then + if context.joker_main and (to_big(card.ability.extra.x_chips) > to_big(1)) then return { - message = localize({ type = "variable", key = "a_xchips", vars = { number_format(card.ability.extra.x_chips) } }), + message = localize({ + type = "variable", + key = "a_xchips", + vars = { number_format(card.ability.extra.x_chips) }, + }), Xchip_mod = card.ability.extra.x_chips, colour = G.C.CHIPS, } @@ -2481,18 +2704,23 @@ local spaceglobe = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local happy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-happy", key = "happy", pos = { x = 2, y = 1 }, @@ -2504,11 +2732,7 @@ local happy = { eternal_compat = false, atlas = "atlastwo", calculate = function(self, card, context) - if - context.selling_self - and #G.jokers.cards + G.GAME.joker_buffer <= G.jokers.config.card_limit - and not context.retrigger_joker - then + if context.selling_self and #G.jokers.cards + G.GAME.joker_buffer <= G.jokers.config.card_limit then local sellcreatejoker = 1 G.GAME.joker_buffer = G.GAME.joker_buffer + sellcreatejoker G.E_MANAGER:add_event(Event({ @@ -2538,7 +2762,6 @@ local happy = { and not context.individual and not context.repetition and #G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit - and not context.retrigger_joker then local roundcreatejoker = math.min(1, G.jokers.config.card_limit - (#G.jokers.cards + G.GAME.joker_buffer)) G.GAME.joker_buffer = G.GAME.joker_buffer + roundcreatejoker @@ -2567,18 +2790,23 @@ local happy = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local meteor = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-meteor", key = "meteor", pos = { x = 0, y = 2 }, @@ -2638,7 +2866,7 @@ local meteor = { else return { chips = card.ability.extra.chips, --this doesn't exist yet :pensive: if only... - card = card + card = card, } end end @@ -2646,18 +2874,23 @@ local meteor = { atlas = "atlastwo", cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local exoplanet = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-exoplanet", key = "exoplanet", pos = { x = 1, y = 2 }, @@ -2717,7 +2950,7 @@ local exoplanet = { else return { h_mult = card.ability.extra.mult, - card = card + card = card, } end end @@ -2725,18 +2958,23 @@ local exoplanet = { atlas = "atlastwo", cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local stardust = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-stardust", key = "stardust", pos = { x = 2, y = 2 }, @@ -2796,7 +3034,7 @@ local stardust = { else return { x_mult = card.ability.extra.xmult, - card = card + card = card, } end end @@ -2804,508 +3042,23 @@ local stardust = { atlas = "atlastwo", cry_credits = { idea = { - "Mystic Misclick" + "Mystic Misclick", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } -function rnjoker_randomize(card) - card.ability.abilities = {} - card.ability.extra = {} - card.ability.extra.value = {} - card.ability.extra.value_mod = {} - card.ability.extra.cond_value = {} - local values = {} - local contexts = { - "open_booster", - "buying_card", - "selling_self", - "selling_card", - "reroll_shop", - "ending_shop", - "skip_blind", - "skipping_booster", - "playing_card_added", - "first_hand_drawn", - "setting_blind", - "remove_playing_cards", - "using_consumeable", - "debuffed_hand", - "pre_discard", - "discard", - "end_of_round", - "individual_play", - "individual_hand_score", - "individual_hand_end", - "repetition_play", - "repetition_hand", - "other_joker", - "before", - "after", - "joker_main", - } - local stats = { - plus_mult = 2 + pseudorandom("rnj_mult1") * 28, - plus_chips = 4 + pseudorandom("rnj_chips1") * 196, - x_mult = 1 + pseudorandom("rnj_mult2") * 3, - x_chips = 1 + pseudorandom("rnj_chips2") * 3, - h_size = 1 + math.floor(pseudorandom("rnj_h_size") * 3), - money = 1 + math.floor(pseudorandom("rnj_money") * 5), - } - local actions = { - make_joker = 1, - make_tarot = 1 + math.min(2, math.floor(pseudorandom("rnj_tarot") * 2)), - make_planet = 1 + math.min(2, math.floor(pseudorandom("rnj_planet") * 2)), - make_spectral = 1, - add_dollars = 1 + math.min(4, math.floor(pseudorandom("rnj_dollars") * 5)), - } - local context = pseudorandom_element(contexts, pseudoseed("rnj_context")) - values.context = context - if context == "other_joker" or context == "joker_main" then - stats.h_size = nil - stats.money = nil - end - local stat_val, stat = pseudorandom_element(stats, pseudoseed("rnj_stat")) - local act_val, act = pseudorandom_element(actions, pseudoseed("rnj_stat")) - local scale = (pseudorandom("rnj_scale") > 0.5) - local is_stat = (pseudorandom("rnj_stat") > 0.5) - if context == "other_joker" or context == "joker_main" then - is_stat = true - scale = false - end - if - ((stat == "h_size") or (stat == "money")) - and (context == "individual_play" or context == "individual_hand_score" or context == "individual_hand_end") - and is_stat - then - scale = true - end - if context == "selling_self" then - is_stat = false - scale = false - end - if is_stat then - values.value = stat_val or 0 - values.stat = stat - if - scale - or ( - (context ~= "joker_main") - and (context ~= "other_joker") - and (context ~= "individual_play") - and (context ~= "individual_hand_score") - ) - then - values.value = ((stat == "x_mult") or (stat == "x_chips")) and 1 or 0 - scale = true - if stat == "plus_mult" then - values.scale_value = pseudorandom("rnj_scaling") * 10 - elseif stat == "plus_chips" then - values.scale_value = pseudorandom("rnj_scaling") * 50 - elseif stat == "h_size" then - values.scale_value = 1 - elseif stat == "money" then - values.scale_value = pseudorandom("rnj_scaling") * 4 - else - values.scale_value = pseudorandom("rnj_scaling") - end - end - else - scale = false - values.value = act_val - values.act = act - end - if pseudorandom("rnj_stat") < 0.8 then - local conds = {} - if context == "buying_card" then - conds = { - "buy_common", - "buy_uncommon", - "tarot", - "planet", - "spectral", - "odds", - } - elseif context == "selling_card" then - conds = { - "tarot", - "planet", - "spectral", - "joker", - "odds", - } - elseif context == "playing_card_added" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "setting_blind" then - conds = { - "boss", - "non_boss", - "small", - "big", - "odds", - } - elseif context == "remove_playing_cards" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "using_consumeable" then - conds = { - "tarot", - "planet", - "spectral", - "odds", - } - elseif context == "pre_discard" then - conds = { - "first_discard", - "last_discard", - "odds", - } - elseif context == "discard" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "individual_play" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "individual_hand_score" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "individual_hand_end" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "repetition_play" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "repetition_hand" then - conds = { - "suit", - "rank", - "face", - "odds", - } - elseif context == "other_joker" then - conds = { - "uncommon", - "rare", - "odds", - } - elseif context == "before" then - conds = { - "first", - "last", - "poker_hand", - "odds", - } - elseif context == "after" then - conds = { - "first", - "last", - "poker_hand", - "odds", - } - elseif context == "joker_main" then - conds = { - "first", - "last", - "poker_hand", - "or_more", - "or_less", - "odds", - } - elseif context == "cry_payout" then - conds = { - "hands_left", - "discards_left", - } - end - if #conds > 0 then - local cond = pseudorandom_element(conds, pseudoseed("rnj_stat")) - values.cond = cond - if cond == "poker_hand" then - local none, key = pseudorandom_element(G.GAME.hands, pseudoseed("rnj_poker-hand")) - values.cond_value = localize(key, "poker_hands") - values.poker_hand = key - end - if cond == "suit" then - local suit = pseudorandom_element(SMODS.Suits, pseudoseed("rnj_suit")) - values.cond_value = localize(suit.key, "suits_singular") - values.suit = suit.key - values.color = G.C.SUITS[suit.key] - if values.color == nil then - values.color = G.C.IMPORTANT - end - end - if cond == "rank" then - local rank = pseudorandom_element(SMODS.Ranks, pseudoseed("rnj_rank")) - values.cond_value = localize(rank.key, "ranks") - values.rank = rank.id - end - if (cond == "or_more") or (cond == "or_less") then - values.cond_value = math.min(5, math.floor(pseudorandom("rnj_cards") * 6)) - end - if (cond == "hands_left") or (cond == "discards_left") then - values.cond_value = math.min(3, math.floor(pseudorandom("rnj_cards") * 4)) - end - if cond == "odds" then - values.cond_value = 2 + math.min(3, math.floor(pseudorandom("rnj_cards") * 4)) - end - end - end - local loc_txt = "" - local extra_lines = { "" } - if (context ~= "repetition_play") and (context ~= "repetition_hand") then - if values.stat then - for i, j in ipairs(G.localization.misc.rnj_loc_txts.stats[values.stat]) do - if scale and (i == 1) then - loc_txt = loc_txt .. "Gains " - end - loc_txt = loc_txt .. j - end - end - if values.act then - for i, j in ipairs(G.localization.misc.rnj_loc_txts.actions[values.act]) do - loc_txt = loc_txt .. j - end - end - else - scale = false - values.stat = nil - values.act = nil - values.value = nil - values.scale_value = nil - end - loc_txt = loc_txt .. " " - if values.context then - for i, j in ipairs(G.localization.misc.rnj_loc_txts.contexts[values.context]) do - loc_txt = loc_txt .. j - end - end - if values.context ~= "joker_main" then - loc_txt = loc_txt .. " " - end - if values.cond then - for i, j in ipairs(G.localization.misc.rnj_loc_txts.conds[values.cond]) do - loc_txt = loc_txt .. j - end - end - if scale then - for i, j in ipairs(G.localization.misc.rnj_loc_txts.stats_inactive[values.stat]) do - table.insert(extra_lines, j) - end - end - if values.act and (values.act ~= "add_dollars") then - table.insert(extra_lines, "{C:inactive}(Must have room){}") - end - local accum = 0 - local lines = { "Randomize abilities each {C:attention}Ante{}" } - local in_brace = false - local cuur_str = "" - for i = 1, string.len(loc_txt) do - local char = string.sub(loc_txt, i, i) - if char == "{" then - in_brace = true - cuur_str = cuur_str .. char - elseif char == "}" then - in_brace = false - cuur_str = cuur_str .. char - elseif char == " " and (accum >= 25) then - table.insert(lines, cuur_str) - cuur_str = "" - accum = 0 - else - if not in_brace then - accum = accum + 1 - end - cuur_str = cuur_str .. char - end - end - if string.len(cuur_str) > 0 then - table.insert(lines, cuur_str) - end - if #extra_lines > 0 then - for i, j in ipairs(extra_lines) do - table.insert(lines, j) - end - end - values.loc_txt = lines - card.ability.extra = {} - if values.value then - values.value = math.floor(values.value * 100) / 100 - card.ability.extra.value = values.value - end - if values.scale_value then - values.scale_value = math.floor(values.scale_value * 100) / 100 - card.ability.extra.value_mod = values.scale_value - end - if values.cond_value then - card.ability.extra.cond_value = values.cond_value - end - if values.color then - card.ability.extra.color = values.color - end - local text_parsed = {} - for _, line in ipairs(values.loc_txt) do - text_parsed[#text_parsed + 1] = loc_parse_string(line) - end - values.text_parsed = text_parsed - card.ability.abilities = { values } -end -function localalize_with_direct(loc_target, args, misc_cat) - if loc_target then - for _, lines in - ipairs( - args.type == "unlocks" and loc_target.unlock_parsed - or args.type == "name" and loc_target.name_parsed - or (args.type == "text" or args.type == "tutorial" or args.type == "quips") and loc_target - or loc_target.text_parsed - ) - do - local final_line = {} - for _, part in ipairs(lines) do - local assembled_string = "" - for _, subpart in ipairs(part.strings) do - assembled_string = assembled_string - .. ( - type(subpart) == "string" and subpart - or format_ui_value(args.vars[tonumber(subpart[1])]) - or "ERROR" - ) - end - local desc_scale = G.LANG.font.DESCSCALE - if G.F_MOBILE_UI then - desc_scale = desc_scale * 1.5 - end - if args.type == "name" then - final_line[#final_line + 1] = { - n = G.UIT.O, - config = { - object = DynaText({ - string = { assembled_string }, - colours = { - (part.control.V and args.vars.colours[tonumber(part.control.V)]) - or (part.control.C and loc_colour(part.control.C)) - or G.C.UI.TEXT_LIGHT, - }, - bump = true, - silent = true, - pop_in = 0, - pop_in_rate = 4, - maxw = 5, - shadow = true, - y_offset = -0.6, - spacing = math.max(0, 0.32 * (17 - #assembled_string)), - scale = (0.55 - 0.004 * #assembled_string) - * (part.control.s and tonumber(part.control.s) or 1), - }), - }, - } - elseif part.control.E then - local _float, _silent, _pop_in, _bump, _spacing = nil, true, nil, nil, nil - if part.control.E == "1" then - _float = true - _silent = true - _pop_in = 0 - elseif part.control.E == "2" then - _bump = true - _spacing = 1 - end - final_line[#final_line + 1] = { - n = G.UIT.O, - config = { - object = DynaText({ - string = { assembled_string }, - colours = { - part.control.V and args.vars.colours[tonumber(part.control.V)] - or loc_colour(part.control.C or nil), - }, - float = _float, - silent = _silent, - pop_in = _pop_in, - bump = _bump, - spacing = _spacing, - scale = 0.32 * (part.control.s and tonumber(part.control.s) or 1) * desc_scale, - }), - }, - } - elseif part.control.X then - final_line[#final_line + 1] = { - n = G.UIT.C, - config = { - align = "m", - colour = loc_colour(part.control.X), - r = 0.05, - padding = 0.03, - res = 0.15, - }, - nodes = { - { - n = G.UIT.T, - config = { - text = assembled_string, - colour = loc_colour(part.control.C or nil), - scale = 0.32 * (part.control.s and tonumber(part.control.s) or 1) * desc_scale, - }, - }, - }, - } - else - final_line[#final_line + 1] = { - n = G.UIT.T, - config = { - detailed_tooltip = part.control.T - and (G.P_CENTERS[part.control.T] or G.P_TAGS[part.control.T]) - or nil, - text = assembled_string, - shadow = args.shadow, - colour = part.control.V and args.vars.colours[tonumber(part.control.V)] - or loc_colour(part.control.C or nil, args.default_col), - scale = 0.32 * (part.control.s and tonumber(part.control.s) or 1) * desc_scale, - }, - } - end - end - if args.type == "name" or args.type == "text" then - return final_line - end - args.nodes[#args.nodes + 1] = final_line - end - end -end local rnjoker = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-rnjoker Joker", --:balatrojoker: key = "rnjoker", pos = { x = 5, y = 4 }, @@ -3319,7 +3072,11 @@ local rnjoker = { or (card.ability.extra and card.ability.extra.value) or 0, card.ability.extra and card.ability.extra.cond_value or 0, - cry_prob(card.ability.cry_prob, card.ability.extra and card.ability.extra.cond_value or 0, card.ability.cry_rigged), + cry_prob( + card.ability.cry_prob, + card.ability.extra and card.ability.extra.cond_value or 0, + card.ability.cry_rigged + ), }, } if card.ability.extra and card.ability.extra.color then @@ -3522,7 +3279,7 @@ local rnjoker = { cond_passed = true end elseif j.cond == "poker_hand" then - if context.poker_hands~= nil and next(context.poker_hands[j.poker_hand]) then + if context.poker_hands ~= nil and next(context.poker_hands[j.poker_hand]) then cond_passed = true end elseif j.cond == "or_more" then @@ -3552,7 +3309,13 @@ local rnjoker = { elseif j.cond == "odds" then if pseudorandom("rnj") - < (cry_prob(card.ability.cry_prob, card.ability.extra.cond_value, card.ability.cry_rigged) / card.ability.extra.cond_value) + < ( + cry_prob( + card.ability.cry_prob, + card.ability.extra.cond_value, + card.ability.cry_rigged + ) / card.ability.extra.cond_value + ) then cond_passed = true end @@ -3575,10 +3338,13 @@ local rnjoker = { x_chips = "Xchip_mod", } local table = {} - table.message = - localize({ type = "variable", key = stats[j.stat], vars = { + table.message = localize({ + type = "variable", + key = stats[j.stat], + vars = { card.ability.extra.value, - } }) + }, + }) table[mods[j.stat]] = card.ability.extra.value table.card = card G.E_MANAGER:add_event(Event({ @@ -3686,7 +3452,8 @@ local rnjoker = { func = function() for i = 1, amount do if - G.consumeables.config.card_limit + c_mod > #G.consumeables.cards + G.consumeables.config.card_limit + c_mod + > #G.consumeables.cards then local card = create_card( "Tarot", @@ -3732,7 +3499,8 @@ local rnjoker = { func = function() for i = 1, amount do if - G.consumeables.config.card_limit + c_mod > #G.consumeables.cards + G.consumeables.config.card_limit + c_mod + > #G.consumeables.cards then local card = create_card( "Planet", @@ -3778,7 +3546,8 @@ local rnjoker = { func = function() for i = 1, amount do if - G.consumeables.config.card_limit + c_mod > #G.consumeables.cards + G.consumeables.config.card_limit + c_mod + > #G.consumeables.cards then local card = create_card( "Spectral", @@ -3829,7 +3598,13 @@ local rnjoker = { elseif j.cond == "odds" then if pseudorandom("rnj") - < (cry_prob(card.ability.cry_prob, card.ability.extra.cond_value, card.ability.cry_rigged) / card.ability.extra.cond_value) + < ( + cry_prob( + card.ability.cry_prob, + card.ability.extra.cond_value, + card.ability.cry_rigged + ) / card.ability.extra.cond_value + ) then cond_passed = true end @@ -3899,7 +3674,7 @@ local rnjoker = { cond_passed = true end elseif j.cond == "poker_hand" then - if context.poker_hands~= nil and next(context.poker_hands[j.poker_hand]) then + if context.poker_hands ~= nil and next(context.poker_hands[j.poker_hand]) then cond_passed = true end elseif j.cond == "or_more" then @@ -3913,7 +3688,13 @@ local rnjoker = { elseif j.cond == "odds" then if pseudorandom("rnj") - < (cry_prob(card.ability.cry_prob, card.ability.extra.cond_value, card.ability.cry_rigged) / card.ability.extra.cond_value) + < ( + cry_prob( + card.ability.cry_prob, + card.ability.extra.cond_value, + card.ability.cry_rigged + ) / card.ability.extra.cond_value + ) then cond_passed = true end @@ -4054,18 +3835,517 @@ local rnjoker = { atlas = "atlastwo", cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, + init = function(self) + function rnjoker_randomize(card) + card.ability.abilities = {} + card.ability.extra = {} + card.ability.extra.value = {} + card.ability.extra.value_mod = {} + card.ability.extra.cond_value = {} + local values = {} + local contexts = { + "open_booster", + "buying_card", + "selling_self", + "selling_card", + "reroll_shop", + "ending_shop", + "skip_blind", + "skipping_booster", + "playing_card_added", + "first_hand_drawn", + "setting_blind", + "remove_playing_cards", + "using_consumeable", + "debuffed_hand", + "pre_discard", + "discard", + "end_of_round", + "individual_play", + "individual_hand_score", + "individual_hand_end", + "repetition_play", + "repetition_hand", + "other_joker", + "before", + "after", + "joker_main", + } + local stats = { + plus_mult = 2 + pseudorandom("rnj_mult1") * 28, + plus_chips = 4 + pseudorandom("rnj_chips1") * 196, + x_mult = 1 + pseudorandom("rnj_mult2") * 3, + x_chips = 1 + pseudorandom("rnj_chips2") * 3, + h_size = 1 + math.floor(pseudorandom("rnj_h_size") * 3), + money = 1 + math.floor(pseudorandom("rnj_money") * 5), + } + local actions = { + make_joker = 1, + make_tarot = 1 + math.min(2, math.floor(pseudorandom("rnj_tarot") * 2)), + make_planet = 1 + math.min(2, math.floor(pseudorandom("rnj_planet") * 2)), + make_spectral = 1, + add_dollars = 1 + math.min(4, math.floor(pseudorandom("rnj_dollars") * 5)), + } + local context = pseudorandom_element(contexts, pseudoseed("rnj_context")) + values.context = context + if context == "other_joker" or context == "joker_main" then + stats.h_size = nil + stats.money = nil + end + local stat_val, stat = pseudorandom_element(stats, pseudoseed("rnj_stat")) + local act_val, act = pseudorandom_element(actions, pseudoseed("rnj_stat")) + local scale = (pseudorandom("rnj_scale") > 0.5) + local is_stat = (pseudorandom("rnj_stat") > 0.5) + if context == "other_joker" or context == "joker_main" then + is_stat = true + scale = false + end + if + ((stat == "h_size") or (stat == "money")) + and (context == "individual_play" or context == "individual_hand_score" or context == "individual_hand_end") + and is_stat + then + scale = true + end + if context == "selling_self" then + is_stat = false + scale = false + end + if is_stat then + values.value = stat_val or 0 + values.stat = stat + if + scale + or ( + (context ~= "joker_main") + and (context ~= "other_joker") + and (context ~= "individual_play") + and (context ~= "individual_hand_score") + ) + then + values.value = ((stat == "x_mult") or (stat == "x_chips")) and 1 or 0 + scale = true + if stat == "plus_mult" then + values.scale_value = pseudorandom("rnj_scaling") * 10 + elseif stat == "plus_chips" then + values.scale_value = pseudorandom("rnj_scaling") * 50 + elseif stat == "h_size" then + values.scale_value = 1 + elseif stat == "money" then + values.scale_value = pseudorandom("rnj_scaling") * 4 + else + values.scale_value = pseudorandom("rnj_scaling") + end + end + else + scale = false + values.value = act_val + values.act = act + end + if pseudorandom("rnj_stat") < 0.8 then + local conds = {} + if context == "buying_card" then + conds = { + "buy_common", + "buy_uncommon", + "tarot", + "planet", + "spectral", + "odds", + } + elseif context == "selling_card" then + conds = { + "tarot", + "planet", + "spectral", + "joker", + "odds", + } + elseif context == "playing_card_added" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "setting_blind" then + conds = { + "boss", + "non_boss", + "small", + "big", + "odds", + } + elseif context == "remove_playing_cards" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "using_consumeable" then + conds = { + "tarot", + "planet", + "spectral", + "odds", + } + elseif context == "pre_discard" then + conds = { + "first_discard", + "last_discard", + "odds", + } + elseif context == "discard" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "individual_play" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "individual_hand_score" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "individual_hand_end" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "repetition_play" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "repetition_hand" then + conds = { + "suit", + "rank", + "face", + "odds", + } + elseif context == "other_joker" then + conds = { + "uncommon", + "rare", + "odds", + } + elseif context == "before" then + conds = { + "first", + "last", + "poker_hand", + "odds", + } + elseif context == "after" then + conds = { + "first", + "last", + "poker_hand", + "odds", + } + elseif context == "joker_main" then + conds = { + "first", + "last", + "poker_hand", + "or_more", + "or_less", + "odds", + } + elseif context == "cry_payout" then + conds = { + "hands_left", + "discards_left", + } + end + if #conds > 0 then + local cond = pseudorandom_element(conds, pseudoseed("rnj_stat")) + values.cond = cond + if cond == "poker_hand" then + local none, key = pseudorandom_element(G.GAME.hands, pseudoseed("rnj_poker-hand")) + values.cond_value = localize(key, "poker_hands") + values.poker_hand = key + end + if cond == "suit" then + local suit = pseudorandom_element(SMODS.Suits, pseudoseed("rnj_suit")) + values.cond_value = localize(suit.key, "suits_singular") + values.suit = suit.key + values.color = G.C.SUITS[suit.key] + if values.color == nil then + values.color = G.C.IMPORTANT + end + end + if cond == "rank" then + local rank = pseudorandom_element(SMODS.Ranks, pseudoseed("rnj_rank")) + values.cond_value = localize(rank.key, "ranks") + values.rank = rank.id + end + if (cond == "or_more") or (cond == "or_less") then + values.cond_value = math.min(5, math.floor(pseudorandom("rnj_cards") * 6)) + end + if (cond == "hands_left") or (cond == "discards_left") then + values.cond_value = math.min(3, math.floor(pseudorandom("rnj_cards") * 4)) + end + if cond == "odds" then + values.cond_value = 2 + math.min(3, math.floor(pseudorandom("rnj_cards") * 4)) + end + end + end + local loc_txt = "" + local extra_lines = { "" } + if (context ~= "repetition_play") and (context ~= "repetition_hand") then + if values.stat then + for i, j in ipairs(G.localization.misc.rnj_loc_txts.stats[values.stat]) do + if scale and (i == 1) then + loc_txt = loc_txt .. "Gains " + end + loc_txt = loc_txt .. j + end + end + if values.act then + for i, j in ipairs(G.localization.misc.rnj_loc_txts.actions[values.act]) do + loc_txt = loc_txt .. j + end + end + else + scale = false + values.stat = nil + values.act = nil + values.value = nil + values.scale_value = nil + end + loc_txt = loc_txt .. " " + if values.context then + for i, j in ipairs(G.localization.misc.rnj_loc_txts.contexts[values.context]) do + loc_txt = loc_txt .. j + end + end + if values.context ~= "joker_main" then + loc_txt = loc_txt .. " " + end + if values.cond then + for i, j in ipairs(G.localization.misc.rnj_loc_txts.conds[values.cond]) do + loc_txt = loc_txt .. j + end + end + if scale then + for i, j in ipairs(G.localization.misc.rnj_loc_txts.stats_inactive[values.stat]) do + table.insert(extra_lines, j) + end + end + if values.act and (values.act ~= "add_dollars") then + table.insert(extra_lines, "{C:inactive}(Must have room){}") + end + local accum = 0 + local lines = { "Randomize abilities each {C:attention}Ante{}" } + local in_brace = false + local cuur_str = "" + for i = 1, string.len(loc_txt) do + local char = string.sub(loc_txt, i, i) + if char == "{" then + in_brace = true + cuur_str = cuur_str .. char + elseif char == "}" then + in_brace = false + cuur_str = cuur_str .. char + elseif char == " " and (accum >= 25) then + table.insert(lines, cuur_str) + cuur_str = "" + accum = 0 + else + if not in_brace then + accum = accum + 1 + end + cuur_str = cuur_str .. char + end + end + if string.len(cuur_str) > 0 then + table.insert(lines, cuur_str) + end + if #extra_lines > 0 then + for i, j in ipairs(extra_lines) do + table.insert(lines, j) + end + end + values.loc_txt = lines + card.ability.extra = {} + if values.value then + values.value = math.floor(values.value * 100) / 100 + card.ability.extra.value = values.value + end + if values.scale_value then + values.scale_value = math.floor(values.scale_value * 100) / 100 + card.ability.extra.value_mod = values.scale_value + end + if values.cond_value then + card.ability.extra.cond_value = values.cond_value + end + if values.color then + card.ability.extra.color = values.color + end + local text_parsed = {} + for _, line in ipairs(values.loc_txt) do + text_parsed[#text_parsed + 1] = loc_parse_string(line) + end + values.text_parsed = text_parsed + card.ability.abilities = { values } + end + function localalize_with_direct(loc_target, args, misc_cat) + if loc_target then + for _, lines in + ipairs( + args.type == "unlocks" and loc_target.unlock_parsed + or args.type == "name" and loc_target.name_parsed + or (args.type == "text" or args.type == "tutorial" or args.type == "quips") and loc_target + or loc_target.text_parsed + ) + do + local final_line = {} + for _, part in ipairs(lines) do + local assembled_string = "" + for _, subpart in ipairs(part.strings) do + assembled_string = assembled_string + .. ( + type(subpart) == "string" and subpart + or format_ui_value(args.vars[tonumber(subpart[1])]) + or "ERROR" + ) + end + local desc_scale = G.LANG.font.DESCSCALE + if G.F_MOBILE_UI then + desc_scale = desc_scale * 1.5 + end + if args.type == "name" then + final_line[#final_line + 1] = { + n = G.UIT.O, + config = { + object = DynaText({ + string = { assembled_string }, + colours = { + (part.control.V and args.vars.colours[tonumber(part.control.V)]) + or (part.control.C and loc_colour(part.control.C)) + or G.C.UI.TEXT_LIGHT, + }, + bump = true, + silent = true, + pop_in = 0, + pop_in_rate = 4, + maxw = 5, + shadow = true, + y_offset = -0.6, + spacing = math.max(0, 0.32 * (17 - #assembled_string)), + scale = (0.55 - 0.004 * #assembled_string) + * (part.control.s and tonumber(part.control.s) or 1), + }), + }, + } + elseif part.control.E then + local _float, _silent, _pop_in, _bump, _spacing = nil, true, nil, nil, nil + if part.control.E == "1" then + _float = true + _silent = true + _pop_in = 0 + elseif part.control.E == "2" then + _bump = true + _spacing = 1 + end + final_line[#final_line + 1] = { + n = G.UIT.O, + config = { + object = DynaText({ + string = { assembled_string }, + colours = { + part.control.V and args.vars.colours[tonumber(part.control.V)] + or loc_colour(part.control.C or nil), + }, + float = _float, + silent = _silent, + pop_in = _pop_in, + bump = _bump, + spacing = _spacing, + scale = 0.32 * (part.control.s and tonumber(part.control.s) or 1) * desc_scale, + }), + }, + } + elseif part.control.X then + final_line[#final_line + 1] = { + n = G.UIT.C, + config = { + align = "m", + colour = loc_colour(part.control.X), + r = 0.05, + padding = 0.03, + res = 0.15, + }, + nodes = { + { + n = G.UIT.T, + config = { + text = assembled_string, + colour = loc_colour(part.control.C or nil), + scale = 0.32 + * (part.control.s and tonumber(part.control.s) or 1) + * desc_scale, + }, + }, + }, + } + else + final_line[#final_line + 1] = { + n = G.UIT.T, + config = { + detailed_tooltip = part.control.T + and (G.P_CENTERS[part.control.T] or G.P_TAGS[part.control.T]) + or nil, + text = assembled_string, + shadow = args.shadow, + colour = part.control.V and args.vars.colours[tonumber(part.control.V)] + or loc_colour(part.control.C or nil, args.default_col), + scale = 0.32 * (part.control.s and tonumber(part.control.s) or 1) * desc_scale, + }, + } + end + end + if args.type == "name" or args.type == "text" then + return final_line + end + args.nodes[#args.nodes + 1] = final_line + end + end + end + end, } local duos = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-duos", key = "duos", order = 90, @@ -4079,13 +4359,11 @@ local duos = { cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["Two Pair"]) or context.poker_hands~= nil and next(context.poker_hands["Full House"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if + context.poker_hands ~= nil and next(context.poker_hands["Two Pair"]) + or context.poker_hands ~= nil and next(context.poker_hands["Full House"]) + then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4096,20 +4374,25 @@ local duos = { end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, - unlock_condition = {type = 'win_no_hand',extra = 'Two Pair'}, + unlock_condition = { type = "win_no_hand", extra = "Two Pair" }, } local home = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-home", key = "home", order = 91, @@ -4123,13 +4406,8 @@ local home = { cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["Full House"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["Full House"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4140,20 +4418,25 @@ local home = { end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, - unlock_condition = {type = 'win_no_hand',extra = 'Full House'}, + unlock_condition = { type = "win_no_hand", extra = "Full House" }, } local nuts = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-nuts", key = "nuts", order = 92, @@ -4167,13 +4450,8 @@ local nuts = { cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands ~= nil and next(context.poker_hands["Straight Flush"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["Straight Flush"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4184,20 +4462,25 @@ local nuts = { end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, - unlock_condition = {type = 'win_no_hand',extra = 'Straight Flush'}, + unlock_condition = { type = "win_no_hand", extra = "Straight Flush" }, } local quintet = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-quintet", key = "quintet", order = 93, @@ -4211,13 +4494,8 @@ local quintet = { cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["Five of a Kind"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["Five of a Kind"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4233,23 +4511,30 @@ local quintet = { return false end, check_for_unlock = function(self, args) - if args.type == 'cry_win_with_hand' and args.hand == 'Five of a Kind' then return true end + if args.type == "cry_win_with_hand" and args.hand == "Five of a Kind" then + return true + end end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, } local unity = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-unity", key = "unity", order = 94, @@ -4263,13 +4548,8 @@ local unity = { cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["Flush House"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["Flush House"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4285,23 +4565,30 @@ local unity = { return false end, check_for_unlock = function(self, args) - if args.type == 'cry_win_with_hand' and args.hand == 'Flush House' then return true end + if args.type == "cry_win_with_hand" and args.hand == "Flush House" then + return true + end end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, } local swarm = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-swarm", key = "swarm", order = 95, @@ -4315,13 +4602,8 @@ local swarm = { cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["Flush Five"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["Flush Five"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4337,43 +4619,47 @@ local swarm = { return false end, check_for_unlock = function(self, args) - if args.type == 'cry_win_with_hand' and args.hand == 'Flush Five' then return true end + if args.type == "cry_win_with_hand" and args.hand == "Flush Five" then + return true + end end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, } local stronghold = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_asteroidbelt", + }, + }, name = "cry-stronghold", key = "stronghold", order = 119, pos = { x = 8, y = 4 }, config = { Xmult = 5, type = "cry_Bulwark" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.x_mult, localize("cry_hand_bulwark") } } + return { vars = { card.ability.x_mult, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 3, cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["cry_Bulwark"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["cry_Bulwark"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4389,32 +4675,36 @@ local stronghold = { return false end, check_for_unlock = function(self, args) - if args.type == 'cry_win_with_hand' and args.hand == 'cry_Bulwark' then return true end + if args.type == "cry_win_with_hand" and args.hand == "cry_Bulwark" then + return true + end end, unlocked = false, } local wtf = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_void", + }, + }, name = "cry-wtf", key = "wtf", order = 120, pos = { x = 7, y = 1 }, config = { Xmult = 10, type = "cry_Clusterfuck" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.x_mult, localize("cry_hand_clusterfuck") } } + return { vars = { card.ability.x_mult, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 3, cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["cry_Clusterfuck"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["cry_Clusterfuck"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4430,32 +4720,36 @@ local wtf = { return false end, check_for_unlock = function(self, args) - if args.type == 'cry_win_with_hand' and args.hand == 'cry_Clusterfuck' then return true end + if args.type == "cry_win_with_hand" and args.hand == "cry_Clusterfuck" then + return true + end end, unlocked = false, } local clash = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_marsmoons", + }, + }, name = "cry-clash", key = "clash", order = 121, pos = { x = 8, y = 1 }, config = { Xmult = 12, type = "cry_UltPair" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.x_mult, localize("cry_hand_ultpair") } } + return { vars = { card.ability.x_mult, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 3, cost = 8, blueprint_compat = true, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (to_big(card.ability.x_mult) > to_big(1)) - and not context.before - and not context.after - then - if context.poker_hands~= nil and next(context.poker_hands["cry_UltPair"]) then + if context.joker_main and (to_big(card.ability.x_mult) > to_big(1)) then + if context.poker_hands ~= nil and next(context.poker_hands["cry_UltPair"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4471,16 +4765,23 @@ local clash = { return false end, check_for_unlock = function(self, args) - if args.type == 'cry_win_with_hand' and args.hand == 'cry_UltPair' then return true end + if args.type == "cry_win_with_hand" and args.hand == "cry_UltPair" then + return true + end end, unlocked = false, } local filler = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-filler", key = "filler", pos = { x = 0, y = 1 }, - pools = {["Meme"] = true}, + pools = { ["Meme"] = true }, config = { Xmult = 1.00000000000003, type = "High Card" }, loc_vars = function(self, info_queue, card) return { vars = { card.ability.x_mult, localize(card.ability.type, "poker_hands") } } @@ -4491,7 +4792,7 @@ local filler = { cost = 1, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["High Card"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["High Card"]) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.x_mult } }), colour = G.C.RED, @@ -4501,20 +4802,25 @@ local filler = { end, cry_credits = { idea = { - "Mathguy" + "Mathguy", }, art = { - "Mathguy" + "Mathguy", }, code = { - "Mathguy" - } + "Mathguy", + }, }, unlocked = false, - unlock_condition = {type = 'win_no_hand',extra = 'High Card'}, + unlock_condition = { type = "win_no_hand", extra = "High Card" }, } local giggly = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Giggly Joker", key = "giggly", effect = "Cry Type Mult", @@ -4529,7 +4835,7 @@ local giggly = { cost = 1, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["High Card"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["High Card"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4539,18 +4845,23 @@ local giggly = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local nutty = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Nutty Joker", key = "nutty", effect = "Cry Type Mult", @@ -4565,7 +4876,7 @@ local nutty = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Four of a Kind"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Four of a Kind"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4575,18 +4886,23 @@ local nutty = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local manic = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Manic Joker", key = "manic", effect = "Cry Type Mult", @@ -4601,7 +4917,7 @@ local manic = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Straight Flush"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Straight Flush"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4611,18 +4927,23 @@ local manic = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local silly = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Silly Joker", key = "silly", pos = { x = 3, y = 5 }, @@ -4637,7 +4958,7 @@ local silly = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Full House"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Full House"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4647,18 +4968,23 @@ local silly = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local delirious = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Delirious Joker", key = "delirious", effect = "Cry Type Mult", @@ -4673,7 +4999,7 @@ local delirious = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Five of a Kind"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Five of a Kind"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4689,18 +5015,23 @@ local delirious = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local wacky = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Wacky Joker", key = "wacky", pos = { x = 5, y = 5 }, @@ -4715,7 +5046,7 @@ local wacky = { effect = "Cry Type Mult", blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Flush House"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Flush House"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4731,18 +5062,23 @@ local wacky = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local kooky = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Kooky Joker", key = "kooky", pos = { x = 6, y = 5 }, @@ -4757,7 +5093,7 @@ local kooky = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Flush Five"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Flush Five"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4773,26 +5109,32 @@ local kooky = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } - local bonkers = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_asteroidbelt", + }, + }, name = "cry-Bonkers Joker", key = "bonkers", pos = { x = 8, y = 5 }, order = 113, config = { t_mult = 20, type = "cry_Bulwark" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize("cry_hand_bulwark") } } + return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 1, @@ -4800,7 +5142,7 @@ local bonkers = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["cry_Bulwark"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["cry_Bulwark"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4815,16 +5157,22 @@ local bonkers = { return false end, } - local fuckedup = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_void", + }, + }, name = "cry-Fucked-Up Joker", key = "fuckedup", pos = { x = 7, y = 2 }, order = 114, config = { t_mult = 37, type = "cry_Clusterfuck" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize("cry_hand_clusterfuck") } } + return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 1, @@ -4832,7 +5180,7 @@ local fuckedup = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["cry_Clusterfuck"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["cry_Clusterfuck"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4847,16 +5195,22 @@ local fuckedup = { return false end, } - local foolhardy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_marsmoons", + }, + }, name = "cry-Foolhardy Joker", key = "foolhardy", pos = { x = 8, y = 2 }, order = 115, config = { t_mult = 42, type = "cry_UltPair" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_mult, localize("cry_hand_ultpair") } } + return { vars = { card.ability.t_mult, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 1, @@ -4864,7 +5218,7 @@ local foolhardy = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["cry_UltPair"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["cry_UltPair"]) then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.t_mult } }), colour = G.C.RED, @@ -4879,9 +5233,13 @@ local foolhardy = { return false end, } - local dubious = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Dubious Joker", key = "dubious", pos = { x = 0, y = 6 }, @@ -4896,7 +5254,7 @@ local dubious = { cost = 1, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["High Card"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["High Card"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -4906,18 +5264,23 @@ local dubious = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local shrewd = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Shrewd Joker", key = "shrewd", pos = { x = 1, y = 6 }, @@ -4932,7 +5295,7 @@ local shrewd = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Four of a Kind"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Four of a Kind"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -4942,18 +5305,23 @@ local shrewd = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local tricksy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Tricksy Joker", key = "tricksy", effect = "Cry Type Chips", @@ -4968,7 +5336,7 @@ local tricksy = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Straight Flush"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Straight Flush"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -4978,18 +5346,23 @@ local tricksy = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local foxy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Foxy Joker", key = "foxy", pos = { x = 3, y = 6 }, @@ -5004,7 +5377,7 @@ local foxy = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Full House"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Full House"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5014,18 +5387,23 @@ local foxy = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local savvy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Savvy Joker", key = "savvy", pos = { x = 4, y = 6 }, @@ -5040,7 +5418,7 @@ local savvy = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Five of a Kind"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Five of a Kind"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5056,18 +5434,23 @@ local savvy = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local subtle = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Subtle Joker", key = "subtle", pos = { x = 5, y = 6 }, @@ -5082,7 +5465,7 @@ local subtle = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Flush House"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Flush House"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5098,18 +5481,23 @@ local subtle = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local discreet = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Discreet Joker", key = "discreet", pos = { x = 6, y = 6 }, @@ -5124,7 +5512,7 @@ local discreet = { cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["Flush Five"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["Flush Five"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5140,18 +5528,25 @@ local discreet = { end, cry_credits = { idea = { - "Luigicat11" + "Luigicat11", }, art = { - "Luigicat11" + "Luigicat11", }, code = { - "Math" - } + "Math", + }, }, } local adroit = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_asteroidbelt", + }, + }, name = "cry-Adroit Joker", key = "adroit", pos = { x = 7, y = 4 }, @@ -5159,14 +5554,14 @@ local adroit = { order = 116, config = { t_chips = 170, type = "cry_Bulwark" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize("cry_hand_bulwark") } } + return { vars = { card.ability.t_chips, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 1, cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["cry_Bulwark"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["cry_Bulwark"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5183,6 +5578,13 @@ local adroit = { } local penetrating = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_void", + }, + }, name = "cry-Penetrating Joker", key = "penetrating", pos = { x = 7, y = 3 }, @@ -5190,14 +5592,14 @@ local penetrating = { order = 117, config = { t_chips = 270, type = "cry_Clusterfuck" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize("cry_hand_clusterfuck") } } + return { vars = { card.ability.t_chips, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 1, cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["cry_Clusterfuck"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["cry_Clusterfuck"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5214,6 +5616,13 @@ local penetrating = { } local treacherous = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + "c_cry_marsmoons", + }, + }, name = "cry-Treacherous Joker", key = "treacherous", pos = { x = 8, y = 3 }, @@ -5221,14 +5630,14 @@ local treacherous = { order = 118, config = { t_chips = 300, type = "cry_UltPair" }, loc_vars = function(self, info_queue, card) - return { vars = { card.ability.t_chips, localize("cry_hand_ultpair") } } + return { vars = { card.ability.t_chips, localize(card.ability.type, "poker_hands") } } end, atlas = "atlasthree", rarity = 1, cost = 4, blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and not context.before and not context.after and context.poker_hands and next(context.poker_hands["cry_UltPair"]) then + if context.joker_main and context.poker_hands and next(context.poker_hands["cry_UltPair"]) then return { message = localize({ type = "variable", key = "a_chips", vars = { card.ability.t_chips } }), colour = G.C.BLUE, @@ -5245,6 +5654,11 @@ local treacherous = { } local coin = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-coin", key = "coin", pos = { x = 0, y = 2 }, @@ -5274,18 +5688,23 @@ local coin = { end, cry_credits = { idea = { - "Squiddy" + "Squiddy", }, art = { - "Timetoexplode" + "Timetoexplode", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local wheelhope = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-wheelhope", key = "wheelhope", pos = { x = 1, y = 1 }, @@ -5301,12 +5720,7 @@ local wheelhope = { end, atlas = "atlasthree", calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (card.ability.extra.x_mult > 1) - and not context.before - and not context.after - then + if context.joker_main and (card.ability.extra.x_mult > 1) then return { message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }), Xmult_mod = card.ability.extra.x_mult, @@ -5332,18 +5746,23 @@ local wheelhope = { end, cry_credits = { idea = { - "Linus Goof Balls" + "Linus Goof Balls", }, art = { - "Linus Good Balls" + "Linus Good Balls", }, code = { - "Toneblock" - } + "Toneblock", + }, }, } local oldblueprint = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-oldblueprint", key = "oldblueprint", pos = { x = 2, y = 1 }, @@ -5354,26 +5773,55 @@ local oldblueprint = { update = function(self, card, front) if G.STAGE == G.STAGES.RUN then for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i+1] end - end + if G.jokers.cards[i] == card then + other_joker = G.jokers.cards[i + 1] + end + end if other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat then - card.ability.blueprint_compat = 'compatible' - else - card.ability.blueprint_compat = 'incompatible' - end + card.ability.blueprint_compat = "compatible" + else + card.ability.blueprint_compat = "incompatible" + end end end, loc_vars = function(self, info_queue, card) - card.ability.blueprint_compat_ui = card.ability.blueprint_compat_ui or ''; card.ability.blueprint_compat_check = nil - return { - vars = { cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), card.ability.extra.odds }, + card.ability.blueprint_compat_ui = card.ability.blueprint_compat_ui or "" + card.ability.blueprint_compat_check = nil + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged), + card.ability.extra.odds, + }, main_end = (card.area and card.area == G.jokers) and { - {n=G.UIT.C, config={align = "bm", minh = 0.4}, nodes={ - {n=G.UIT.C, config={ref_table = card, align = "m", colour = G.C.JOKER_GREY, r = 0.05, padding = 0.06, func = 'blueprint_compat'}, nodes={ - {n=G.UIT.T, config={ref_table = card.ability, ref_value = 'blueprint_compat_ui',colour = G.C.UI.TEXT_LIGHT, scale = 0.32*0.8}}, - }} - }} - } or nil + { + n = G.UIT.C, + config = { align = "bm", minh = 0.4 }, + nodes = { + { + n = G.UIT.C, + config = { + ref_table = card, + align = "m", + colour = G.C.JOKER_GREY, + r = 0.05, + padding = 0.06, + func = "blueprint_compat", + }, + nodes = { + { + n = G.UIT.T, + config = { + ref_table = card.ability, + ref_value = "blueprint_compat_ui", + colour = G.C.UI.TEXT_LIGHT, + scale = 0.32 * 0.8, + }, + }, + }, + }, + }, + }, + } or nil, } end, blueprint_compat = true, @@ -5387,7 +5835,11 @@ local oldblueprint = { and not context.blueprint and not context.retrigger_joker then - if pseudorandom("oldblueprint") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then + if + pseudorandom("oldblueprint") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) + / card.ability.extra.odds + then G.E_MANAGER:add_event(Event({ func = function() play_sound("tarot1") @@ -5403,7 +5855,9 @@ local oldblueprint = { G.jokers:remove_card(card) card:remove() card = nil - if G.P_CENTERS["j_blueprint"].unlocked then G.GAME.oldbpfactor = (G.GAME.oldbpfactor or 1)*3 end + if G.P_CENTERS["j_blueprint"].unlocked then + G.GAME.oldbpfactor = (G.GAME.oldbpfactor or 1) * 3 + end return true end, })) @@ -5444,12 +5898,20 @@ local oldblueprint = { end local other_joker_ret, trig = other_joker:calculate_joker(context) + local eff_card = context.blueprint_card or card + + context.blueprint = nil + context.blueprint_card = nil + + if other_joker_ret == true then + return other_joker_ret + end if other_joker_ret or trig then if not other_joker_ret then other_joker_ret = {} end - other_joker_ret.card = context.blueprint_card or card - other_joker_ret.colour = G.C.BLUE + other_joker_ret.card = eff_card + other_joker_ret.colour = darken(G.C.BLUE, 0.3) other_joker_ret.no_callback = true return other_joker_ret end @@ -5457,18 +5919,23 @@ local oldblueprint = { end, cry_credits = { idea = { - "Linus Goof Balls" + "Linus Goof Balls", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Math" - } + "Math", + }, }, } local night = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-night", key = "night", config = { extra = { mult = 3 } }, @@ -5483,20 +5950,20 @@ local night = { return { vars = { center.ability.extra.mult } } end, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and not context.before - and not context.after - and G.GAME.current_round.hands_left == 0 - then + if context.joker_main and G.GAME.current_round.hands_left == 0 then if card.ability.extra.mult > 1 then return { - message = localize{type='variable',key='a_powmult',vars={card.ability.extra.mult}}, + message = localize({ type = "variable", key = "a_powmult", vars = { card.ability.extra.mult } }), Emult_mod = card.ability.extra.mult, colour = G.C.DARK_EDITION, } end - elseif context.cardarea == G.jokers and context.after and not context.blueprint and not context.retrigger_joker then + elseif + context.cardarea == G.jokers + and context.after + and not context.blueprint + and not context.retrigger_joker + then if G.GAME.current_round.hands_left <= 0 then G.E_MANAGER:add_event(Event({ func = function() @@ -5524,30 +5991,39 @@ local night = { colour = G.C.FILTER, } elseif G.GAME.current_round.hands_left <= 1 then - local eval = function(card) return G.GAME.current_round.hands_left <= 1 and not G.RESET_JIGGLES end - juice_card_until(card, eval, true) + local eval = function(card) + return G.GAME.current_round.hands_left <= 1 and not G.RESET_JIGGLES + end + juice_card_until(card, eval, true) end elseif context.first_hand_drawn and not context.blueprint and not context.retrigger_joker then - if next(find_joker('cry-panopticon')) then - local eval = function(card) return G.GAME.current_round.hands_played == 0 and not G.RESET_JIGGLES end - juice_card_until(card, eval, true) + if next(find_joker("cry-panopticon")) then + local eval = function(card) + return G.GAME.current_round.hands_played == 0 and not G.RESET_JIGGLES + end + juice_card_until(card, eval, true) end end end, cry_credits = { idea = { - "Linus Goof Balls" + "Linus Goof Balls", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local busdriver = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-busdriver", key = "busdriver", config = { extra = { mult = 50, odds = 4 } }, @@ -5562,22 +6038,21 @@ local busdriver = { local oddy = math.max(1, card.ability.extra.odds) return { vars = { - ( oddy - 1/prob ), + (oddy - 1 / prob), card.ability.extra.mult, oddy, - ( 1/prob ), + (1 / prob), }, } end, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and (card.ability.extra.mult > 0) - and not context.before - and not context.after - then + if context.joker_main and (card.ability.extra.mult > 0) then local oddy = math.max(1, card.ability.extra.odds) - if pseudorandom("busdriver") < 1-(1/(cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged)*oddy)) then + if + pseudorandom("busdriver") + < 1 + - (1 / (cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) * oddy)) + then return { message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), mult_mod = card.ability.extra.mult, @@ -5594,18 +6069,24 @@ local busdriver = { end, cry_credits = { idea = { - "Linus Goof Balls" + "Linus Goof Balls", }, art = { - "Linus Goof Balls" + "Linus Goof Balls", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local translucent = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "banana", + }, + }, name = "cry-translucent Joker", key = "translucent", pos = { x = 5, y = 2 }, @@ -5645,18 +6126,23 @@ local translucent = { end, cry_credits = { idea = { - "SDM_0" + "SDM_0", }, art = { - "SDM_0" + "SDM_0", }, code = { - "SDM_0" - } + "SDM_0", + }, }, } local morse = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-morse", key = "morse", pos = { x = 5, y = 1 }, @@ -5688,18 +6174,23 @@ local morse = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local membershipcard = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-membershipcard", key = "membershipcard", config = { extra = { Xmult_mod = 0.1 } }, @@ -5714,12 +6205,7 @@ local membershipcard = { return { vars = { card.ability.extra.Xmult_mod, card.ability.extra.Xmult_mod * GLOBAL_cry_member_count } } end, calculate = function(self, card, context) - if - context.cardarea == G.jokers - and not context.before - and not context.after - and card.ability.extra.Xmult_mod * GLOBAL_cry_member_count > 1 - then + if context.joker_main and card.ability.extra.Xmult_mod * GLOBAL_cry_member_count > 1 then return { message = localize({ type = "variable", @@ -5732,18 +6218,23 @@ local membershipcard = { end, cry_credits = { idea = { - "Toneblock" + "Toneblock", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "Toneblock" - } + "Toneblock", + }, }, } local kscope = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-kscope", key = "kscope", pos = { x = 3, y = 4 }, @@ -5772,18 +6263,23 @@ local kscope = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local cryptidmoment = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry_cryptidmoment", key = "cryptidmoment", pos = { x = 6, y = 0 }, @@ -5810,18 +6306,24 @@ local cryptidmoment = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Yamper" + "Yamper", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local flipside = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "e_cry_double_sided", + }, + }, name = "cry-Flip Side", key = "flip_side", pos = { x = 3, y = 6 }, @@ -5866,18 +6368,23 @@ local flipside = { end, cry_credits = { idea = { - "Axolotus" + "Axolotus", }, art = { - "Pyrocreep" + "Pyrocreep", }, code = { - "Math" - } + "Math", + }, }, } local oldinvisible = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Old Invisible Joker", key = "oldinvisible", pos = { x = 4, y = 4 }, @@ -5891,8 +6398,12 @@ local oldinvisible = { return { vars = { center.ability.extra } } end, calculate = function(self, card, context) - if context.selling_card and context.card.ability.set == "Joker" - and not context.blueprint and not context.retrigger_joker then + if + context.selling_card + and context.card.ability.set == "Joker" + and not context.blueprint + and not context.retrigger_joker + then if card.ability.extra >= 3 then card.ability.extra = 0 local eligibleJokers = {} @@ -5904,7 +6415,8 @@ local oldinvisible = { if #eligibleJokers > 0 then G.E_MANAGER:add_event(Event({ func = function() - local card = copy_card(pseudorandom_element(eligibleJokers, pseudoseed("cry_oldinvis")), nil) + local card = + copy_card(pseudorandom_element(eligibleJokers, pseudoseed("cry_oldinvis")), nil) card:add_to_deck() G.jokers:emplace(card) return true @@ -5920,14 +6432,23 @@ local oldinvisible = { ) return nil, true else - card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_no_other_jokers')}) - end + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_no_other_jokers") } + ) + end return else card.ability.extra = card.ability.extra + 1 if card.ability.extra == 3 then - local eval = function(card) return (card.ability.extra == 3) end - juice_card_until(card, eval, true) + local eval = function(card) + return (card.ability.extra == 3) + end + juice_card_until(card, eval, true) end return { card_eval_status_text(card, "extra", nil, nil, nil, { @@ -5940,18 +6461,24 @@ local oldinvisible = { end, cry_credits = { idea = { - "LocalThunk" + "LocalThunk", }, art = { - "LocalThunk" + "LocalThunk", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local fractal = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "set_cry_poker_hand_stuff", + }, + }, name = "cry-FractalFingers", key = "fractal", pos = { x = 6, y = 4 }, @@ -5969,28 +6496,38 @@ local fractal = { end, remove_from_deck = function(self, card, from_debuff) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - card.ability.extra - if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end - G.hand:unhighlight_all() + 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, cry_credits = { idea = { - "HexaCryonic" + "HexaCryonic", }, art = { - "HexaCryonic" + "HexaCryonic", }, code = { - "HexaCryonic" - } + "HexaCryonic", + }, }, } local universe = { cry_credits = { - idea = {"Mystic Misclick"}, - art = {"spire_winder"}, - code = {"spire_winder"} + idea = { "Mystic Misclick" }, + art = { "spire_winder" }, + code = { "spire_winder" }, }, object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "e_cry_astral", + }, + }, name = "cry-universe", key = "universe", pos = { x = 8, y = 0 }, @@ -6024,7 +6561,7 @@ local universe = { return { message = localize({ type = "variable", key = "a_powmult", vars = { card.ability.extra.emult } }), Emult_mod = card.ability.extra.emult, - colour = G.C.DARK_EDITION + colour = G.C.DARK_EDITION, } end if context.individual and context.cardarea == G.play then @@ -6032,7 +6569,7 @@ local universe = { return { e_mult = card.ability.extra.emult, colour = G.C.DARK_EDITION, - card = card + card = card, } end end @@ -6053,7 +6590,7 @@ local universe = { return { e_mult = card.ability.extra.emult, colour = G.C.DARK_EDITION, - card = card + card = card, } end end @@ -6061,11 +6598,17 @@ local universe = { } local astral_bottle = { cry_credits = { - idea = {"AlexZGreat"}, - art = {"spire_winder"}, - code = {"spire_winder"} + idea = { "AlexZGreat" }, + art = { "spire_winder" }, + code = { "spire_winder" }, }, object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + "e_cry_astral", + }, + }, name = "cry-astral_bottle", key = "astral_bottle", eternal_compat = false, @@ -6091,7 +6634,7 @@ local astral_bottle = { if #jokers > 0 then card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_duplicated_ex") }) local chosen_joker = pseudorandom_element(jokers, pseudoseed("trans")) - chosen_joker:set_edition{cry_astral = true} + chosen_joker:set_edition({ cry_astral = true }) chosen_joker.ability.perishable = true -- Done manually to bypass perish compat chosen_joker.ability.perish_tally = G.GAME.perishable_rounds return nil, true @@ -6103,72 +6646,22 @@ local astral_bottle = { } local kidnap = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-kidnap", key = "kidnap", order = 23, pos = { x = 1, y = 2 }, config = { extra = { money = 1, money_mod = 3 }, - jolly = { t_mult = 8, type = "Pair" }, - zany = { t_mult = 12, type = "Three of a Kind" }, - mad = { t_mult = 10, type = "Two Pair" }, - crazy = { t_mult = 12, type = "Straight" }, - droll = { t_mult = 10, type = "Flush" }, }, rarity = 1, cost = 4, blueprint_compat = false, loc_vars = function(self, info_queue, center) - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_jolly", - specific_vars = { self.config.jolly.t_mult, localize(self.config.jolly.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_zany", - specific_vars = { self.config.zany.t_mult, localize(self.config.zany.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_mad", - specific_vars = { self.config.mad.t_mult, localize(self.config.mad.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_crazy", - specific_vars = { self.config.crazy.t_mult, localize(self.config.crazy.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_droll", - specific_vars = { self.config.droll.t_mult, localize(self.config.droll.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_sly", - specific_vars = { 50, localize(self.config.jolly.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_wily", - specific_vars = { 100, localize(self.config.zany.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_clever", - specific_vars = { 80, localize(self.config.mad.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_devious", - specific_vars = { 100, localize(self.config.crazy.type, "poker_hands") }, - } - info_queue[#info_queue + 1] = { - set = "Joker", - key = "j_crafty", - specific_vars = { 80, localize(self.config.droll.type, "poker_hands") }, - } return { vars = { center.ability.extra.money_mod, center.ability.extra.money } } end, atlas = "atlasone", @@ -6189,7 +6682,8 @@ local kidnap = { --[[ Other developers can add effect == "Boost Kidnapping" to their joker config if they want it to boost kidnapping when sold - ]]-- + ]] + -- or context.card.ability.effect == "Boost Kidnapping" or context.card:is_jolly() ) @@ -6211,18 +6705,23 @@ local kidnap = { end, cry_credits = { idea = { - "Jevonn" + "Jevonn", }, art = { - "Jevonn" + "Jevonn", }, code = { - "Jevonn" - } + "Jevonn", + }, }, } local exposed = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Exposed", key = "exposed", pos = { x = 0, y = 5 }, @@ -6237,14 +6736,14 @@ local exposed = { end, update = function(self, card, dt) if G.deck and card.added_to_deck then - for i, v in pairs (G.deck.cards) do + for i, v in pairs(G.deck.cards) do if v:is_face() then v:set_debuff(true) end end end if G.hand and card.added_to_deck then - for i, v in pairs (G.hand.cards) do + for i, v in pairs(G.hand.cards) do if v:is_face() then v:set_debuff(true) end @@ -6254,17 +6753,22 @@ local exposed = { calculate = function(self, card, context) if context.repetition and context.cardarea == G.play then if not context.other_card:is_face() then - return { - message = localize('k_again_ex'), - repetitions = card.ability.extra, - card = card - } - end + return { + message = localize("k_again_ex"), + repetitions = math.min(40, card.ability.extra), + card = card, + } + end end end, } local mask = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Mask", key = "mask", pos = { x = 1, y = 5 }, @@ -6279,14 +6783,14 @@ local mask = { end, update = function(self, card, dt) if G.deck and card.added_to_deck then - for i, v in pairs (G.deck.cards) do + for i, v in pairs(G.deck.cards) do if not v:is_face() then v:set_debuff(true) end end end if G.hand and card.added_to_deck then - for i, v in pairs (G.hand.cards) do + for i, v in pairs(G.hand.cards) do if not v:is_face() then v:set_debuff(true) end @@ -6296,17 +6800,22 @@ local mask = { calculate = function(self, card, context) if context.repetition and context.cardarea == G.play then if context.other_card:is_face() then - return { - message = localize('k_again_ex'), - repetitions = card.ability.extra, - card = card - } - end + return { + message = localize("k_again_ex"), + repetitions = math.min(40, card.ability.extra), + card = card, + } + end end end, } local tropical_smoothie = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Tropical Smoothie", key = "tropical_smoothie", pos = { x = 2, y = 5 }, @@ -6347,33 +6856,38 @@ local tropical_smoothie = { } local pumpkin = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, key = "pumpkin", pos = { x = 0, y = 6 }, rarity = 3, cost = 10, atlas = "atlastwo", order = 131, - config = {extra = {scoreReq = 50, enabled = true}}, + config = { extra = { scoreReq = 50, enabled = true } }, blueprint_compat = true, eternal_compat = false, perishable_compat = false, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.scoreReq} } + return { vars = { center.ability.extra.scoreReq } } end, calculate = function(self, card, context) - if context.game_over and G.GAME.chips/G.GAME.blind.chips >= to_big(card.ability.extra.scoreReq/100) then + if context.game_over and G.GAME.chips / G.GAME.blind.chips >= to_big(card.ability.extra.scoreReq / 100) then G.E_MANAGER:add_event(Event({ func = function() G.hand_text_area.blind_chips:juice_up() G.hand_text_area.game_chips:juice_up() - play_sound('tarot1') + play_sound("tarot1") return true - end - })) + end, + })) return { - message = localize('k_saved_ex'), + message = localize("k_saved_ex"), saved = true, - colour = G.C.RED + colour = G.C.RED, } end @@ -6382,97 +6896,107 @@ local pumpkin = { end if context.cry_start_dissolving and context.card == card and card.ability.extra.enabled == true then - local newcard = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - 'j_cry_carved_pumpkin' - ) + local newcard = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_carved_pumpkin") newcard:add_to_deck() G.jokers:emplace(newcard) end end, cry_credits = { idea = { - "Squiddy" + "Squiddy", }, art = { - "B" + "B", }, code = { - "wawa person" - } + "wawa person", + }, }, } local carved_pumpkin = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, key = "carved_pumpkin", pos = { x = 1, y = 6 }, rarity = 3, cost = 10, atlas = "atlastwo", order = 132, - config = {extra = {disables = 5}}, + config = { extra = { disables = 5 } }, blueprint_compat = true, eternal_compat = false, perishable_compat = false, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.disables} } + return { vars = { center.ability.extra.disables } } end, calculate = function(self, card, context) if context.end_of_round and not context.blueprint and not context.individual and not context.repetition then - if G.GAME.blind:get_type() == 'Boss' then - card.ability.extra.disables = card.ability.extra.disables - 1 + if G.GAME.blind:get_type() == "Boss" then + card.ability.extra.disables = card.ability.extra.disables - 1 card:juice_up() - if card.ability.extra.disables <= 0 then - card:start_dissolve() - end - end - end - if context.setting_blind and G.GAME.blind:get_type() == 'Boss' and not G.GAME.blind.disabled then - card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('ph_boss_disabled')}) + if card.ability.extra.disables <= 0 then + card:start_dissolve() + end + end + end + if context.setting_blind and G.GAME.blind:get_type() == "Boss" and not G.GAME.blind.disabled then + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("ph_boss_disabled") } + ) G.GAME.blind:disable() end end, - in_pool = function(self,wawa,wawa2) - return false - end, + in_pool = function(self, wawa, wawa2) + return false + end, cry_credits = { idea = { - "Squiddy" + "Squiddy", }, art = { - "B" + "B", }, code = { - "wawa person" - } + "wawa person", + }, }, } local cookie = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, key = "clicked_cookie", pos = { x = 2, y = 6 }, rarity = 1, cost = 4, atlas = "atlastwo", order = 133, - config = {extra = {chips = 150, chip_mod = 1}}, + config = { extra = { chips = 150, chip_mod = 1 } }, blueprint_compat = true, eternal_compat = false, + perishable_compat = false, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.chips, center.ability.extra.chip_mod} } + return { vars = { center.ability.extra.chips, center.ability.extra.chip_mod } } end, calculate = function(self, card, context) if context.joker_main then - return{ + return { card = card, chip_mod = card.ability.extra.chips, - message = '+' .. card.ability.extra.chips, - colour = G.C.CHIPS + message = "+" .. card.ability.extra.chips, + colour = G.C.CHIPS, } end if context.cry_press then @@ -6499,40 +7023,45 @@ local cookie = { end, })) card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = localize("k_eaten_ex") , colour = G.C.CHIPS } + card, + "extra", + nil, + nil, + nil, + { message = localize("k_eaten_ex"), colour = G.C.CHIPS } ) else card.ability.extra.chips = card.ability.extra.chips - card.ability.extra.chip_mod card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { message = "-" ..card.ability.extra.chip_mod , colour = G.C.CHIPS } + card, + "extra", + nil, + nil, + nil, + { message = "-" .. card.ability.extra.chip_mod, colour = G.C.CHIPS } ) end end end, cry_credits = { idea = { - "playerrWon" + "playerrWon", }, art = { - "lolxDdj" + "lolxDdj", }, code = { - "wawa person" - } + "wawa person", + }, }, } local necromancer = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Necromancer", key = "necromancer", pos = { x = 3, y = 5 }, @@ -6546,8 +7075,21 @@ local necromancer = { return { vars = { center.ability.extra } } end, calculate = function(self, card, context) - if context.selling_card and context.card.sell_cost > 0 and context.card.config.center.set == 'Joker' and G.GAME.jokers_sold then - local card = create_card('Joker', G.jokers, nil, nil, nil, nil, G.GAME.jokers_sold[pseudorandom('cry_necromancer', 1, #G.GAME.jokers_sold)]) + if + context.selling_card + and context.card.sell_cost > 0 + and context.card.config.center.set == "Joker" + and G.GAME.jokers_sold + then + local card = create_card( + "Joker", + G.jokers, + nil, + nil, + nil, + nil, + G.GAME.jokers_sold[pseudorandom("cry_necromancer", 1, #G.GAME.jokers_sold)] + ) card.sell_cost = 0 card:add_to_deck() G.jokers:emplace(card) @@ -6556,18 +7098,23 @@ local necromancer = { end, cry_credits = { idea = { - "Pyrocreep" + "Pyrocreep", }, art = { - "Pyrocreep" + "Pyrocreep", }, code = { - "Foegro" - } + "Foegro", + }, }, } local oil_lamp = { --You want it? It's yours my friend object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Oil-Lamp", key = "oil_lamp", pos = { x = 4, y = 5 }, @@ -6577,28 +7124,54 @@ local oil_lamp = { --You want it? It's yours my friend order = 127, atlas = "atlastwo", loc_vars = function(self, info_queue, card) - card.ability.blueprint_compat_ui = card.ability.blueprint_compat_ui or ''; card.ability.blueprint_compat_check = nil - return { + card.ability.blueprint_compat_ui = card.ability.blueprint_compat_ui or "" + card.ability.blueprint_compat_check = nil + return { vars = { card.ability.extra.increase }, main_end = (card.area and card.area == G.jokers) and { - {n=G.UIT.C, config={align = "bm", minh = 0.4}, nodes={ - {n=G.UIT.C, config={ref_table = card, align = "m", colour = G.C.JOKER_GREY, r = 0.05, padding = 0.06, func = 'blueprint_compat'}, nodes={ - {n=G.UIT.T, config={ref_table = card.ability, ref_value = 'blueprint_compat_ui',colour = G.C.UI.TEXT_LIGHT, scale = 0.32*0.8}}, - }} - }} - } or nil + { + n = G.UIT.C, + config = { align = "bm", minh = 0.4 }, + nodes = { + { + n = G.UIT.C, + config = { + ref_table = card, + align = "m", + colour = G.C.JOKER_GREY, + r = 0.05, + padding = 0.06, + func = "blueprint_compat", + }, + nodes = { + { + n = G.UIT.T, + config = { + ref_table = card.ability, + ref_value = "blueprint_compat_ui", + colour = G.C.UI.TEXT_LIGHT, + scale = 0.32 * 0.8, + }, + }, + }, + }, + }, + }, + } or nil, } end, update = function(self, card, front) if G.STAGE == G.STAGES.RUN then for i = 1, #G.jokers.cards do - if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i+1] end - end + if G.jokers.cards[i] == card then + other_joker = G.jokers.cards[i + 1] + end + end if other_joker and other_joker ~= card and not (Card.no(other_joker, "immutable", true)) then - card.ability.blueprint_compat = 'compatible' - else - card.ability.blueprint_compat = 'incompatible' - end + card.ability.blueprint_compat = "compatible" + else + card.ability.blueprint_compat = "incompatible" + end end end, calculate = function(self, card, context) @@ -6607,10 +7180,15 @@ local oil_lamp = { --You want it? It's yours my friend for i = 1, #G.jokers.cards do if G.jokers.cards[i] == card then if i < #G.jokers.cards then - if not Card.no(G.jokers.cards[i+1], "immutable", true) then + if not Card.no(G.jokers.cards[i + 1], "immutable", true) then check = true - cry_with_deck_effects(G.jokers.cards[i+1], function(cards) - cry_misprintize(cards, { min = card.ability.extra.increase, max = card.ability.extra.increase }, nil, true) + cry_with_deck_effects(G.jokers.cards[i + 1], function(cards) + cry_misprintize( + cards, + { min = card.ability.extra.increase, max = card.ability.extra.increase }, + nil, + true + ) end) end end @@ -6630,72 +7208,82 @@ local oil_lamp = { --You want it? It's yours my friend end, cry_credits = { idea = { - "AlexZGreat" + "AlexZGreat", }, art = { - "AlexZGreat" + "AlexZGreat", }, code = { - "Foegro" - } + "Foegro", + }, }, } local tax_fraud = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Tax-Fraud", key = "tax_fraud", - pos = { x = 2, y = 0 }, + pos = { x = 4, y = 6 }, config = { extra = { money = 6 } }, rarity = 3, cost = 10, order = 128, - atlas = "placeholders", + atlas = "atlastwo", in_pool = function(self) - if G.jokers then - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.rental then return true end - end + if not G.GAME.modifiers.enable_rentals_in_shop then + return false end - return false + return true end, loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.money } } end, calc_dollar_bonus = function(self, card) - local rentals = 0 - for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.rental then rentals = rentals+1 end + if #advanced_find_joker(nil, nil, nil, { "rental" }, true) ~= 0 then + return card.ability.extra.money * #advanced_find_joker(nil, nil, nil, { "rental" }, true) end - return rentals*card.ability.extra.money end, cry_credits = { idea = { - "DoNotSus" + "DoNotSus", + }, + art = { + "Dragokillfist", }, code = { - "Foegro" - } + "Foegro", + }, }, } +--TODO update desc local pity_prize = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Pity-Prize", key = "pity_prize", pos = { x = 5, y = 5 }, - config = { }, + config = {}, rarity = 1, - cost = 4, + cost = 2, atlas = "atlastwo", order = 129, loc_vars = function(self, info_queue, center) - return { vars = { } } + return { vars = {} } end, calculate = function(self, card, context) if context.skipping_booster then local tag repeat tag = Tag(get_next_tag_key("cry_pity_prize")) - until tag.name ~= "Boss Tag" and tag.name ~= "Gambler's Tag" and tag.name ~= "Empowered Tag" --I saw pickle not generating boss tags because it apparently causes issues, so I did the same here + until tag.name ~= "Boss Tag" and tag.name ~= "Gambler's Tag" and tag.name ~= "Empowered Tag" if tag.name == "Orbital Tag" then local _poker_hands = {} for k, v in pairs(G.GAME.hands) do @@ -6706,64 +7294,115 @@ local pity_prize = { tag.ability.orbital_hand = pseudorandom_element(_poker_hands, pseudoseed("cry_pity_prize")) end add_tag(tag) + if Card.get_gameset(card) == "modest" and not context.blueprint and not context.retrigger_joker then + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + card.T.r = -0.2 + card:juice_up(0.3, 0.4) + card.states.drag.is = true + card.children.center.pinch.x = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card = nil + return true + end, + })) + return true + end, + })) + card_eval_status_text( + card, + "extra", + nil, + nil, + nil, + { message = localize("k_extinct_ex"), colour = G.C.FILTER } + ) + end + return nil, true end end, cry_credits = { idea = { - "Pyrocreep" + "Pyrocreep", }, art = { - "Pyrocreep" + "Pyrocreep", }, code = { - "Foegro" - } + "Foegro", + }, }, } local digitalhallucinations = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Digital Hallucinations", key = "digitalhallucinations", pos = { x = 0, y = 7 }, order = 130, config = { odds = 2 }, loc_vars = function(self, info_queue, card) - return { vars = { cry_prob(card.ability.cry_prob, card.ability.odds, card.ability.cry_rigged), card.ability.odds } } + return { + vars = { cry_prob(card.ability.cry_prob, card.ability.odds, card.ability.cry_rigged), card.ability.odds }, + } end, atlas = "atlasthree", rarity = 2, cost = 8, blueprint_compat = true, calculate = function(self, card, context) - -- you know, i was totally ready to do something smart here but vanilla hardcodes this stuff, so i will too -- some cards need to be handled slightly differently anyway, adding mod support can't really be automatic in some circumstances - - if context.open_booster and (pseudorandom("digi") < cry_prob(card.ability.cry_prob, card.ability.odds, card.ability.cry_rigged)/card.ability.odds) then + + if + context.open_booster + and ( + pseudorandom("digi") + < cry_prob(card.ability.cry_prob, card.ability.odds, card.ability.cry_rigged) / card.ability.odds + ) + then local boosty = context.card - local consums = {'Arcana', 'Celestial', 'Spectral'} - local short1 = {'tarot', 'planet', 'spectral'} - local short2 = {'Tarot', 'Planet', 'Spectral'} + local consums = { "Arcana", "Celestial", "Spectral" } + local short1 = { "tarot", "planet", "spectral" } + local short2 = { "Tarot", "Planet", "Spectral" } for i = 1, #consums do if boosty.ability.name:find(consums[i]) then G.E_MANAGER:add_event(Event({ - trigger = 'before', + trigger = "before", delay = 0.0, - func = (function() + func = function() local ccard = create_card(short2[i], G.consumables, nil, nil, nil, nil, nil, "diha") ccard:set_edition({ negative = true }, true) ccard:add_to_deck() G.consumeables:emplace(ccard) return true - end) + end, })) - card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_plus_'..short1[i]), colour = G.C.SECONDARY_SET[short2[i]]}) - return true -- this triggers BEFORE a retrigger joker and looks like jank. i can't get a message showing up without status text so this is the best option rn + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_plus_" .. short1[i]), colour = G.C.SECONDARY_SET[short2[i]] } + ) + return nil, true -- this triggers BEFORE a retrigger joker and looks like jank. i can't get a message showing up without status text so this is the best option rn end end - if boosty.ability.name:find('code') then + if boosty.ability.name:find("code") then G.E_MANAGER:add_event(Event({ - trigger = 'before', + trigger = "before", delay = 0.0, func = function() local ccard = create_card("Code", G.consumables, nil, nil, nil, nil, nil, "diha") @@ -6771,14 +7410,21 @@ local digitalhallucinations = { ccard:add_to_deck() G.consumeables:emplace(ccard) return true - end + end, })) - card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('cry_plus_code'), colour = G.C.SET.Code}) - return true + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("cry_plus_code"), colour = G.C.SET.Code } + ) + return nil, true end - if boosty.ability.name:find('Buffoon') then + if boosty.ability.name:find("Buffoon") then G.E_MANAGER:add_event(Event({ - trigger = 'before', + trigger = "before", delay = 0.0, func = function() local ccard = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "diha") @@ -6787,102 +7433,134 @@ local digitalhallucinations = { G.jokers:emplace(ccard) ccard:start_materialize() return true - end + end, })) - card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_plus_joker'), colour = G.C.FILTER}) - return true + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("k_plus_joker"), colour = G.C.FILTER } + ) + return nil, true end - if boosty.ability.name:find('Standard') then + if boosty.ability.name:find("Standard") then G.E_MANAGER:add_event(Event({ - func = function() - local front = pseudorandom_element(G.P_CARDS, pseudoseed('diha_p')) + func = function() + local front = pseudorandom_element(G.P_CARDS, pseudoseed("diha_p")) G.playing_card = (G.playing_card and G.playing_card + 1) or 1 - local ccard = Card(G.play.T.x + G.play.T.w/2, G.play.T.y, G.CARD_W, G.CARD_H, front, G.P_CENTERS.c_base, {playing_card = G.playing_card}) + local ccard = Card( + G.play.T.x + G.play.T.w / 2, + G.play.T.y, + G.CARD_W, + G.CARD_H, + front, + G.P_CENTERS.c_base, + { playing_card = G.playing_card } + ) ccard:set_edition({ negative = true }, true) - ccard:start_materialize({G.C.SECONDARY_SET.Enhanced}) + ccard:start_materialize({ G.C.SECONDARY_SET.Enhanced }) G.play:emplace(ccard) table.insert(G.playing_cards, ccard) return true - end + end, })) - card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('cry_plus_card'), colour = G.C.FILTER}) + card_eval_status_text( + context.blueprint_card or card, + "extra", + nil, + nil, + nil, + { message = localize("cry_plus_card"), colour = G.C.FILTER } + ) G.E_MANAGER:add_event(Event({ - func = function() + func = function() G.deck.config.card_limit = G.deck.config.card_limit + 1 return true - end + end, })) - draw_card(G.play,G.deck, 90,'up', nil) + draw_card(G.play, G.deck, 90, "up", nil) - playing_card_joker_effects({true}) -- who knows what most this stuff does, i just copied it from marble jonkler - return true + playing_card_joker_effects({ true }) -- who knows what most this stuff does, i just copied it from marble jonkler + return nil, true end end end, cry_credits = { idea = { - "lolxddj" + "lolxddj", }, art = { - "lolxddj" + "lolxddj", }, code = { - "toneblock" - } + "toneblock", + }, }, } local arsonist = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Arsonist", key = "arsonist", pos = { x = 0, y = 5 }, - config = { }, + config = {}, rarity = 3, cost = 5, atlas = "atlasone", order = 131, loc_vars = function(self, info_queue, center) - return { vars = { } } + return { vars = {} } end, calculate = function(self, card, context) if context.destroying_card then local eval = evaluate_poker_hand(context.full_hand) - if next(eval['Full House']) then - return true - end + if next(eval["Full House"]) then + return true + end end end, cry_credits = { idea = { - "AlexZGreat" + "AlexZGreat", }, art = { - "Darren_the_frog" + "Darren_the_frog", }, code = { - "AlexZGreat" - } + "AlexZGreat", + }, }, } local zooble = { object_type = "Joker", + dependencies = { + items = { + "set_cry_misc_joker", + }, + }, name = "cry-Zooble", key = "zooble", pos = { x = 1, y = 5 }, - config = {extra = {mult = 0, a_mult = 1}}, + config = { extra = { mult = 0, a_mult = 1 } }, rarity = 2, cost = 6, atlas = "atlasone", order = 132, loc_vars = function(self, info_queue, center) - return { vars = {center.ability.extra.mult,center.ability.extra.a_mult }} + return { vars = { center.ability.extra.mult, center.ability.extra.a_mult } } end, calculate = function(self, card, context) if context.before and context.cardarea == G.jokers then - if not (next(context.poker_hands['Straight']) or next(context.poker_hands['Straight Flush'])) then + if not (next(context.poker_hands["Straight"]) or next(context.poker_hands["Straight Flush"])) then local unique_ranks = {} - for i, v in pairs (context.scoring_hand) do + for i, v in pairs(context.scoring_hand) do local not_unique = false for i = 1, #unique_ranks do if unique_ranks[i] == v:get_id() then @@ -6896,33 +7574,33 @@ local zooble = { if #unique_ranks >= 1 then card.ability.extra.mult = card.ability.extra.mult + (#unique_ranks * card.ability.extra.a_mult) return { - message = localize('k_upgrade_ex'), + message = localize("k_upgrade_ex"), colour = G.C.RED, - card = card + card = card, } end end end if context.joker_main and context.cardarea == G.jokers then return { - message = localize{type='variable',key='a_mult',vars={card.ability.extra.mult}}, - mult_mod = card.ability.extra.mult + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra.mult } }), + mult_mod = card.ability.extra.mult, } end end, cry_credits = { idea = { - "lolxDdj" + "lolxDdj", }, art = { - "lolxDdj" + "lolxDdj", }, code = { - "AlexZGreat" - } + "AlexZGreat", + }, }, } -local miscitems = { +local miscitems = { jimball_sprite, dropshot, happyhouse, @@ -7019,134 +7697,37 @@ local miscitems = { digitalhallucinations, arsonist, zooble, + flipside, + universe, + astral_bottle, + stronghold, + wtf, + clash, + adroit, + penetrating, + treacherous, + bonkers, + fuckedup, + foolhardy, + translucent, } -if Cryptid.enabled["Misc."] then - miscitems[#miscitems+1] = flipside - miscitems[#miscitems+1] = universe - miscitems[#miscitems+1] = astral_bottle - miscitems[#miscitems+1] = stronghold - miscitems[#miscitems+1] = wtf - miscitems[#miscitems+1] = clash - miscitems[#miscitems+1] = adroit - miscitems[#miscitems+1] = penetrating - miscitems[#miscitems+1] = treacherous - miscitems[#miscitems+1] = bonkers - miscitems[#miscitems+1] = fuckedup - miscitems[#miscitems+1] = foolhardy -end -if Cryptid.enabled["More Stakes"] then - miscitems[#miscitems+1] = translucent -end return { name = "Misc. Jokers", init = function() - cry_enable_jokers = true - --Dropshot Patches - local gigo = Game.init_game_object - function Game:init_game_object() - local g = gigo(self) - g.current_round.cry_dropshot_card = { suit = "Spades" } - return g - end - local rcc = reset_castle_card - function reset_castle_card() - rcc() - if not G.GAME.current_round.cry_dropshot_card then - G.GAME.current_round.cry_dropshot_card = {} - end - G.GAME.current_round.cry_dropshot_card.suit = "Spades" - local valid_castle_cards = {} - for k, v in ipairs(G.playing_cards) do - if v.ability.effect ~= "Stone Card" then - valid_castle_cards[#valid_castle_cards + 1] = v - end - end - if valid_castle_cards[1] then - local castle_card = - pseudorandom_element(valid_castle_cards, pseudoseed("cry_dro" .. G.GAME.round_resets.ante)) - if not G.GAME.current_round.cry_dropshot_card then - G.GAME.current_round.cry_dropshot_card = {} - end - G.GAME.current_round.cry_dropshot_card.suit = castle_card.base.suit - end - end - - --Maximized Patches - local cgi_ref = Card.get_id - override_maximized = false - function Card:get_id() - local id = cgi_ref(self) - if id == nil then - id = 10 - end - if next(find_joker("cry-Maximized")) and not override_maximized then - if id >= 2 and id <= 10 then - id = 10 - end - if id >= 11 and id <= 13 or next(find_joker("Pareidolia")) then - id = 13 - end - end - return id - end - --Fix issues with View Deck and Maximized - local gui_vd = G.UIDEF.view_deck - function G.UIDEF.view_deck(unplayed_only) - override_maximized = true - local ret_value = gui_vd(unplayed_only) - override_maximized = false - return ret_value - end - - --Cube Patches - local sc = Card.set_cost - function Card:set_cost() - sc(self) - if self.ability.name == "cry-Cube" then - self.cost = -27 - end - if self.ability.name == "cry-Big Cube" then - self.cost = 27 - end - end - --Jimball Patches - local upd = Game.update - cry_jimball_dt = 0 - function Game:update(dt) - upd(self, dt) - cry_jimball_dt = cry_jimball_dt + dt - if G.P_CENTERS and G.P_CENTERS.j_cry_jimball and cry_jimball_dt > 0.1 then - cry_jimball_dt = 0 - local obj = G.P_CENTERS.j_cry_jimball - if obj.pos.x == 5 and obj.pos.y == 6 then - obj.pos.x = 0 - obj.pos.y = 0 - elseif obj.pos.x < 8 then - obj.pos.x = obj.pos.x + 1 - elseif obj.pos.y < 6 then - obj.pos.x = 0 - obj.pos.y = obj.pos.y + 1 - end - end - end - + -- Add more calculation contexts (used by Pumpkin and Clicked Cookie) local oldfunc = Card.start_dissolve function Card:start_dissolve(dissolve_colours, silent, dissolve_time_fac, no_juice) if G and G.jokers and G.jokers.cards then - for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({cry_start_dissolving = true, card = self}) - end + SMODS.calculate_context({ cry_start_dissolving = true, card = self }) end - return oldfunc(self,dissolve_colours, silent, dissolve_time_fac, no_juice) + return oldfunc(self, dissolve_colours, silent, dissolve_time_fac, no_juice) end local lcpref = Controller.L_cursor_press function Controller:L_cursor_press(x, y) - lcpref(self,x,y) + lcpref(self, x, y) if G and G.jokers and G.jokers.cards and not G.SETTINGS.paused then - for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({cry_press = true}) - end + SMODS.calculate_context({ cry_press = true }) end end end, diff --git a/Cryptid/Items/Planets.lua b/Cryptid/items/planet.lua similarity index 60% rename from Cryptid/Items/Planets.lua rename to Cryptid/items/planet.lua index 9262004..3a2121a 100644 --- a/Cryptid/Items/Planets.lua +++ b/Cryptid/items/planet.lua @@ -1,4 +1,9 @@ local timantti = { + dependencies = { + items = { + "set_cry_planet", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-Timantti", @@ -51,6 +56,7 @@ local timantti = { calculate = function(self, card, context) if G.GAME.used_vouchers.v_observatory + and context.joker_main and ( context.scoring_name == "High Card" or context.scoring_name == "Pair" @@ -66,6 +72,11 @@ local timantti = { end, } local klubi = { + dependencies = { + items = { + "set_cry_planet", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-Klubi", @@ -118,6 +129,7 @@ local klubi = { calculate = function(self, card, context) if G.GAME.used_vouchers.v_observatory + and context.joker_main and ( context.scoring_name == "Three of a Kind" or context.scoring_name == "Straight" @@ -133,6 +145,11 @@ local klubi = { end, } local sydan = { + dependencies = { + items = { + "set_cry_planet", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-Sydan", @@ -185,6 +202,7 @@ local sydan = { calculate = function(self, card, context) if G.GAME.used_vouchers.v_observatory + and context.joker_main and ( context.scoring_name == "Full House" or context.scoring_name == "Four of a Kind" @@ -200,6 +218,11 @@ local sydan = { end, } local lapio = { + dependencies = { + items = { + "set_cry_planet", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-Lapio", @@ -252,6 +275,7 @@ local lapio = { calculate = function(self, card, context) if G.GAME.used_vouchers.v_observatory + and context.joker_main and ( context.scoring_name == "Five of a Kind" or context.scoring_name == "Flush House" @@ -267,73 +291,85 @@ local lapio = { end, } local kaikki = { - object_type = "Consumable", - set = "Planet", - name = "cry-Kaikki", - key = "Kaikki", - pos = { x = 3, y = 5 }, - config = { hand_types = { "cry_Bulwark", "cry_Clusterfuck", "cry_UltPair" }, softlock = true }, - cost = 4, - aurinko = true, - atlas = "atlasnotjokers", - order = 12, - can_use = function(self, card) - return true - end, - loc_vars = function(self, info_queue, center) - local levelone = G.GAME.hands["cry_Bulwark"].level or 1 - local leveltwo = G.GAME.hands["cry_Clusterfuck"].level or 1 - local levelthree = G.GAME.hands["cry_UltPair"].level or 1 - local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] - local planetcolourtwo = G.C.HAND_LEVELS[math.min(leveltwo, 7)] - local planetcolourthree = G.C.HAND_LEVELS[math.min(levelthree, 7)] - if levelone == 1 or leveltwo == 1 or levelthree == 1 then --Level 1 colour is white (The background), so this sets it to black - if levelone == 1 then - planetcolourone = G.C.UI.TEXT_DARK - end - if leveltwo == 1 then - planetcolourtwo = G.C.UI.TEXT_DARK - end - if levelthree == 1 then - planetcolourthree = G.C.UI.TEXT_DARK - end - end - return { - vars = { - localize("cry_hand_bulwark"), - localize("cry_hand_clusterfuck"), - localize("cry_hand_ultpair"), - G.GAME.hands["cry_Bulwark"].level, - G.GAME.hands["cry_Clusterfuck"].level, - G.GAME.hands["cry_UltPair"].level, - colours = { planetcolourone, planetcolourtwo, planetcolourthree }, - }, - } - end, - use = function(self, card, area, copier) - suit_level_up(self, card, area, copier) - end, - bulk_use = function(self, card, area, copier, number) - suit_level_up(self, card, area, copier, number) - end, - calculate = function(self, card, context) - if - G.GAME.used_vouchers.v_observatory - and ( - context.scoring_name == "cry_Bulwark" - or context.scoring_name == "cry_Clusterfuck" - or context.scoring_name == "cry_UltPair" - ) - then - local value = G.P_CENTERS.v_observatory.config.extra - return { - message = localize({ type = "variable", key = "a_xmult", vars = { value } }), - Xmult_mod = value, - } - end - end, + dependencies = { + items = { + "set_cry_planet", + "set_cry_poker_hand_stuff", + }, + }, + object_type = "Consumable", + set = "Planet", + name = "cry-Kaikki", + key = "Kaikki", + pos = { x = 3, y = 5 }, + config = { hand_types = { "cry_Bulwark", "cry_Clusterfuck", "cry_UltPair" }, softlock = true }, + cost = 4, + aurinko = true, + atlas = "atlasnotjokers", + order = 12, + can_use = function(self, card) + return true + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["cry_Bulwark"].level or 1 + local leveltwo = G.GAME.hands["cry_Clusterfuck"].level or 1 + local levelthree = G.GAME.hands["cry_UltPair"].level or 1 + local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] + local planetcolourtwo = G.C.HAND_LEVELS[math.min(leveltwo, 7)] + local planetcolourthree = G.C.HAND_LEVELS[math.min(levelthree, 7)] + if levelone == 1 or leveltwo == 1 or levelthree == 1 then --Level 1 colour is white (The background), so this sets it to black + if levelone == 1 then + planetcolourone = G.C.UI.TEXT_DARK + end + if leveltwo == 1 then + planetcolourtwo = G.C.UI.TEXT_DARK + end + if levelthree == 1 then + planetcolourthree = G.C.UI.TEXT_DARK + end + end + return { + vars = { + localize("cry_Bulwark", "poker_hands"), + localize("cry_Clusterfuck", "poker_hands"), + localize("cry_UltPair", "poker_hands"), + G.GAME.hands["cry_Bulwark"].level, + G.GAME.hands["cry_Clusterfuck"].level, + G.GAME.hands["cry_UltPair"].level, + colours = { planetcolourone, planetcolourtwo, planetcolourthree }, + }, + } + end, + use = function(self, card, area, copier) + suit_level_up(self, card, area, copier) + end, + bulk_use = function(self, card, area, copier, number) + suit_level_up(self, card, area, copier, number) + end, + calculate = function(self, card, context) + if + G.GAME.used_vouchers.v_observatory + and context.joker_main + and ( + context.scoring_name == "cry_Bulwark" + or context.scoring_name == "cry_Clusterfuck" + or context.scoring_name == "cry_UltPair" + ) + then + local value = G.P_CENTERS.v_observatory.config.extra + return { + message = localize({ type = "variable", key = "a_xmult", vars = { value } }), + Xmult_mod = value, + } + end + end, } local planetlua = { + dependencies = { + items = { + "set_cry_planet", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-planetlua", @@ -345,14 +381,23 @@ local planetlua = { atlas = "atlasnotjokers", order = 1, loc_vars = function(self, info_queue, card) - return { vars = { card and cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) or 1, card and card.ability.extra.odds or self.config.extra.odds} } + return { + vars = { + card and cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) or 1, + card and card.ability.extra.odds or self.config.extra.odds, + }, + } end, can_use = function(self, card) return true end, use = function(self, card, area, copier) local used_consumable = copier or card - if pseudorandom("planetlua") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds then --Code "borrowed" from black hole + if + pseudorandom("planetlua") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) + / card.ability.extra.odds + then --Code "borrowed" from black hole update_hand_text( { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, { handname = localize("k_all_hands"), chips = "...", mult = "...", level = "" } @@ -448,54 +493,59 @@ local planetlua = { local used_consumable = copier or card local quota = 0 if card.ability.cry_rigged then - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { handname = localize("k_all_hands"), chips = "...", mult = "...", level = "" } - ) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - play_sound("tarot1") - used_consumable:juice_up(0.8, 0.5) - G.TAROT_INTERRUPT_PULSE = true - return true - end, - })) - update_hand_text({ delay = 0 }, { mult = "+", StatusText = true }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.9, - func = function() - play_sound("tarot1") - used_consumable:juice_up(0.8, 0.5) - return true - end, - })) - update_hand_text({ delay = 0 }, { chips = "+", StatusText = true }) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.9, - func = function() - play_sound("tarot1") - used_consumable:juice_up(0.8, 0.5) - G.TAROT_INTERRUPT_PULSE = nil - return true - end, - })) - update_hand_text({ sound = "button", volume = 0.7, pitch = 0.9, delay = 0 }, { level = "+" .. number }) - delay(1.3) - for k, v in pairs(G.GAME.hands) do - level_up_hand(card, k, true, number) - end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, - { mult = 0, chips = 0, handname = "", level = "" } - ) + update_hand_text( + { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, + { handname = localize("k_all_hands"), chips = "...", mult = "...", level = "" } + ) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("tarot1") + used_consumable:juice_up(0.8, 0.5) + G.TAROT_INTERRUPT_PULSE = true + return true + end, + })) + update_hand_text({ delay = 0 }, { mult = "+", StatusText = true }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.9, + func = function() + play_sound("tarot1") + used_consumable:juice_up(0.8, 0.5) + return true + end, + })) + update_hand_text({ delay = 0 }, { chips = "+", StatusText = true }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.9, + func = function() + play_sound("tarot1") + used_consumable:juice_up(0.8, 0.5) + G.TAROT_INTERRUPT_PULSE = nil + return true + end, + })) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.9, delay = 0 }, { level = "+" .. number }) + delay(1.3) + for k, v in pairs(G.GAME.hands) do + level_up_hand(card, k, true, number) + end + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { mult = 0, chips = 0, handname = "", level = "" } + ) else for i = 1, number do quota = quota - + (pseudorandom("planetlua") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds and 1 or 0) + + ( + pseudorandom("planetlua") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds + and 1 + or 0 + ) end if quota > 0 then update_hand_text( @@ -593,7 +643,12 @@ local planetlua = { calculate = function(self, card, context) --Observatory effect: (G.GAME.probabilities.normal) in (odds) chance for (G.P_CENTERS.v_observatory.config.extra) Mult if G.GAME.used_vouchers.v_observatory - and (pseudorandom("nstar") < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) / card.ability.extra.odds) + and context.joker_main + and ( + pseudorandom("nstar") + < cry_prob(card.ability.cry_prob, card.ability.extra.odds, card.ability.cry_rigged) + / card.ability.extra.odds + ) then local value = G.P_CENTERS.v_observatory.config.extra return { @@ -604,6 +659,11 @@ local planetlua = { end, } local nstar = { + dependencies = { + items = { + "set_cry_planet", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-nstar", @@ -630,15 +690,12 @@ local nstar = { --Add +1 to amount of neutron stars used this run G.GAME.neutronstarsusedinthisrun = G.GAME.neutronstarsusedinthisrun + 1 local neutronhand = neutronstarrandomhand() --Random poker hand - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { - handname = localize(neutronhand, "poker_hands"), - chips = G.GAME.hands[neutronhand].chips, - mult = G.GAME.hands[neutronhand].mult, - level = G.GAME.hands[neutronhand].level, - } - ) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, { + handname = localize(neutronhand, "poker_hands"), + chips = G.GAME.hands[neutronhand].chips, + mult = G.GAME.hands[neutronhand].mult, + level = G.GAME.hands[neutronhand].level, + }) --level up once for each neutron star used this run level_up_hand(used_consumable, neutronhand, nil, G.GAME.neutronstarsusedinthisrun) update_hand_text( @@ -658,15 +715,12 @@ local nstar = { handstolv[neutronhand] = (handstolv[neutronhand] or 0) + G.GAME.neutronstarsusedinthisrun end for k, v in pairs(handstolv) do - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { - handname = localize(k, "poker_hands"), - chips = G.GAME.hands[k].chips, - mult = G.GAME.hands[k].mult, - level = G.GAME.hands[k].level, - } - ) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, { + handname = localize(k, "poker_hands"), + chips = G.GAME.hands[k].chips, + mult = G.GAME.hands[k].mult, + level = G.GAME.hands[k].level, + }) card_eval_status_text( used_consumable, "extra", @@ -681,18 +735,16 @@ local nstar = { { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, { mult = 0, chips = 0, handname = "", level = "" } ) - G.E_MANAGER:add_event( - Event({ - trigger = "after", - func = function() - handstolv = nil - return true - end, - }) - ) + G.E_MANAGER:add_event(Event({ + trigger = "after", + func = function() + handstolv = nil + return true + end, + })) end, calculate = function(self, card, context) --Observatory effect: X0.1 mult for each neutron star used this run - if G.GAME.used_vouchers.v_observatory and G.GAME.neutronstarsusedinthisrun ~= nil then + if G.GAME.used_vouchers.v_observatory and G.GAME.neutronstarsusedinthisrun ~= nil and context.joker_main then return { message = localize({ type = "variable", @@ -703,8 +755,41 @@ local nstar = { } end end, + init = function(self) + function neutronstarrandomhand(ignore, seed, allowhidden) + --From JenLib's get_random_hand + local chosen_hand + ignore = ignore or {} + seed = seed or "randomhand" + if type(ignore) ~= "table" then + ignore = { ignore } + end + while true do + chosen_hand = pseudorandom_element(G.handlist, pseudoseed(seed)) + if G.GAME.hands[chosen_hand].visible or allowhidden then + local safe = true + for _, v in pairs(ignore) do + if v == chosen_hand then + safe = false + end + end + if safe then + break + end + end + end + return chosen_hand + end + end, } local sunplanet = { + --TODO: disable ascendant hands if this is disabled + dependencies = { + items = { + "set_cry_planet", + "set_cry_poker_hand_stuff", + }, + }, object_type = "Consumable", set = "Planet", name = "cry-sunplanet", @@ -722,81 +807,107 @@ local sunplanet = { end, use = function(self, card, area, copier) local used_consumable = copier or card - local sunlevel = (G.GAME.sunnumber and G.GAME.sunnumber or 0)+1 + local sunlevel = (G.GAME.sunnumber and G.GAME.sunnumber or 0) + 1 delay(0.4) - update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize('cry_asc_hands'),chips = '...', mult = '...', level=sunlevel}) + update_hand_text( + { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, + { handname = localize("cry_asc_hands"), chips = "...", mult = "...", level = sunlevel } + ) delay(1.0) - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2, func = function() - play_sound('tarot1') - ease_colour(G.C.UI_CHIPS, copy_table(G.C.GOLD), 0.1) - ease_colour(G.C.UI_MULT, copy_table(G.C.GOLD), 0.1) - cry_pulse_flame(0.01, sunlevel) - used_consumable:juice_up(0.8, 0.5) - G.E_MANAGER:add_event(Event({ - trigger = 'after', - blockable = false, - blocking = false, - delay = 1.2, - func = (function() - ease_colour(G.C.UI_CHIPS, G.C.BLUE, 1) - ease_colour(G.C.UI_MULT, G.C.RED, 1) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("tarot1") + ease_colour(G.C.UI_CHIPS, copy_table(G.C.GOLD), 0.1) + ease_colour(G.C.UI_MULT, copy_table(G.C.GOLD), 0.1) + cry_pulse_flame(0.01, sunlevel) + used_consumable:juice_up(0.8, 0.5) + G.E_MANAGER:add_event(Event({ + trigger = "after", + blockable = false, + blocking = false, + delay = 1.2, + func = function() + ease_colour(G.C.UI_CHIPS, G.C.BLUE, 1) + ease_colour(G.C.UI_MULT, G.C.RED, 1) + return true + end, + })) return true - end) - })) - return true end })) - update_hand_text({sound = 'button', volume = 0.7, pitch = 0.9, delay = 0}, {level=sunlevel+1}) - delay(2.6) + end, + })) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.9, delay = 0 }, { level = sunlevel + 1 }) + delay(2.6) G.GAME.sunnumber = G.GAME.sunnumber ~= nil and G.GAME.sunnumber + 1 or 1 - update_hand_text({sound = 'button', volume = 0.7, pitch = 1.1, delay = 0}, {mult = 0, chips = 0, handname = '', level = ''}) + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { mult = 0, chips = 0, handname = "", level = "" } + ) end, bulk_use = function(self, card, area, copier, number) local used_consumable = copier or card - local sunlevel = (G.GAME.sunnumber and G.GAME.sunnumber or 0)+1 + local sunlevel = (G.GAME.sunnumber and G.GAME.sunnumber or 0) + 1 delay(0.4) - update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize('cry_asc_hands'),chips = '...', mult = '...', level=sunlevel}) + update_hand_text( + { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, + { handname = localize("cry_asc_hands"), chips = "...", mult = "...", level = sunlevel } + ) delay(1.0) - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2, func = function() - play_sound('tarot1') - ease_colour(G.C.UI_CHIPS, copy_table(G.C.GOLD), 0.1) - ease_colour(G.C.UI_MULT, copy_table(G.C.GOLD), 0.1) - cry_pulse_flame(0.01, (sunlevel-1)+number) - used_consumable:juice_up(0.8, 0.5) - G.E_MANAGER:add_event(Event({ - trigger = 'after', - blockable = false, - blocking = false, - delay = 1.2, - func = (function() - ease_colour(G.C.UI_CHIPS, G.C.BLUE, 1) - ease_colour(G.C.UI_MULT, G.C.RED, 1) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + play_sound("tarot1") + ease_colour(G.C.UI_CHIPS, copy_table(G.C.GOLD), 0.1) + ease_colour(G.C.UI_MULT, copy_table(G.C.GOLD), 0.1) + cry_pulse_flame(0.01, (sunlevel - 1) + number) + used_consumable:juice_up(0.8, 0.5) + G.E_MANAGER:add_event(Event({ + trigger = "after", + blockable = false, + blocking = false, + delay = 1.2, + func = function() + ease_colour(G.C.UI_CHIPS, G.C.BLUE, 1) + ease_colour(G.C.UI_MULT, G.C.RED, 1) + return true + end, + })) return true - end) - })) - return true end })) - update_hand_text({sound = 'button', volume = 0.7, pitch = 0.9, delay = 0}, {level=sunlevel+number}) - delay(2.6) + end, + })) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.9, delay = 0 }, { level = sunlevel + number }) + delay(2.6) G.GAME.sunnumber = G.GAME.sunnumber ~= nil and G.GAME.sunnumber + number or number - update_hand_text({sound = 'button', volume = 0.7, pitch = 1.1, delay = 0}, {mult = 0, chips = 0, handname = '', level = ''}) + update_hand_text( + { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, + { mult = 0, chips = 0, handname = "", level = "" } + ) end, - calculate = function(self, card, context) --Observatory effect: X1.5 mult if hand is an ascended hand - if G.GAME.used_vouchers.v_observatory and G.GAME.current_round.current_hand.cry_asc_num ~= 0 then + calculate = function(self, card, context) --Observatory effect: X1.5 mult if hand is an ascended hand + if + G.GAME.used_vouchers.v_observatory + and G.GAME.current_round.current_hand.cry_asc_num ~= 0 + and context.joker_main + then local value = G.P_CENTERS.v_observatory.config.extra - return { - message = localize({ type = "variable", key = "a_xmult", vars = { value } }), - Xmult_mod = value, - } + return { + message = localize({ type = "variable", key = "a_xmult", vars = { value } }), + Xmult_mod = value, + } end end, loc_vars = function(self, info_queue, center) - local levelone = (G.GAME.sunnumber and G.GAME.sunnumber or 0)+1 + local levelone = (G.GAME.sunnumber and G.GAME.sunnumber or 0) + 1 local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] - if levelone == 1 then + if levelone == 1 then planetcolourone = G.C.UI.TEXT_DARK end return { vars = { - (G.GAME.sunnumber and G.GAME.sunnumber or 0)+1, - ((G.GAME.sunnumber and G.GAME.sunnumber or 0)/20) + 1.25, + (G.GAME.sunnumber and G.GAME.sunnumber or 0) + 1, + ((G.GAME.sunnumber and G.GAME.sunnumber or 0) / 20) + 1.25, colours = { planetcolourone }, }, } @@ -808,18 +919,158 @@ local sunplanet = { return false end, } +local abelt = { + dependencies = { + items = { + "set_cry_poker_hand_stuff", + }, + }, + object_type = "Consumable", + set = "Planet", + key = "asteroidbelt", + config = { hand_type = "cry_Bulwark", softlock = true }, + pos = { x = 1, y = 5 }, + order = 2, + atlas = "atlasnotjokers", + aurinko = true, + set_card_type_badge = function(self, card, badges) + badges[1] = create_badge(localize("k_planet_disc"), get_type_colour(self or card.config, card), nil, 1.2) + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["cry_Bulwark"].level or 1 + local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] + if levelone == 1 then + planetcolourone = G.C.UI.TEXT_DARK + end + return { + vars = { + localize("cry_hand_bulwark"), + G.GAME.hands["cry_Bulwark"].level, + G.GAME.hands["cry_Bulwark"].l_mult, + G.GAME.hands["cry_Bulwark"].l_chips, + colours = { planetcolourone }, + }, + } + end, + generate_ui = 0, +} +local void = { + dependencies = { + items = { + "set_cry_poker_hand_stuff", + }, + }, + object_type = "Consumable", + set = "Planet", + key = "void", + order = 3, + config = { hand_type = "cry_Clusterfuck", softlock = true }, + pos = { x = 0, y = 5 }, + atlas = "atlasnotjokers", + aurinko = true, + set_card_type_badge = function(self, card, badges) + badges[1] = create_badge("", get_type_colour(self or card.config, card), nil, 1.2) + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["cry_Clusterfuck"].level or 1 + local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] + if levelone == 1 then + planetcolourone = G.C.UI.TEXT_DARK + end + return { + vars = { + localize("cry_Clusterfuck"), + G.GAME.hands["cry_Clusterfuck"].level, + G.GAME.hands["cry_Clusterfuck"].l_mult, + G.GAME.hands["cry_Clusterfuck"].l_chips, + colours = { planetcolourone }, + }, + } + end, + generate_ui = 0, +} +local marsmoons = { + dependencies = { + items = { + "set_cry_poker_hand_stuff", + }, + }, + object_type = "Consumable", + set = "Planet", + key = "marsmoons", + order = 4, + config = { hand_type = "cry_UltPair", softlock = true }, + pos = { x = 2, y = 5 }, + atlas = "atlasnotjokers", + aurinko = true, + set_card_type_badge = function(self, card, badges) + badges[1] = create_badge(localize("k_planet_satellite"), get_type_colour(self or card.config, card), nil, 1.2) + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["cry_UltPair"].level or 1 + local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] + if levelone == 1 then + planetcolourone = G.C.UI.TEXT_DARK + end + return { + vars = { + localize("cry_UltPair"), + G.GAME.hands["cry_UltPair"].level, + G.GAME.hands["cry_UltPair"].l_mult, + G.GAME.hands["cry_UltPair"].l_chips, + colours = { planetcolourone }, + }, + } + end, + generate_ui = 0, +} +local universe = { + dependencies = { + items = { + "set_cry_poker_hand_stuff", + }, + }, + object_type = "Consumable", + set = "Planet", + key = "universe", + config = { hand_type = "cry_WholeDeck", softlock = true }, + pos = { x = 4, y = 5 }, + order = 5, + atlas = "atlasnotjokers", + aurinko = true, + set_card_type_badge = function(self, card, badges) + badges[1] = create_badge(localize("k_planet_universe"), get_type_colour(self or card.config, card), nil, 1.2) + end, + loc_vars = function(self, info_queue, center) + local levelone = G.GAME.hands["cry_WholeDeck"].level or 1 + local planetcolourone = G.C.HAND_LEVELS[math.min(levelone, 7)] + if levelone == 1 then + planetcolourone = G.C.UI.TEXT_DARK + end + return { + vars = { + localize("cry_UltPair"), + G.GAME.hands["cry_WholeDeck"].level, + G.GAME.hands["cry_WholeDeck"].l_mult, + G.GAME.hands["cry_WholeDeck"].l_chips, + colours = { planetcolourone }, + }, + } + end, + generate_ui = 0, +} function suit_level_up(center, card, area, copier, number) local used_consumable = copier or card + if not number then + number = 1 + end for _, v in pairs(card.config.center.config.hand_types) do - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { - handname = localize(v, "poker_hands"), - chips = G.GAME.hands[v].chips, - mult = G.GAME.hands[v].mult, - level = G.GAME.hands[v].level, - } - ) + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, { + handname = localize(v, "poker_hands"), + chips = G.GAME.hands[v].chips, + mult = G.GAME.hands[v].mult, + level = G.GAME.hands[v].level, + }) level_up_hand(used_consumable, v, nil, number) end update_hand_text( @@ -827,34 +1078,6 @@ function suit_level_up(center, card, area, copier, number) { mult = 0, chips = 0, handname = "", level = "" } ) end -function neutronstarrandomhand(ignore, seed, allowhidden) - --From JenLib's get_random_hand - local chosen_hand - ignore = ignore or {} - seed = seed or "randomhand" - if type(ignore) ~= "table" then - ignore = { ignore } - end - while true do - chosen_hand = pseudorandom_element(G.handlist, pseudoseed(seed)) - if G.GAME.hands[chosen_hand].visible or allowhidden then - local safe = true - for _, v in pairs(ignore) do - if v == chosen_hand then - safe = false - end - end - if safe then - break - end - end - end - return chosen_hand -end -local planet_cards = { planetlua, nstar, timantti, klubi, sydan, lapio, sunplanet } -if Cryptid.enabled["Misc."] then - planet_cards[#planet_cards + 1] = kaikki -end -if not (SMODS.Mods["jen"] or {}).can_load then -end +local planet_cards = + { planetlua, nstar, timantti, klubi, sydan, lapio, sunplanet, kaikki, abelt, void, marsmoons, universe } return { name = "Planets", init = function() end, items = planet_cards } diff --git a/Cryptid/Items/Sleeves.lua b/Cryptid/items/sleeve.lua similarity index 83% rename from Cryptid/Items/Sleeves.lua rename to Cryptid/items/sleeve.lua index 88e6aa3..af4e302 100644 --- a/Cryptid/Items/Sleeves.lua +++ b/Cryptid/items/sleeve.lua @@ -1,12 +1,4 @@ if CardSleeves then - local atlasSleeves = SMODS.Atlas({ - object_type = "Atlas", - key = "atlasSleeves", - path = "atlasSleeves.png", - px = 73, - py = 95, - }) - local encodedsleeve = CardSleeves.Sleeve({ key = "encoded_sleeve", name = "Encoded Sleeve", @@ -24,19 +16,25 @@ if CardSleeves 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 + -- 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, @@ -79,9 +77,11 @@ if CardSleeves then unlocked = true, unlock_condition = { deck = "Misprint Deck", stake = 1 }, apply = function(self) - G.GAME.modifiers.cry_misprint_min = self.config.cry_misprint_min - G.GAME.modifiers.cry_misprint_max = self.config.cry_misprint_max - if self.get_current_deck_key() == "b_cry_antimatter" then G.GAME.modifiers.cry_misprint_min = 1 end + 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, }) @@ -124,6 +124,7 @@ if CardSleeves then 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) @@ -344,20 +345,22 @@ if CardSleeves then G.GAME.modifiers.cry_forced_draw_amount = self.config.cry_forced_draw_amount end, }) - local sleeveitems = { atlasSleeves } - if CardSleeves and Cryptid.enabled["Misc. Decks"] then - sleeveitems[#sleeveitems + 1] = encodedsleeve - sleeveitems[#sleeveitems + 1] = equilibriumsleeve - sleeveitems[#sleeveitems + 1] = misprintsleeve - sleeveitems[#sleeveitems + 1] = infinitesleeve - sleeveitems[#sleeveitems + 1] = conveyorsleeve - sleeveitems[#sleeveitems + 1] = CCDsleeve - sleeveitems[#sleeveitems + 1] = wormholesleeve - sleeveitems[#sleeveitems + 1] = redeemedsleeve - sleeveitems[#sleeveitems + 1] = criticalsleeve - sleeveitems[#sleeveitems + 1] = legendarysleeve - sleeveitems[#sleeveitems + 1] = spookysleeve - sleeveitems[#sleeveitems + 1] = bountifulsleeve + local sleeveitems = {} + if CardSleeves then + sleeveitems = { + encodedsleeve, + equilibriumsleeve, + misprintsleeve, + infinitesleeve, + conveyorsleeve, + CCDsleeve, + wormholesleeve, + redeemedsleeve, + criticalsleeve, + legendarysleeve, + spookysleeve, + bountifulsleeve, + } end end return { name = "Sleeves", init = function() end, items = { sleeveitems } } diff --git a/Cryptid/Items/Spectrals.lua b/Cryptid/items/spectral.lua similarity index 61% rename from Cryptid/Items/Spectrals.lua rename to Cryptid/items/spectral.lua index 7b28cab..4e025bf 100644 --- a/Cryptid/Items/Spectrals.lua +++ b/Cryptid/items/spectral.lua @@ -1,5 +1,10 @@ local white_hole = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-White Hole", key = "white_hole", @@ -9,44 +14,44 @@ local white_hole = { atlas = "atlasnotjokers", hidden = true, --default soul_rate of 0.3% in spectral packs is used soul_set = "Planet", + loc_vars = function(self, info_queue, card) + return { key = Card.get_gameset(card) == "modest" and "c_cry_white_hole" or "c_cry_white_hole2" } + end, can_use = function(self, card) return true end, use = function(self, card, area, copier) local used_consumable = copier or card + local modest = Card.get_gameset(used_consumable) == "modest" --Get most played hand type (logic yoinked from Telescope) - local _planet, _hand, _tally = nil, nil, -1 + local _hand, _tally = nil, -1 for k, v in ipairs(G.handlist) do if G.GAME.hands[v].visible and G.GAME.hands[v].played > _tally then _hand = v _tally = G.GAME.hands[v].played end end - if _hand then - for k, v in pairs(G.P_CENTER_POOLS.Planet) do - if v.config.hand_type == _hand then - _planet = v.key + local removed_levels = 0 + for k, v in ipairs(G.handlist) do + if to_big(G.GAME.hands[v].level) > to_big(1) then + local this_removed_levels = G.GAME.hands[v].level - 1 + removed_levels = removed_levels + this_removed_levels + if v ~= _hand or not modest then + level_up_hand(used_consumable, v, true, -this_removed_levels) end end end - local removed_levels = 0 - for k, v in ipairs(G.handlist) do - if G.GAME.hands[v].level > 1 then - local this_removed_levels = G.GAME.hands[v].level - 1 - removed_levels = removed_levels + this_removed_levels - level_up_hand(used_consumable, v, true, -this_removed_levels) - end + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, { + handname = localize(_hand, "poker_hands"), + chips = G.GAME.hands[_hand].chips, + mult = G.GAME.hands[_hand].mult, + level = G.GAME.hands[_hand].level, + }) + if modest then + level_up_hand(used_consumable, _hand, false, 4) + else + level_up_hand(used_consumable, _hand, false, 3 * removed_levels) end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { - handname = localize(_hand, "poker_hands"), - chips = G.GAME.hands[_hand].chips, - mult = G.GAME.hands[_hand].mult, - level = G.GAME.hands[_hand].level, - } - ) - level_up_hand(used_consumable, _hand, false, 3 * removed_levels) update_hand_text( { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, { mult = 0, chips = 0, handname = "", level = "" } @@ -58,39 +63,36 @@ local white_hole = { can_bulk_use = true, bulk_use = function(self, card, area, copier, number) local used_consumable = copier or card + local modest = Card.get_gameset(used_consumable) == "modest" --Get most played hand type (logic yoinked from Telescope) - local _planet, _hand, _tally = nil, nil, -1 + local _hand, _tally = nil, -1 for k, v in ipairs(G.handlist) do if G.GAME.hands[v].visible and G.GAME.hands[v].played > _tally then _hand = v _tally = G.GAME.hands[v].played end end - if _hand then - for k, v in pairs(G.P_CENTER_POOLS.Planet) do - if v.config.hand_type == _hand then - _planet = v.key + local removed_levels = 0 + for k, v in ipairs(G.handlist) do + if to_big(G.GAME.hands[v].level) > to_big(1) then + local this_removed_levels = G.GAME.hands[v].level - 1 + removed_levels = removed_levels + this_removed_levels + if v ~= _hand or not modest then + level_up_hand(used_consumable, v, true, -this_removed_levels) end end end - local removed_levels = 0 - for k, v in ipairs(G.handlist) do - if G.GAME.hands[v].level > 1 then - local this_removed_levels = G.GAME.hands[v].level - 1 - removed_levels = removed_levels + this_removed_levels - level_up_hand(used_consumable, v, true, -this_removed_levels) - end + update_hand_text({ sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, { + handname = localize(_hand, "poker_hands"), + chips = G.GAME.hands[_hand].chips, + mult = G.GAME.hands[_hand].mult, + level = G.GAME.hands[_hand].level, + }) + if modest then + level_up_hand(used_consumable, _hand, false, 4 * number) + else + level_up_hand(used_consumable, _hand, false, removed_levels * 3 ^ number) end - update_hand_text( - { sound = "button", volume = 0.7, pitch = 0.8, delay = 0.3 }, - { - handname = localize(_hand, "poker_hands"), - chips = G.GAME.hands[_hand].chips, - mult = G.GAME.hands[_hand].mult, - level = G.GAME.hands[_hand].level, - } - ) - level_up_hand(used_consumable, _hand, false, removed_levels * 3 ^ number) update_hand_text( { sound = "button", volume = 0.7, pitch = 1.1, delay = 0 }, { mult = 0, chips = 0, handname = "", level = "" } @@ -99,6 +101,11 @@ local white_hole = { } local vacuum = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Vacuum", key = "vacuum", @@ -170,6 +177,11 @@ local vacuum = { } local hammerspace = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Hammerspace", key = "hammerspace", @@ -225,6 +237,11 @@ local hammerspace = { } local lock = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Lock", key = "lock", @@ -272,6 +289,7 @@ local lock = { CARD:flip() CARD.ability.perishable = nil CARD.pinned = nil + CARD.ability.pinned = nil CARD:set_rental(nil) if not CARD.sob then CARD:set_eternal(nil) @@ -331,6 +349,11 @@ local lock = { } local trade = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Trade", key = "trade", @@ -341,18 +364,11 @@ local trade = { atlas = "atlasnotjokers", can_use = function(self, card) local usable_count = 0 - for _, v in pairs(G.GAME.used_vouchers) do - if v then + for _, v in pairs(G.vouchers.cards) do + if not v.ability.eternal then usable_count = usable_count + 1 end end - if G.GAME.voucher_sticker_index and G.GAME.voucher_sticker_index.eternal then - for _, v in pairs(G.GAME.voucher_sticker_index.eternal) do - if v then - usable_count = usable_count - 1 - end - end - end if usable_count > 0 then return true else @@ -362,28 +378,24 @@ local trade = { use = function(self, card, area, copier) local used_consumable = copier or card local usable_vouchers = {} - for k, _ in pairs(G.GAME.used_vouchers) do + for k, v in ipairs(G.vouchers.cards) do local can_use = true - for kk, __ in pairs(G.GAME.used_vouchers) do - local v = G.P_CENTERS[kk] - if v.requires then - for _, vv in pairs(v.requires) do - if vv == k then + for kk, vv in ipairs(G.vouchers.cards) do + local center = G.P_CENTERS[vv.config.center.key] + if center.requires then + for _, vvv in pairs(center.requires) do + if vvv == v.config.center.key then can_use = false break end end end - if - G.GAME.voucher_sticker_index - and G.GAME.voucher_sticker_index.eternal - and G.GAME.voucher_sticker_index.eternal[v.name] - then - can_use = false - end + end + if v.ability.eternal then + can_use = false end if can_use then - usable_vouchers[#usable_vouchers + 1] = k + usable_vouchers[#usable_vouchers + 1] = v end end local unredeemed_voucher = pseudorandom_element(usable_vouchers, pseudoseed("cry_trade")) @@ -398,36 +410,13 @@ local trade = { else area = G.play end - local card = create_card("Voucher", area, nil, nil, nil, nil, unredeemed_voucher) - if G.GAME.voucher_edition_index[card.ability.name] then - local edition = cry_edition_to_table(G.GAME.voucher_edition_index[card.ability.name]) - if edition then - card:set_edition(edition, true, true) - end - end - if G.GAME.voucher_sticker_index.eternal[card.ability.name] then - card:set_eternal(true) - card.ability.eternal = true - end - if G.GAME.voucher_sticker_index.perishable[card.ability.name] then - card:set_perishable(true) - card.ability.perish_tally = G.GAME.voucher_sticker_index.perishable[card.ability.name] - card.ability.perishable = true - if G.GAME.voucher_sticker_index.perishable[card.ability.name] == 0 then - card.debuff = true - end - end - if G.GAME.voucher_sticker_index.rental[card.ability.name] then - card:set_rental(true) - card.ability.rental = true - end - if G.GAME.voucher_sticker_index.pinned[card.ability.name] then - card.pinned = true - end - if G.GAME.voucher_sticker_index.banana[card.ability.name] then - card.ability.banana = true + local card = copy_card(unredeemed_voucher) + card.ability.extra = copy_table(unredeemed_voucher.ability.extra) + if card.facing == "back" then + card:flip() end + card:start_materialize() area:emplace(card) card.cost = 0 @@ -440,6 +429,7 @@ local trade = { delay = 0, func = function() card:start_dissolve() + unredeemed_voucher:start_dissolve() return true end, })) @@ -482,6 +472,11 @@ local trade = { } local analog = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Analog", key = "analog", @@ -537,6 +532,11 @@ local analog = { } local summoning = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Summoning", key = "summoning", @@ -544,8 +544,19 @@ local summoning = { cost = 4, order = 5, atlas = "atlasnotjokers", + loc_vars = function(self, info_queue, center) + return { + vars = { + cry_card_enabled("set_cry_epic") == true and localize("k_cry_epic") or localize("k_rare"), + colours = { G.C.RARITY[cry_card_enabled("set_cry_epic") == true and "cry_epic" or 3] }, + }, + } + end, can_use = function(self, card) return #G.jokers.cards > 0 + and #G.jokers.cards <= G.jokers.config.card_limit + --Prevent use if slots are full and all jokers are eternal (would exceed limit) + and #advanced_find_joker(nil, nil, nil, { "eternal" }, true, "j") < G.jokers.config.card_limit end, use = function(self, card, area, copier) local used_consumable = copier or card @@ -556,6 +567,7 @@ local summoning = { end end local chosen_joker = pseudorandom_element(G.jokers.cards, pseudoseed("cry_summoning")) + local value = cry_card_enabled("set_cry_epic") == true and "cry_epic" or 0.99 local _first_dissolve = nil G.E_MANAGER:add_event(Event({ trigger = "before", @@ -575,7 +587,7 @@ local summoning = { delay = 0.4, func = function() play_sound("timpani") - local card = create_card("Joker", G.jokers, nil, "cry_epic", nil, nil, nil, "cry_summoning") + local card = create_card("Joker", G.jokers, nil, value, nil, nil, nil, "cry_summoning") card:add_to_deck() G.jokers:emplace(card) card:juice_up(0.3, 0.5) @@ -587,6 +599,11 @@ local summoning = { } local replica = { object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Replica", key = "replica", @@ -651,11 +668,18 @@ local replica = { } local ritual = { cry_credits = { - idea = {"Mystic Misclick"}, - art = {"spire_winder"}, - code = {"spire_winder"} + idea = { "Mystic Misclick" }, + art = { "spire_winder" }, + code = { "spire_winder" }, }, object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + "e_cry_mosaic", + "e_cry_astral", + }, + }, set = "Spectral", name = "cry-Ritual", key = "ritual", @@ -680,7 +704,9 @@ local ritual = { pos = { x = 5, y = 1 }, can_use = function(self, card) --TODO: CCD card compat - if #G.hand.highlighted > card.ability.max_highlighted then return false end + if #G.hand.highlighted > card.ability.max_highlighted then + return false + end for _, v in ipairs(G.hand.highlighted) do if v.edition then return false @@ -693,52 +719,57 @@ local ritual = { for i = 1, #G.hand.highlighted do local highlighted = G.hand.highlighted[i] if highlighted ~= card then - G.E_MANAGER:add_event(Event({ - func = function() - play_sound("tarot1") - highlighted:juice_up(0.3, 0.5) - return true - end, - })) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.1, - func = function() - if highlighted then - local random_result = pseudorandom(pseudoseed("cry-Ritual")) - if random_result >= 5 / 6 then - highlighted:set_edition({cry_astral = true}) - else - if random_result >= 1 / 2 then - highlighted:set_edition({cry_mosaic = true}) + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + highlighted:juice_up(0.3, 0.5) + return true + end, + })) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.1, + func = function() + if highlighted then + local random_result = pseudorandom(pseudoseed("cry-Ritual")) + if random_result >= 5 / 6 then + highlighted:set_edition({ cry_astral = true }) else - highlighted:set_edition({negative = true}) + if random_result >= 1 / 2 then + highlighted:set_edition({ cry_mosaic = true }) + else + highlighted:set_edition({ negative = true }) + end end end - end - return true - end, - })) - delay(0.5) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.2, - func = function() - G.hand:unhighlight_all() - return true - end, - })) + return true + end, + })) + delay(0.5) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.2, + func = function() + G.hand:unhighlight_all() + return true + end, + })) end end end, } local adversary = { cry_credits = { - idea = {"y_not_tony"}, - art = {"Pyrocreep"}, - code = {"spire_winder"} + idea = { "y_not_tony" }, + art = { "Pyrocreep" }, + code = { "spire_winder" }, }, object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Adversary", key = "adversary", @@ -789,7 +820,9 @@ local adversary = { delay = 0.15, func = function() CARD:flip() - if not CARD.edition then CARD:set_edition({negative = true}) end + if not CARD.edition then + CARD:set_edition({ negative = true }) + end play_sound("card1", percent) CARD:juice_up(0.3, 0.3) return true @@ -821,19 +854,24 @@ local adversary = { } local chambered = { cry_credits = { - idea = {"y_not_tony"}, - art = {"Pyrocreep"}, - code = {"spire_winder"} + idea = { "y_not_tony" }, + art = { "Pyrocreep" }, + code = { "spire_winder" }, }, object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-Chambered", key = "chambered", pos = { x = 5, y = 0 }, - config = { extra = {num_copies = 3}}, + config = { extra = { num_copies = 3 } }, loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = { key = "e_negative_consumable", set = "Edition", config = { extra = 1 } } - return { vars = { card.ability.extra.num_copies } } + info_queue[#info_queue + 1] = { key = "e_negative_consumable", set = "Edition", config = { extra = 1 } } + return { vars = { card.ability.extra.num_copies } } end, cost = 4, order = 11, @@ -858,35 +896,48 @@ local chambered = { table.insert(filteredCons, item) end end - target = pseudorandom_element(filteredCons, pseudoseed('chambered')) - for i=1,card.ability.extra.num_copies do + target = pseudorandom_element(filteredCons, pseudoseed("chambered")) + for i = 1, card.ability.extra.num_copies do G.E_MANAGER:add_event(Event({ func = function() local card_copy = copy_card(target, nil) if Incantation then card_copy:setQty(1) end - card_copy:set_edition({negative = true}, true) + card_copy:set_edition({ negative = true }, true) card_copy:add_to_deck() G.consumeables:emplace(card_copy) return true - end})) - card_eval_status_text(target, 'extra', nil, nil, nil, {message = localize('k_duplicated_ex'), colour = G.C.SECONDARY_SET.Spectral}) + end, + })) + card_eval_status_text( + target, + "extra", + nil, + nil, + nil, + { message = localize("k_duplicated_ex"), colour = G.C.SECONDARY_SET.Spectral } + ) end end, } local conduit = { cry_credits = { - idea = {"Knockback1 (Oiiman)"}, - art = {"Knockback1 (Oiiman)"}, - code = {"spire_winder"} + idea = { "Knockback1 (Oiiman)" }, + art = { "Knockback1 (Oiiman)" }, + code = { "spire_winder" }, }, object_type = "Consumable", + dependencies = { + items = { + "set_cry_spectral", + }, + }, set = "Spectral", name = "cry-conduit", key = "conduit", pos = { x = 6, y = 0 }, - config = { }, + config = {}, cost = 4, order = 12, atlas = "atlasnotjokers", @@ -987,300 +1038,17 @@ local spectrals = { white_hole, vacuum, hammerspace, - lock, + lock, trade, analog, replica, adversary, chambered, conduit, + summoning, + ritual, } -if Cryptid.enabled["Epic Jokers"] then - spectrals[#spectrals + 1] = summoning -end -if Cryptid.enabled["Misc."] then - spectrals[#spectrals + 1] = ritual -end return { name = "Spectrals", - init = function() - --Trade - undo redeeming vouchers - function Card:unredeem() - if self.ability.set == "Voucher" then - stop_use() - if not self.config.center.discovered then - discover_card(self.config.center) - end - - self.states.hover.can = false - if G.GAME.used_vouchers[self.config.center_key] then - G.GAME.used_vouchers[self.config.center_key] = nil - end - G.GAME.cry_owned_vouchers[self.config.center_key] = nil - local top_dynatext = nil - local bot_dynatext = nil - - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.4, - func = function() - top_dynatext = DynaText({ - string = localize({ - type = "name_text", - set = self.config.center.set, - key = self.config.center.key, - }), - colours = { G.C.RED }, - rotate = 1, - shadow = true, - bump = true, - float = true, - scale = 0.9, - pop_in = 0.6 / G.SPEEDFACTOR, - pop_in_rate = 1.5 * G.SPEEDFACTOR, - }) - bot_dynatext = DynaText({ - string = localize("cry_unredeemed"), - colours = { G.C.RED }, - rotate = 2, - shadow = true, - bump = true, - float = true, - scale = 0.9, - pop_in = 1.4 / G.SPEEDFACTOR, - pop_in_rate = 1.5 * G.SPEEDFACTOR, - pitch_shift = 0.25, - }) - self:juice_up(0.3, 0.5) - play_sound("card1") - play_sound("timpani") - self.children.top_disp = UIBox({ - definition = { - n = G.UIT.ROOT, - config = { align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15 }, - nodes = { - { n = G.UIT.O, config = { object = top_dynatext } }, - }, - }, - config = { align = "tm", offset = { x = 0, y = 0 }, parent = self }, - }) - self.children.bot_disp = UIBox({ - definition = { - n = G.UIT.ROOT, - config = { align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15 }, - nodes = { - { n = G.UIT.O, config = { object = bot_dynatext } }, - }, - }, - config = { align = "bm", offset = { x = 0, y = 0 }, parent = self }, - }) - return true - end, - })) - G.GAME.current_round.voucher = nil - - self:unapply_to_run() - - delay(0.6) - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 2.6, - func = function() - top_dynatext:pop_out(4) - bot_dynatext:pop_out(4) - return true - end, - })) - - G.E_MANAGER:add_event(Event({ - trigger = "after", - delay = 0.5, - func = function() - self.children.top_disp:remove() - self.children.top_disp = nil - self.children.bot_disp:remove() - self.children.bot_disp = nil - return true - end, - })) - end - end - function Card:unapply_to_run(center) - local center_table = { - name = center and center.name or self and self.ability.name, - extra = self and G.GAME.cry_voucher_centers[self.config.center_key].config.extra, - } - local obj = center or self.config.center - if obj.unredeem and type(obj.unredeem) == "function" then - obj:unredeem(self) - return - end - local is_debuffed = false - if - G.GAME.voucher_sticker_index.perishable[center_table.name] - and G.GAME.voucher_sticker_index.perishable[center_table.name] == 0 - then - is_debuffed = true - end - if G.GAME.voucher_sticker_index.eternal[center_table.name] then - G.GAME.voucher_sticker_index.eternal[center_table.name] = nil - end - if G.GAME.voucher_sticker_index.perishable[center_table.name] then - G.GAME.voucher_sticker_index.perishable[center_table.name] = nil - end - if G.GAME.voucher_sticker_index.rental[center_table.name] then - G.GAME.voucher_sticker_index.rental[center_table.name] = nil - end - if G.GAME.voucher_sticker_index.pinned[center_table.name] then - G.GAME.voucher_sticker_index.pinned[center_table.name] = nil - end - if G.GAME.voucher_sticker_index.banana[center_table.name] then - G.GAME.voucher_sticker_index.banana[center_table.name] = nil - end - - if is_debuffed == false then - if center_table.name == "Overstock" or center_table.name == "Overstock Plus" then - G.E_MANAGER:add_event(Event({ - func = function() - change_shop_size(-center_table.extra) - return true - end, - })) - end - if center_table.name == "Tarot Merchant" or center_table.name == "Tarot Tycoon" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.tarot_rate = G.GAME.tarot_rate / center_table.extra - return true - end, - })) - end - if center_table.name == "Planet Merchant" or center_table.name == "Planet Tycoon" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.planet_rate = G.GAME.planet_rate / center_table.extra - return true - end, - })) - end - if center_table.name == "Hone" or center_table.name == "Glow Up" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.edition_rate = G.GAME.edition_rate / center_table.extra - return true - end, - })) - end - if center_table.name == "Magic Trick" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.playing_card_rate = 0 - return true - end, - })) - end - if center_table.name == "Crystal Ball" then - G.E_MANAGER:add_event(Event({ - func = function() - G.consumeables.config.card_limit = G.consumeables.config.card_limit - center_table.extra - return true - end, - })) - end - if center_table.name == "Clearance Sale" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.discount_percent = 0 - for k, v in pairs(G.I.CARD) do - if v.set_cost then - v:set_cost() - end - end - return true - end, - })) - end - if center_table.name == "Liquidation" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.discount_percent = 25 -- no idea why the below returns nil, so it's hardcoded now - -- G.GAME.discount_percent = G.P_CENTERS.v_clearance_sale.extra - for k, v in pairs(G.I.CARD) do - if v.set_cost then - v:set_cost() - end - end - return true - end, - })) - end - if center_table.name == "Reroll Surplus" or center_table.name == "Reroll Glut" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost + self.ability.extra - G.GAME.current_round.reroll_cost = - math.max(0, G.GAME.current_round.reroll_cost + self.ability.extra) - return true - end, - })) - end - if center_table.name == "Seed Money" then - G.E_MANAGER:add_event(Event({ - func = function() - G.GAME.interest_cap = 25 --note: does not account for potential deck effects - return true - end, - })) - end - if center_table.name == "Money Tree" then - G.E_MANAGER:add_event(Event({ - func = function() - if G.GAME.used_vouchers.v_seed_money then - G.GAME.interest_cap = 50 - else - G.GAME.interest_cap = 25 - end - return true - end, - })) - end - if center_table.name == "Grabber" or center_table.name == "Nacho Tong" then - G.GAME.round_resets.hands = G.GAME.round_resets.hands - center_table.extra - ease_hands_played(-center_table.extra) - end - if center_table.name == "Paint Brush" or center_table.name == "Palette" then - G.hand:change_size(-center_table.extra) - end - if center_table.name == "Wasteful" or center_table.name == "Recyclomancy" then - G.GAME.round_resets.discards = G.GAME.round_resets.discards - center_table.extra - ease_discard(-center_table.extra) - end - if center_table.name == "Antimatter" then - G.E_MANAGER:add_event(Event({ - func = function() - if G.jokers then - G.jokers.config.card_limit = G.jokers.config.card_limit - center_table.extra - end - return true - end, - })) - end - if center_table.name == "Hieroglyph" or center_table.name == "Petroglyph" then - ease_ante(center_table.extra) - G.GAME.round_resets.blind_ante = G.GAME.round_resets.blind_ante or G.GAME.round_resets.ante - G.GAME.round_resets.blind_ante = G.GAME.round_resets.blind_ante + center_table.extra - - if center_table.name == "Hieroglyph" then - G.GAME.round_resets.hands = G.GAME.round_resets.hands + center_table.extra - ease_hands_played(center_table.extra) - end - if center_table.name == "Petroglyph" then - G.GAME.round_resets.discards = G.GAME.round_resets.discards + center_table.extra - ease_discard(center_table.extra) - end - end - end - end - end, items = spectrals, } diff --git a/Cryptid/Items/Spooky.lua b/Cryptid/items/spooky.lua similarity index 63% rename from Cryptid/Items/Spooky.lua rename to Cryptid/items/spooky.lua index 936721b..6839657 100644 --- a/Cryptid/Items/Spooky.lua +++ b/Cryptid/items/spooky.lua @@ -1,5 +1,10 @@ local cotton_candy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, key = "cotton_candy", pos = { x = 2, y = 0 }, rarity = "cry_candy", @@ -9,23 +14,29 @@ local cotton_candy = { blueprint_compat = true, eternal_compat = false, perishable_compat = false, + pools = { ["Food"] = true }, calculate = function(self, card, context) if context.selling_self and not context.retrigger_joker and not context.blueprint_card then for i = 1, #G.jokers.cards do if G.jokers.cards[i] == card then if i > 1 then - G.jokers.cards[i-1]:set_edition{negative = true} + G.jokers.cards[i - 1]:set_edition({ negative = true }) end if i < #G.jokers.cards then - G.jokers.cards[i+1]:set_edition{negative = true} + G.jokers.cards[i + 1]:set_edition({ negative = true }) end end end end - end + end, } local wrapped = { object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, key = "wrapped", pos = { x = 5, y = 0 }, rarity = "cry_candy", @@ -34,8 +45,9 @@ local wrapped = { eternal_compat = false, perishable_compat = false, order = 131, - immune_to_chemach = true, - config = {extra = {rounds = 2}}, + immutable = true, + config = { extra = { rounds = 2 } }, + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) info_queue[#info_queue + 1] = { set = "Other", key = "food_jokers" } return { vars = { center.ability.extra.rounds } } @@ -76,15 +88,7 @@ local wrapped = { return true end, })) - local card = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - Cryptid.get_food("cry_wrapped") - ) + local card = create_card("Food", G.jokers, nil, nil, nil, nil, nil, "cry_wrapped") card:add_to_deck() G.jokers:emplace(card) return { @@ -97,60 +101,74 @@ local wrapped = { } local choco_dice = { object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, key = "chocolate_dice", pos = { x = 1, y = 0 }, rarity = 3, cost = 10, order = 132, atlas = "atlasspooky", - config = {extra = {roll = 0}}, + config = { extra = { roll = 0 } }, immutable = true, no_dbl = true, loc_vars = function(self, info_queue, center) if not center then --tooltip elseif not center.added_to_deck then for i = 1, 10 do - info_queue[#info_queue + 1] = { set = "Other", key = "ev_cry_choco"..i } + info_queue[#info_queue + 1] = { set = "Other", key = "ev_cry_choco" .. i } end else - SMODS.Events["ev_cry_choco"..center.ability.extra.roll]:loc_vars(info_queue, center) + SMODS.Events["ev_cry_choco" .. center.ability.extra.roll]:loc_vars(info_queue, center) end - return { vars = { not center and "None" or center.ability.extra.roll == 0 and "None" or center.ability.extra.roll } } + return { + vars = { not center and "None" or center.ability.extra.roll == 0 and "None" or center.ability.extra.roll }, + } end, calculate = function(self, card, context) - if context.end_of_round and not context.individual and not context.repetition and not context.blueprint and not context.retrigger_joker and G.GAME.blind.boss then + if + context.end_of_round + and not context.individual + and not context.repetition + and not context.blueprint + and not context.retrigger_joker + and G.GAME.blind.boss + then --todo: check if duplicates of event are already started/finished - SMODS.Events["ev_cry_choco"..card.ability.extra.roll]:finish() - card.ability.extra.roll = roll_dice("cry_choco", 1, 10, {ignore_value = card.ability.extra.roll}) - SMODS.Events["ev_cry_choco"..card.ability.extra.roll]:start() + SMODS.Events["ev_cry_choco" .. card.ability.extra.roll]:finish() + card.ability.extra.roll = roll_dice("cry_choco", 1, 10, { ignore_value = card.ability.extra.roll }) + SMODS.Events["ev_cry_choco" .. card.ability.extra.roll]:start() return { message = tostring(card.ability.extra.roll), - colour = G.C.GREEN + colour = G.C.GREEN, } end end, remove_from_deck = function(self, card, from_debuff) if not from_debuff then - SMODS.Events["ev_cry_choco"..card.ability.extra.roll]:finish() + SMODS.Events["ev_cry_choco" .. card.ability.extra.roll]:finish() end - end, } local choco_base_event = { object_type = "Event", - key = "choco0" + key = "choco0", } local choco1 = { object_type = "Event", key = "choco1", loc_vars = function(self, info_queue, center) info_queue[#info_queue + 1] = { set = "Other", key = self.key } --todo specific_vars - info_queue[#info_queue + 1] = { set = "Other", key = "cry_flickering_desc", specific_vars = {5} } - info_queue[#info_queue + 1] = { set = "Joker", key = "j_cry_ghost", specific_vars = {G.GAME.probabilities.normal or 1,2,6}} + info_queue[#info_queue + 1] = { set = "Other", key = "cry_flickering_desc", specific_vars = { 5 } } + info_queue[#info_queue + 1] = + { set = "Joker", key = "j_cry_ghost", specific_vars = { G.GAME.probabilities.normal or 1, 2, 6 } } end, start = function(self) G.GAME.events[self.key] = true - local areas = {"jokers","deck","hand","play","discard"} + local areas = { "jokers", "deck", "hand", "play", "discard" } for k, v in pairs(areas) do for i = 1, #G[v].cards do if pseudorandom(pseudoseed("cry_choco_possession")) < G.GAME.probabilities.normal / 3 then @@ -165,10 +183,10 @@ local choco1 = { G.jokers:emplace(card) else if G.GAME.dollars ~= 0 then - ease_dollars(((-G.GAME.dollars) - 1e6), true) - end + ease_dollars((-G.GAME.dollars - 1e6), true) + end end - end + end, } local choco2 = { object_type = "Event", @@ -178,7 +196,25 @@ local choco2 = { if context.cash_out then G.GAME.current_round.rerolled = false end - end + end, + init = function(self) + --track if rerolled + local gfrs = G.FUNCS.reroll_shop + G.FUNCS.reroll_shop = function(e) + local ret = gfrs(e) + G.GAME.current_round.rerolled = true + return ret + end + local gfcr = G.FUNCS.can_reroll + G.FUNCS.can_reroll = function(e) + if G.GAME.events.ev_cry_choco2 and G.GAME.current_round.rerolled then + e.config.colour = G.C.UI.BACKGROUND_INACTIVE + e.config.button = nil + return + end + return gfcr(e) + end + end, } local num_potions = 3 --note: must be changed whenever new potion effects are added local choco3 = { @@ -186,12 +222,12 @@ local choco3 = { key = "choco3", start = function(self) if not G.GAME.events[self.key] then - G.GAME.events[self.key] = {potions = {}} + G.GAME.events[self.key] = { potions = {} } end for i = 1, 3 do local card = create_card("Unique", G.consumeables, nil, nil, nil, nil, "c_cry_potion") card:add_to_deck() - card.ability.random_event = pseudorandom(pseudoseed("cry_choco_witch"),1,num_potions) + card.ability.random_event = pseudorandom(pseudoseed("cry_choco_witch"), 1, num_potions) G.consumeables:emplace(card) end end, @@ -202,20 +238,26 @@ local choco3 = { finish = function(self) --Reverse all potion effects if G.GAME.events[self.key].potions[2] then - G.GAME.starting_params.ante_scaling = G.GAME.starting_params.ante_scaling / (1.15^G.GAME.events[self.key].potions[2]) + G.GAME.starting_params.ante_scaling = G.GAME.starting_params.ante_scaling + / (1.15 ^ G.GAME.events[self.key].potions[2]) end if G.GAME.events[self.key].potions[3] then - G.GAME.round_resets.hands = G.GAME.round_resets.hands + G.GAME.events[self.key].potions[3] - ease_hands_played(G.GAME.events[self.key].potions[3]) - G.GAME.round_resets.discards = G.GAME.round_resets.discards + G.GAME.events[self.key].potions[3] - ease_discard(G.GAME.events[self.key].potions[3]) + G.GAME.round_resets.hands = G.GAME.round_resets.hands + G.GAME.events[self.key].potions[3] + ease_hands_played(G.GAME.events[self.key].potions[3]) + G.GAME.round_resets.discards = G.GAME.round_resets.discards + G.GAME.events[self.key].potions[3] + ease_discard(G.GAME.events[self.key].potions[3]) end G.GAME.events[self.key] = nil end, calculate = function(self, context) --bug: if this event finishes and starts, every potion gets instantly destroyed --bug: crashes if all 3 are used on blind skip - if context.pre_jokers and (context.skip_blind or (context.end_of_round and not context.individual and not context.repetition)) and not context.blueprint and not context.retrigger_joker then + if + context.pre_jokers + and (context.skip_blind or (context.end_of_round and not context.individual and not context.repetition)) + and not context.blueprint + and not context.retrigger_joker + then --Detect if a potion has been used local used_potion = false for i = 1, num_potions do @@ -233,7 +275,7 @@ local choco3 = { end end return true - end + end, })) else --these animations are still a bit goofy, idk why @@ -241,16 +283,16 @@ local choco3 = { func = function() for i = #G.consumeables.cards, 1, -1 do if G.consumeables.cards[i].config.center.key == "c_cry_potion" then - G.consumeables.cards[i].config.center:use(G.consumeables.cards[i],G.consumeables) + G.consumeables.cards[i].config.center:use(G.consumeables.cards[i], G.consumeables) G.consumeables.cards[i]:start_dissolve() end end return true - end + end, })) end end - end + end, --todo: loc_vars potions } local potion = { @@ -259,6 +301,7 @@ local potion = { key = "potion", name = "cry-Potion", pos = { x = 0, y = 1 }, + pixel_size = { w = 35 / 69 * 71, h = 35 / 69 * 71 }, config = { random_event = 2 }, cost = 4, no_doe = true, @@ -267,6 +310,7 @@ local potion = { immutable = true, no_dbl = true, no_grc = true, + no_collection = true, atlas = "atlasspooky", can_use = function(self, card) return true @@ -277,23 +321,24 @@ local potion = { use = function(self, card, area, copier) if not (G.GAME.events and G.GAME.events.ev_cry_choco3) then return - end -- Just in case a potion is found out side of the event - G.GAME.events.ev_cry_choco3.potions[card.ability.random_event] - = (G.GAME.events.ev_cry_choco3.potions[card.ability.random_event] or 0)+1 + end -- Just in case a potion is found out side of the event + G.GAME.events.ev_cry_choco3.potions[card.ability.random_event] = ( + G.GAME.events.ev_cry_choco3.potions[card.ability.random_event] or 0 + ) + 1 --Announce event G.E_MANAGER:add_event(Event({ func = function() play_sound("timpani", 1) attention_text({ scale = 1.4, - text = localize("cry_potion"..card.ability.random_event), + text = localize("cry_potion" .. card.ability.random_event), hold = 2, align = "cm", offset = { x = 0, y = -2.7 }, major = G.play, }) return true - end + end, })) if card.ability.random_event == 1 then -- -1 to all hand levels update_hand_text( @@ -319,32 +364,45 @@ local potion = { end end if card.ability.random_event == 3 then -- -1 Hand and Discard - G.GAME.round_resets.hands = G.GAME.round_resets.hands - 1 - ease_hands_played(-1) - G.GAME.round_resets.discards = G.GAME.round_resets.discards - 1 - ease_discard(-1) + G.GAME.round_resets.hands = G.GAME.round_resets.hands - 1 + ease_hands_played(-1) + G.GAME.round_resets.discards = G.GAME.round_resets.discards - 1 + ease_discard(-1) end - delay(12/G.SETTINGS.GAMESPEED) + delay(12 / G.SETTINGS.GAMESPEED) end, } local choco4 = { --lunar abyss object_type = "Event", key = "choco4", calculate = function(self, context) - if context.pre_jokers and context.before and not context.repetition and not context.blueprint and not context.retrigger_joker then + if + context.pre_jokers + and context.before + and not context.repetition + and not context.blueprint + and not context.retrigger_joker + then for i = 1, #G.play.cards do if pseudorandom(pseudoseed("cry_choco_lunar")) < G.GAME.probabilities.normal / 4 then local faces = {} for _, v in ipairs(SMODS.Rank.obj_buffer) do local r = SMODS.Ranks[v] - if r.face then table.insert(faces, r) end + if r.face then + table.insert(faces, r) + end end - local _rank = pseudorandom_element(faces, pseudoseed('cry_choco_lunar_create')).card_key - G.play.cards[i]:set_base(G.P_CARDS["C_".._rank]) + local _rank = pseudorandom_element(faces, pseudoseed("cry_choco_lunar_create")).card_key + G.play.cards[i]:set_base(G.P_CARDS["C_" .. _rank]) end end end - if context.post_jokers and context.joker_main and not context.blueprint_card and not context.retrigger_joker then + if + context.post_jokers + and context.joker_main + and not context.blueprint_card + and not context.retrigger_joker + then local faces = 0 for i = 1, #G.play.cards do if G.play.cards[i]:is_face() then @@ -356,15 +414,21 @@ local choco4 = { --lunar abyss update_hand_text({ delay = 0 }, { mult = mult, chips = hand_chips }) end end - end + end, } local choco5 = { --bloodsucker object_type = "Event", key = "choco5", calculate = function(self, context) - if context.pre_jokers and context.before and not context.repetition and not context.blueprint and not context.retrigger_joker then + if + context.pre_jokers + and context.before + and not context.repetition + and not context.blueprint + and not context.retrigger_joker + then for k, v in ipairs(context.scoring_hand) do - if v.config.center ~= G.P_CENTERS.c_base and not v.debuff and not v.vampired then + if v.config.center ~= G.P_CENTERS.c_base and not v.debuff and not v.vampired then v:set_ability(G.P_CENTERS.c_base, nil, true) v.vampired = true G.E_MANAGER:add_event(Event({ @@ -372,12 +436,17 @@ local choco5 = { --bloodsucker v:juice_up() v.vampired = nil return true - end - })) + end, + })) end end end - if context.post_jokers and context.destroying_card and not context.blueprint and not context.retrigger_joker then + if + context.post_jokers + and context.destroying_card + and not context.blueprint + and not context.retrigger_joker + then if context.destroying_card:is_suit("Hearts") or context.destroying_card:is_suit("Diamonds") then if pseudorandom(pseudoseed("cry_choco_blood")) < G.GAME.probabilities.normal / 3 then context.destroying_card.will_shatter = true @@ -385,12 +454,12 @@ local choco5 = { --bloodsucker func = function() context.destroying_card:start_dissolve() return true - end + end, })) end end end - end + end, } local choco6 = { --please take one object_type = "Event", @@ -399,25 +468,29 @@ local choco6 = { --please take one if context.pre_cash then G.E_MANAGER:add_event(Event({ func = function() - local key = get_pack('cry_take_one').key - local card = Card(G.play.T.x + G.play.T.w/2 - G.CARD_W*1.27/2, - G.play.T.y + G.play.T.h/2-G.CARD_H*1.27/2, - G.CARD_W*1.27, G.CARD_H*1.27, - G.P_CARDS.empty, G.P_CENTERS[key], - {bypass_discovery_center = true, bypass_discovery_ui = true}) + local key = get_pack("cry_take_one").key + local card = Card( + G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2, + G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2, + G.CARD_W * 1.27, + G.CARD_H * 1.27, + G.P_CARDS.empty, + G.P_CENTERS[key], + { bypass_discovery_center = true, bypass_discovery_ui = true } + ) card.cost = 0 card.from_tag = true - G.FUNCS.use_card({config = {ref_table = card}}) + G.FUNCS.use_card({ config = { ref_table = card } }) card:start_materialize() pack_opened = true return true - end + end, })) end if context.setting_blind then pack_opened = nil end - end + end, } local choco7 = { object_type = "Event", @@ -443,7 +516,32 @@ local choco7 = { tag.ability.rework_edition = "e_base" add_tag(tag) end - end + end, + init = function(self) + --candy gives $3 + local catd = Card.add_to_deck + function Card:add_to_deck(debuff) + if not debuff and self.config.center.rarity == "cry_candy" then + if G.GAME.events.ev_cry_choco7 then + ease_dollars(3) + end + if G.GAME.events.ev_cry_choco8 then + local card = create_card( + "Joker", + G.jokers, + nil, + nil, + nil, + nil, + pseudorandom_element(Cryptid.food, pseudoseed("cry_candy_rain")) + ) + card:add_to_deck() + G.jokers:emplace(card) + end + end + return catd(self, debuff) + end + end, } local choco8 = { object_type = "Event", @@ -456,7 +554,7 @@ local choco8 = { G.jokers:emplace(card) end end - end + end, } local choco9 = { object_type = "Event", @@ -465,38 +563,73 @@ local choco9 = { G.GAME.events[self.key] = true ease_dollars(10) --will already be X2 = 20 end, + init = function(self) + local ed = ease_dollars + function ease_dollars(mod, instant) + if mod == 0 then + return + end + if G.GAME.events.ev_cry_choco9 and mod > to_big(0) then + mod = mod * 2 + end + return ed(mod, instant) + end + end, } -local ed = ease_dollars -function ease_dollars(mod, instant) - if mod == 0 then return end - if G.GAME.events.ev_cry_choco9 and mod > 0 then - mod = mod * 2 - end - return ed(mod, instant) -end local choco10 = { --revered antique object_type = "Event", - key = "choco10" + key = "choco10", --everything here is lovely patches or hooks + init = function(self) + --antique can only be bought as last item + local gfcb = G.FUNCS.can_buy + function G.FUNCS.can_buy(e) + if e.config.ref_table and e.config.ref_table.ability and e.config.ref_table.ability.cry_antique then + if not (#G.shop_jokers.cards == 0 and #G.shop_booster.cards == 0 and #G.shop_vouchers.cards == 1) then + e.config.colour = G.C.UI.BACKGROUND_INACTIVE + e.config.button = nil + return + end + end + return gfcb(e) + end + end, } local spy = { object_type = "Joker", + dependencies = { + items = { + "set_cry_cursed", + }, + }, key = "spy", pos = { x = 0, y = 0 }, rarity = 1, cost = 8, atlas = "atlasspooky", - config = {x_mult = 0.5, extra = {secret_card = "", revealed = false}}, + config = { x_mult = 0.5, extra = { secret_card = "", revealed = false } }, immutable = true, source_gate = "sho", order = 133, no_dbl = true, loc_vars = function(self, info_queue, center) - return { vars = { localize({ type = "name_text", set = "Joker", key = center.ability and center.ability.extra and center.ability.extra.secret_card }), center.ability.x_mult } } + return { + vars = { + localize({ + type = "name_text", + set = "Joker", + key = center.ability and center.ability.extra and center.ability.extra.secret_card, + }), + center.ability.x_mult, + }, + } end, update = function(self, card, front) if card.ability.extra.secret_card == "" then - secret_card = pseudorandom_element(G.P_CENTER_POOLS.Joker, pseudoseed("cry_spy" .. (card.area and card.area.config.collection and "_collection" or ""))) + secret_card = pseudorandom_element( + G.P_CENTER_POOLS.Joker, + pseudoseed("cry_spy" .. (card.area and card.area.config.collection and "_collection" or "")) + ) card.ability.extra.secret_card = secret_card.key if not (card.area and card.area.config.collection) then card.pos = secret_card.pos @@ -512,8 +645,8 @@ local spy = { end, add_to_deck = function(self, card, from_debuff) G.jokers.config.card_limit = G.jokers.config.card_limit + 1 - card.ability.perishable = true - card.ability.perish_tally = G.GAME.perishable_rounds + card.ability.perishable = true + card.ability.perish_tally = G.GAME.perishable_rounds card.config.center.rarity = "cry_cursed" card:set_sprites(card.config.center) card.ability.extra.revealed = true @@ -536,28 +669,31 @@ local spy = { card:update(0.016) end local target = { - type = 'descriptions', + type = "descriptions", key = self.key, set = self.set, nodes = desc_nodes, - vars = - specific_vars or {} + vars = specific_vars or {}, } local res = {} - if self.loc_vars and type(self.loc_vars) == 'function' then + if self.loc_vars and type(self.loc_vars) == "function" then res = self:loc_vars(info_queue, card) or {} target.vars = res.vars or target.vars target.key = res.key or target.key target.set = res.set or target.set end if desc_nodes == full_UI_table.main and not full_UI_table.name then - full_UI_table.name = localize { type = 'name', set = target.set, key = target.key, nodes = full_UI_table.name } + full_UI_table.name = + localize({ type = "name", set = target.set, key = target.key, nodes = full_UI_table.name }) elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name then - desc_nodes.name = localize{type = 'name_text', key = target.key, set = target.set } + desc_nodes.name = localize({ type = "name_text", key = target.key, set = target.set }) end if specific_vars and specific_vars.debuffed and not res.replace_debuff then - target = { type = 'other', key = 'debuffed_' .. - (specific_vars.playing_card and 'playing_card' or 'default'), nodes = desc_nodes } + target = { + type = "other", + key = "debuffed_" .. (specific_vars.playing_card and "playing_card" or "default"), + nodes = desc_nodes, + } end if res.main_start then desc_nodes[#desc_nodes + 1] = res.main_start @@ -570,28 +706,31 @@ local spy = { local secret_card = cry_deep_copy(G.P_CENTERS[card.ability.extra.secret_card]) secret_card.ability = secret_card.config local target = { - type = 'descriptions', + type = "descriptions", key = secret_card.key, set = secret_card.set, nodes = desc_nodes, - vars = - specific_vars or {} + vars = specific_vars or {}, } local res = {} - if secret_card.loc_vars and type(secret_card.loc_vars) == 'function' then + if secret_card.loc_vars and type(secret_card.loc_vars) == "function" then res = secret_card:loc_vars(info_queue, secret_card) or {} target.vars = res.vars or target.vars target.key = res.key or target.key target.set = res.set or target.set end if desc_nodes == full_UI_table.main and not full_UI_table.name then - full_UI_table.name = localize { type = 'name', set = target.set, key = target.key, nodes = full_UI_table.name } + full_UI_table.name = + localize({ type = "name", set = target.set, key = target.key, nodes = full_UI_table.name }) elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name then - desc_nodes.name = localize{type = 'name_text', key = target.key, set = target.set } + desc_nodes.name = localize({ type = "name_text", key = target.key, set = target.set }) end if specific_vars and specific_vars.debuffed and not res.replace_debuff then - target = { type = 'other', key = 'debuffed_' .. - (specific_vars.playing_card and 'playing_card' or 'default'), nodes = desc_nodes } + target = { + type = "other", + key = "debuffed_" .. (specific_vars.playing_card and "playing_card" or "default"), + nodes = desc_nodes, + } end if res.main_start then desc_nodes[#desc_nodes + 1] = res.main_start @@ -601,40 +740,56 @@ local spy = { desc_nodes[#desc_nodes + 1] = res.main_end end end - end + end, } local flickering = { object_type = "Sticker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, atlas = "sticker", pos = { x = 5, y = 4 }, --placeholder key = "flickering", badge_colour = HEX("747474"), loc_vars = function(self, info_queue, card) - return { vars = { 5, card.ability.flick_tally } } + return { vars = { 5, card.ability.flick_tally or 5 } } end, apply = function(self, card, val) if not card.ability.eternal or G.GAME.modifiers.cry_sticker_sheet then card.ability[self.key] = val - if card.ability[self.key] then card.ability.flick_tally = 5 end + if card.ability[self.key] then + card.ability.flick_tally = 5 + end end end, calculate = function(self, card, context) + if not card.ability.flick_tally then + card.ability.flick_tally = 5 + end if card.ability.set == "Joker" then if context.post_trigger and context.other_joker == card then card.ability.flick_tally = card.ability.flick_tally - 1 if card.ability.flick_tally > 0 then - card_eval_status_text( - card, 'extra', nil, nil, nil, - {message = localize{type='variable',key='a_remaining',vars={card.ability.flick_tally}}, + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_remaining", + vars = { + card.ability.flick_tally, + }, + }), colour = G.C.FILTER, - delay = 0.45}) + delay = 0.45, + }) else card.will_shatter = true G.E_MANAGER:add_event(Event({ func = function() card:start_dissolve() return true - end + end, })) end end @@ -643,20 +798,22 @@ local flickering = { if next(context.ret) ~= nil then card.ability.flick_tally = card.ability.flick_tally - 1 if card.ability.flick_tally > 0 then - card_eval_status_text( - card, 'extra', nil, nil, nil, - { - message = localize{type='variable',key='a_remaining',vars={card.ability.flick_tally}}, - colour = G.C.FILTER, - delay = 0.45 - }) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_remaining", + vars = { card.ability.flick_tally }, + }), + colour = G.C.FILTER, + delay = 0.45, + }) else card.will_shatter = true G.E_MANAGER:add_event(Event({ func = function() card:start_dissolve() return true - end + end, })) end end @@ -665,6 +822,12 @@ local flickering = { } local trick_or_treat = { object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + "set_cry_cursed", + }, + }, key = "trick_or_treat", pos = { x = 2, y = 1 }, rarity = 2, @@ -676,7 +839,7 @@ local trick_or_treat = { perishable_compat = false, calculate = function(self, card, context) if context.selling_self then - if pseudorandom(pseudoseed("cry_trick_or_treat")) < 3/4*G.GAME.probabilities.normal then + if pseudorandom(pseudoseed("cry_trick_or_treat")) < 3 / 4 * G.GAME.probabilities.normal then for i = 1, 2 do local card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_trick_candy") card:add_to_deck() @@ -695,6 +858,11 @@ local trick_or_treat = { } local candy_basket = { object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, key = "candy_basket", pos = { x = 4, y = 0 }, rarity = 2, @@ -704,7 +872,7 @@ local candy_basket = { blueprint_compat = false, eternal_compat = false, perishable_compat = false, - config = {extra = {candies = 0, candy_mod = 0.5, candy_boss_mod = 2}}, + config = { extra = { candies = 0, candy_mod = 0.5, candy_boss_mod = 2 } }, calculate = function(self, card, context) if context.selling_self then for i = 1, math.min(100, card.ability.extra.candies) do @@ -725,18 +893,29 @@ local candy_basket = { end end, loc_vars = function(self, info_queue, center) - return { vars = { math.floor(center.ability.extra.candies), 2*center.ability.extra.candy_mod, center.ability.extra.candy_boss_mod} } + return { + vars = { + math.floor(center.ability.extra.candies), + 2 * center.ability.extra.candy_mod, + center.ability.extra.candy_boss_mod, + }, + } end, } local blacklist = { object_type = "Joker", + dependencies = { + items = { + "set_cry_cursed", + }, + }, key = "blacklist", pos = { x = 2, y = 2 }, rarity = "cry_cursed", cost = 0, atlas = "atlasspooky", order = 136, - config = {extra = {blacklist = {}}}, + config = { extra = { blacklist = {} } }, blueprint_compat = false, eternal_compat = false, perishable_compat = false, @@ -782,24 +961,32 @@ local blacklist = { func = function() card:start_dissolve() return true - end + end, })) end end end end, add_to_deck = function(self, card, from_debuff) - card.ability.extra.blacklist = pseudorandom_element(SMODS.Ranks, pseudoseed("cry_blacklist"..G.GAME.round_resets.ante)) + card.ability.extra.blacklist = + pseudorandom_element(SMODS.Ranks, pseudoseed("cry_blacklist" .. G.GAME.round_resets.ante)) end, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.blacklist and center.ability.extra.blacklist.key or "Ace" } } + return { + vars = { localize(center.ability.extra.blacklist and center.ability.extra.blacklist.key or "Ace", "ranks") }, + } end, } local ghost = { object_type = "Joker", + dependencies = { + items = { + "set_cry_cursed", + }, + }, key = "ghost", pos = { x = 3, y = 0 }, - config = {extra = {possess_rate = 2, destroy_rate = 6}}, + config = { extra = { possess_rate = 2, destroy_rate = 6 } }, rarity = "cry_cursed", cost = 0, order = 137, @@ -809,8 +996,18 @@ local ghost = { perishable_compat = false, no_dbl = true, calculate = function(self, card, context) - if context.end_of_round and not context.individual and not context.repetition and not context.blueprint and not context.retrigger_joker then - if pseudorandom(pseudoseed("cry_ghost_destroy")) < cry_prob(card.ability.cry_prob, card.ability.extra.destroy_rate, card.ability.cry_rigged)/card.ability.extra.destroy_rate then + if + context.end_of_round + and not context.individual + and not context.repetition + and not context.blueprint + and not context.retrigger_joker + then + if + pseudorandom(pseudoseed("cry_ghost_destroy")) + < cry_prob(card.ability.cry_prob, card.ability.extra.destroy_rate, card.ability.cry_rigged) + / card.ability.extra.destroy_rate + then G.E_MANAGER:add_event(Event({ func = function() card:start_dissolve() @@ -824,12 +1021,16 @@ local ghost = { end end return true - end + end, })) return end --todo: let multiple ghosts possess multiple jokers - if pseudorandom(pseudoseed("cry_ghost_possess")) < cry_prob(card.ability.cry_prob, card.ability.extra.possess_rate, card.ability.cry_rigged)/card.ability.extra.possess_rate then + if + pseudorandom(pseudoseed("cry_ghost_possess")) + < cry_prob(card.ability.cry_prob, card.ability.extra.possess_rate, card.ability.cry_rigged) + / card.ability.extra.possess_rate + then for i = 1, #G.jokers.cards do G.jokers.cards[i].ability.cry_possessed = nil end @@ -840,45 +1041,109 @@ local ghost = { end end if #eligible_cards ~= 0 then - G.jokers.cards[pseudorandom_element(eligible_cards,pseudoseed("cry_ghost_possess_choice"))].ability.cry_possessed = true + G.jokers.cards[pseudorandom_element(eligible_cards, pseudoseed("cry_ghost_possess_choice"))].ability.cry_possessed = + true end return end end end, loc_vars = function(self, info_queue, card) - info_queue[#info_queue + 1] = { set = "Other", key = "cry_possessed"} - return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.destroy_rate, card.ability.cry_rigged), card.ability.extra.possess_rate, card.ability.extra.destroy_rate } } + info_queue[#info_queue + 1] = { set = "Other", key = "cry_possessed" } + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.destroy_rate, card.ability.cry_rigged), + card.ability.extra.possess_rate, + card.ability.extra.destroy_rate, + }, + } end, } local possessed = { object_type = "Sticker", + dependencies = { + items = { + "set_cry_cursed", + "j_cry_ghost", + }, + }, atlas = "sticker", - pos = { x = 2, y = 2 }, --todo + pos = { x = 6, y = 0 }, --todo key = "possessed", no_sticker_sheet = true, badge_colour = HEX("aaaaaa"), } local spookydeck = { object_type = "Back", + dependencies = { + items = { + "set_cry_spooky", + "set_cry_cursed", + "set_cry_deck", + "j_cry_chocolate_dice", + }, + }, key = "spooky", - config = { cry_spooky = true, cry_curse_rate = 0.25 }, + config = { cry_curse_rate = 0.25 }, pos = { x = 3, y = 1 }, order = 16, atlas = "atlasspooky", + 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, + init = function(self) + local Backapply_to_runRef = Back.apply_to_run + function Back.apply_to_run(self) + Backapply_to_runRef(self) + if self.effect.config.cry_spooky then + G.GAME.modifiers.cry_spooky = true + G.GAME.modifiers.cry_curse_rate = self.effect.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 + end + end, } local candy_dagger = { - object_type = "Joker", - name = "cry-Candy Dagger", - key = "candy_dagger", - pos = { x = 4, y = 2 }, - rarity = 2, - cost = 8, - order = 138, - atlas = "atlasspooky", - blueprint_compat = true, - calculate = function(self, card, context) - local my_pos = nil + object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, + name = "cry-Candy Dagger", + key = "candy_dagger", + pos = { x = 4, y = 2 }, + rarity = 2, + cost = 8, + order = 138, + atlas = "atlasspooky", + blueprint_compat = true, + calculate = function(self, card, context) + local my_pos = nil for i = 1, #G.jokers.cards do if G.jokers.cards[i] == card then my_pos = i @@ -908,57 +1173,59 @@ local candy_dagger = { return true end, })) - card_eval_status_text( - card, - "extra", - nil, - nil, - nil, - { - message = localize({ - type = "variable", - key = "a_candy", - vars = { 1 }, - }), - colour = G.C.RARITY["cry_candy"], - no_juice = true, - } - ) + card_eval_status_text(card, "extra", nil, nil, nil, { + message = localize({ + type = "variable", + key = "a_candy", + vars = { 1 }, + }), + colour = G.C.RARITY["cry_candy"], + no_juice = true, + }) local card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_candy_dagger") card:add_to_deck() G.jokers:emplace(card) return nil, true end - end, + end, } local candy_cane = { - object_type = "Joker", - key = "candy_cane", - pos = { x = 1, y = 1 }, - rarity = "cry_candy", + object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, + key = "candy_cane", + pos = { x = 1, y = 1 }, + rarity = "cry_candy", config = { extra = { rounds = 11, dollars = 4 } }, - cost = 10, - order = 139, - atlas = "atlasspooky", - blueprint_compat = true, + cost = 10, + order = 139, + atlas = "atlasspooky", + blueprint_compat = true, + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.rounds, center.ability.extra.dollars } } end, - calculate = function(self, card, context) + calculate = function(self, card, context) if context.individual and context.cardarea == G.play then if not context.other_card.candy_caned then context.other_card.candy_caned = true + local c = context.other_card G.E_MANAGER:add_event(Event({ func = function() - context.other_card.candy_caned = nil + if c then + c.candy_caned = nil + end return true - end - })) + end, + })) else ease_dollars(card.ability.extra.dollars) end end - if + if context.end_of_round and not context.blueprint and not context.individual @@ -999,20 +1266,25 @@ local candy_cane = { } end end - end, + end, } - local candy_buttons = { object_type = "Joker", - key = "candy_buttons", + dependencies = { + items = { + "set_cry_spooky", + }, + }, + key = "candy_buttons", name = "cry-candybuttons", - pos = { x = 1, y = 2 }, - order = 140, - rarity = "cry_candy", + pos = { x = 1, y = 2 }, + order = 140, + rarity = "cry_candy", config = { extra = { rerolls = 15 } }, - cost = 10, - atlas = "atlasspooky", - blueprint_compat = true, + cost = 10, + atlas = "atlasspooky", + blueprint_compat = true, + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.rerolls } } end, @@ -1056,30 +1328,48 @@ local candy_buttons = { calculate_reroll_cost(true) end, } - local jawbreaker = { object_type = "Joker", - key = "jawbreaker", - pos = { x = 3, y = 2 }, - rarity = "cry_candy", - cost = 10, - order = 141, - atlas = "atlasspooky", - blueprint_compat = false, + dependencies = { + items = { + "set_cry_spooky", + }, + }, + key = "jawbreaker", + pos = { x = 3, y = 2 }, + rarity = "cry_candy", + cost = 10, + order = 141, + atlas = "atlasspooky", + blueprint_compat = false, + pools = { ["Food"] = true }, calculate = function(self, card, context) - if context.end_of_round and not context.individual and not context.repetition and G.GAME.blind.boss and not context.blueprint_card and not context.retrigger_joker then + if + context.end_of_round + and not context.individual + and not context.repetition + and G.GAME.blind.boss + and not context.blueprint_card + and not context.retrigger_joker + then for i = 1, #G.jokers.cards do if G.jokers.cards[i] == card then if i > 1 then - if not Card.no(G.jokers.cards[i-1], "immune_to_chemach", true) and not Card.no(G.jokers.cards[i-1], "immutable", true) then - cry_with_deck_effects(G.jokers.cards[i-1], function(card) + if + not Card.no(G.jokers.cards[i - 1], "immune_to_chemach", true) + and not Card.no(G.jokers.cards[i - 1], "immutable", true) + then + cry_with_deck_effects(G.jokers.cards[i - 1], function(card) cry_misprintize(card, { min = 2, max = 2 }, nil, true) end) end end if i < #G.jokers.cards then - if not Card.no(G.jokers.cards[i+1], "immune_to_chemach", true) and not Card.no(G.jokers.cards[i+1], "immutable", true) then - cry_with_deck_effects(G.jokers.cards[i+1], function(card) + if + not Card.no(G.jokers.cards[i + 1], "immune_to_chemach", true) + and not Card.no(G.jokers.cards[i + 1], "immutable", true) + then + cry_with_deck_effects(G.jokers.cards[i + 1], function(card) cry_misprintize(card, { min = 2, max = 2 }, nil, true) end) end @@ -1122,22 +1412,30 @@ local jawbreaker = { } local mellowcreme = { object_type = "Joker", - key = "mellowcreme", - pos = { x = 0, y = 2 }, - rarity = "cry_candy", - cost = 10, - order = 142, - atlas = "atlasspooky", - config = {extra = {sell_mult = 4}}, + dependencies = { + items = { + "set_cry_spooky", + }, + }, + key = "mellowcreme", + pos = { x = 0, y = 2 }, + rarity = "cry_candy", + cost = 10, + order = 142, + atlas = "atlasspooky", + config = { extra = { sell_mult = 4 } }, + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) return { vars = { center.ability.extra.sell_mult } } end, - blueprint_compat = true, + blueprint_compat = true, calculate = function(self, card, context) if context.selling_self then for k, v in ipairs(G.consumeables.cards) do - if v.set_cost then - v.ability.extra_value = (v.ability.extra_value or 0) + (math.max(1, math.floor(v.cost/2)) + (v.ability.extra_value or 0))*(card.ability.extra.sell_mult-1) + if v.set_cost then + v.ability.extra_value = (v.ability.extra_value or 0) + + (math.max(1, math.floor(v.cost / 2)) + (v.ability.extra_value or 0)) + * (card.ability.extra.sell_mult - 1) v:set_cost() end end @@ -1146,26 +1444,37 @@ local mellowcreme = { } local brittle = { object_type = "Joker", - key = "brittle", - pos = { x = 5, y = 1 }, - rarity = "cry_candy", - cost = 10, - atlas = "atlasspooky", - order = 143, - config = {extra = {rounds = 9}}, + dependencies = { + items = { + "set_cry_spooky", + }, + }, + key = "brittle", + pos = { x = 5, y = 1 }, + rarity = "cry_candy", + cost = 10, + atlas = "atlasspooky", + order = 143, + config = { extra = { rounds = 9 } }, + pools = { ["Food"] = true }, loc_vars = function(self, info_queue, center) info_queue[#info_queue + 1] = G.P_CENTERS.m_stone info_queue[#info_queue + 1] = G.P_CENTERS.m_gold info_queue[#info_queue + 1] = G.P_CENTERS.m_steel return { vars = { center.ability.extra.rounds } } end, - blueprint_compat = true, + blueprint_compat = true, calculate = function(self, card, context) - if context.cardarea == G.jokers and context.before and not context.blueprint_card and not context.retrigger_joker then + if + context.cardarea == G.jokers + and context.before + and not context.blueprint_card + and not context.retrigger_joker + then local _card = context.scoring_hand[#context.scoring_hand] if not _card.brittled then card.ability.extra.rounds = card.ability.extra.rounds - 1 - local enhancement = pseudorandom_element({"m_stone", "m_gold", "m_steel"}, pseudoseed("cry_brittle")) + local enhancement = pseudorandom_element({ "m_stone", "m_gold", "m_steel" }, pseudoseed("cry_brittle")) _card.brittled = true _card:set_ability(G.P_CENTERS[enhancement], nil, true) G.E_MANAGER:add_event(Event({ @@ -1173,8 +1482,8 @@ local brittle = { _card:juice_up() _card.brittled = nil return true - end - })) + end, + })) if card.ability.extra.rounds > 0 then return nil, true else @@ -1206,14 +1515,19 @@ local brittle = { end end end - end + end, } local monopoly_money = { object_type = "Joker", + dependencies = { + items = { + "set_cry_cursed", + }, + }, key = "monopoly_money", name = "cry-Monopoly", pos = { x = 4, y = 1 }, - config = {extra = {fail_rate = 4}}, + config = { extra = { fail_rate = 4 } }, order = 144, rarity = "cry_cursed", cost = 0, @@ -1223,17 +1537,26 @@ local monopoly_money = { perishable_compat = false, no_dbl = true, calculate = function(self, card, context) - if context.buying_card and not context.blueprint_card and not context.retrigger_joker and not (context.card == card) then - if pseudorandom(pseudoseed("cry_monopoly")) < cry_prob(card.ability.cry_prob, card.ability.extra.fail_rate, card.ability.cry_rigged)/card.ability.extra.fail_rate then + if + context.buying_card + and not context.blueprint_card + and not context.retrigger_joker + and not (context.card == card) + then + if + pseudorandom(pseudoseed("cry_monopoly")) + < cry_prob(card.ability.cry_prob, card.ability.extra.fail_rate, card.ability.cry_rigged) + / card.ability.extra.fail_rate + then G.E_MANAGER:add_event(Event({ func = function() context.card:start_dissolve() - card_eval_status_text(card, 'extra', nil, nil, nil, { + card_eval_status_text(card, "extra", nil, nil, nil, { message = localize("k_nope_ex"), colour = G.C.BLACK, }) return true - end + end, })) end return nil, true @@ -1241,24 +1564,34 @@ local monopoly_money = { if context.selling_self and not context.blueprint_card and not context.retrigger_joker then G.E_MANAGER:add_event(Event({ func = function() - ease_dollars(math.floor(-0.5*G.GAME.dollars)) + ease_dollars(math.floor(-0.5 * G.GAME.dollars)) return true - end + end, })) return nil, true end end, loc_vars = function(self, info_queue, card) - return { vars = { cry_prob(card.ability.cry_prob, card.ability.extra.fail_rate, card.ability.cry_rigged), card.ability.extra.fail_rate} } + return { + vars = { + cry_prob(card.ability.cry_prob, card.ability.extra.fail_rate, card.ability.cry_rigged), + card.ability.extra.fail_rate, + }, + } end, } local candy_sticks = { object_type = "Joker", + dependencies = { + items = { + "set_cry_spooky", + }, + }, key = "candy_sticks", name = "cry-Candy-Sticks", pos = { x = 5, y = 2 }, order = 145, - config = {extra = { boss = {}, hands = 1, clockscore = 0}}, + config = { extra = { boss = {}, hands = 1, clockscore = 0 } }, rarity = "cry_candy", cost = 3, atlas = "atlasspooky", @@ -1268,77 +1601,97 @@ local candy_sticks = { calculate = function(self, card, context) if context.setting_blind and not self.getting_sliced and not context.blueprint and context.blind.boss then card.ability.extra.boss = G.GAME.blind:save() - if G.GAME.blind.name == 'The Clock' then + if G.GAME.blind.name == "The Clock" then card.ability.extra.clockscore = G.GAME.blind.chips end - G.E_MANAGER:add_event(Event({func = function() - G.E_MANAGER:add_event(Event({func = function() - G.GAME.blind:disable() - play_sound('timpani') - delay(0.4) - return true end })) - card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('ph_boss_disabled')}) - return true end })) + G.E_MANAGER:add_event(Event({ + func = function() + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.blind:disable() + play_sound("timpani") + delay(0.4) + return true + end, + })) + card_eval_status_text(self, "extra", nil, nil, nil, { message = localize("ph_boss_disabled") }) + return true + end, + })) end - if context.after and G.GAME.blind:get_type() == 'Boss' then - card.ability.extra.hands = card.ability.extra.hands-1 + if context.after and G.GAME.blind:get_type() == "Boss" then + card.ability.extra.hands = card.ability.extra.hands - 1 end - if ((context.selling_self and G.GAME.blind and G.GAME.blind:get_type() == 'Boss') or card.ability.extra.hands <= 0) and G.GAME.blind.disabled then + if + ( + (context.selling_self and G.GAME.blind and G.GAME.blind:get_type() == "Boss") + or card.ability.extra.hands <= 0 + ) and G.GAME.blind.disabled + then G.GAME.blind:load(card.ability.extra.boss) if not context.selling_self then G.E_MANAGER:add_event(Event({ - func = function() - play_sound('tarot1') - card.T.r = -0.2 - card:juice_up(0.3, 0.4) - card.states.drag.is = true - card.children.center.pinch.x = true - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.3, blockable = false, - func = function() - G.jokers:remove_card(card) - card:remove() - card = nil - return true; end})) - return true - end - })) + func = function() + play_sound("tarot1") + card.T.r = -0.2 + card:juice_up(0.3, 0.4) + card.states.drag.is = true + card.children.center.pinch.x = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card = nil + return true + end, + })) + return true + end, + })) end end - if context.end_of_round and G.GAME.blind:get_type() == 'Boss' then + if context.end_of_round and G.GAME.blind:get_type() == "Boss" then G.E_MANAGER:add_event(Event({ - func = function() - play_sound('tarot1') - card.T.r = -0.2 - card:juice_up(0.3, 0.4) - card.states.drag.is = true - card.children.center.pinch.x = true - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.3, blockable = false, - func = function() - G.jokers:remove_card(card) - card:remove() - card = nil - return true; end})) - return true - end - })) + func = function() + play_sound("tarot1") + card.T.r = -0.2 + card:juice_up(0.3, 0.4) + card.states.drag.is = true + card.children.center.pinch.x = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + G.jokers:remove_card(card) + card:remove() + card = nil + return true + end, + })) + return true + end, + })) end end, loc_vars = function(self, info_queue, center) - return { vars = { center.ability.extra.hands} } + return { vars = { center.ability.extra.hands } } end, cry_credits = { idea = { - "Squiddy" + "Squiddy", }, art = { - "lolxddj" + "lolxddj", }, code = { - "Foegro" - } + "Foegro", + }, }, } - items = { cotton_candy, wrapped, @@ -1372,102 +1725,37 @@ items = { monopoly_money, candy_sticks, } -return { name = "Spooky", init = function() - - local sc = Card.set_cost - function Card:set_cost() - sc(self) - if self.config and self.config.center and self.config.center.rarity == "cry_cursed" then - self.sell_cost = 0 - self.sell_cost_label = 0 - end - end - - --Really hacky patch to remove sell button for cursed jokers - local G_UIDEF_use_and_sell_buttons_ref = G.UIDEF.use_and_sell_buttons - function G.UIDEF.use_and_sell_buttons(card) - local m = G_UIDEF_use_and_sell_buttons_ref(card) - if card.area and card.area.config.type == 'joker' and card.config and card.config.center and card.config.center.rarity == "cry_cursed" and card.ability.name ~= "cry-Monopoly" then - table.remove(m.nodes[1].nodes, 1) - end - if card.config and card.config.center and card.config.center.key == "c_cry_potion" then - table.remove(m.nodes[1].nodes, 1) - end - return m - end - - --track if rerolled - local gfrs = G.FUNCS.reroll_shop - G.FUNCS.reroll_shop = function(e) - local ret = gfrs(e) - G.GAME.current_round.rerolled = true - return ret - end - local gfcr = G.FUNCS.can_reroll - G.FUNCS.can_reroll = function(e) - if G.GAME.events.ev_cry_choco2 and G.GAME.current_round.rerolled then - e.config.colour = G.C.UI.BACKGROUND_INACTIVE - e.config.button = nil - return - end - return gfcr(e) - end - - --candy gives $3 - local catd = Card.add_to_deck - function Card:add_to_deck(debuff) - if not debuff and self.config.center.rarity == "cry_candy" then - if G.GAME.events.ev_cry_choco7 then - ease_dollars(3) - end - if G.GAME.events.ev_cry_choco8 then - local card = create_card( - "Joker", - G.jokers, - nil, - nil, - nil, - nil, - pseudorandom_element(Cryptid.food, pseudoseed("cry_candy_rain")) - ) - card:add_to_deck() - G.jokers:emplace(card) +return { + name = "Spooky", + init = function() + --Cursed rarity patches + local sc = Card.set_cost + function Card:set_cost() + sc(self) + if self.config and self.config.center and self.config.center.rarity == "cry_cursed" then + self.sell_cost = 0 + self.sell_cost_label = 0 end end - return catd(self, debuff) - end - - --antique can only be bought as last item - local gfcb = G.FUNCS.can_buy - function G.FUNCS.can_buy(e) - if e.config.ref_table and e.config.ref_table.ability and e.config.ref_table.ability.cry_antique then - if not (#G.shop_jokers.cards == 0 and #G.shop_booster.cards == 0 and #G.shop_vouchers.cards == 1) then - e.config.colour = G.C.UI.BACKGROUND_INACTIVE - e.config.button = nil - return + --Really hacky patch to remove sell button for cursed jokers + local G_UIDEF_use_and_sell_buttons_ref = G.UIDEF.use_and_sell_buttons + function G.UIDEF.use_and_sell_buttons(card) + local m = G_UIDEF_use_and_sell_buttons_ref(card) + if + card.area + and card.area.config.type == "joker" + and card.config + and card.config.center + and card.config.center.rarity == "cry_cursed" + and card.ability.name ~= "cry-Monopoly" + then + table.remove(m.nodes[1].nodes, 1) end - end - return gfcb(e) - end - - local Backapply_to_runRef = Back.apply_to_run - function Back.apply_to_run(self) - Backapply_to_runRef(self) - if self.effect.config.cry_spooky then - G.GAME.modifiers.cry_spooky = true - G.GAME.modifiers.cry_curse_rate = self.effect.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, - })) + if card.config and card.config.center and card.config.center.key == "c_cry_potion" then + table.remove(m.nodes[1].nodes, 1) end + return m end -end, items = items } + end, + items = items, +} diff --git a/Cryptid/Items/Stakes.lua b/Cryptid/items/stake.lua similarity index 92% rename from Cryptid/Items/Stakes.lua rename to Cryptid/items/stake.lua index 5f85f27..fd7de32 100644 --- a/Cryptid/Items/Stakes.lua +++ b/Cryptid/items/stake.lua @@ -1,3 +1,5 @@ +--These don't use the gameset system currently. +--Will probably add when there's a way to view stakes in the Collection local pink = { object_type = "Stake", name = "cry-Pink Stake", @@ -245,26 +247,6 @@ local twilight = { 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", @@ -363,8 +345,7 @@ local ascendant = { order = 32, colour = G.C.CRY_ASCENDANT, } -local stake_atlas = { object_type = "Atlas", key = "stake", -path = "stake_cry.png", px = 29, py = 29 } +local stake_atlas = { object_type = "Atlas", key = "stake", path = "stake_cry.png", px = 29, py = 29 } return { name = "More Stakes", init = function(self) @@ -454,9 +435,7 @@ return { 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 + SMODS.calculate_context({ remove_playing_cards = true, removed = destroyed_cards }) end, }, true) SMODS.Consumable:take_ownership("familiar", { @@ -500,9 +479,7 @@ return { 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 + SMODS.calculate_context({ remove_playing_cards = true, removed = destroyed_cards }) end, }, true) SMODS.Consumable:take_ownership("incantation", { @@ -546,9 +523,7 @@ return { 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 + SMODS.calculate_context({ remove_playing_cards = true, removed = destroyed_cards }) end, }, true) @@ -602,6 +577,5 @@ return { blossom, azure, ascendant, - banana, }, } diff --git a/Cryptid/Items/Tags.lua b/Cryptid/items/tag.lua similarity index 52% rename from Cryptid/Items/Tags.lua rename to Cryptid/items/tag.lua index dad77ad..f77220d 100644 --- a/Cryptid/Items/Tags.lua +++ b/Cryptid/items/tag.lua @@ -1,5 +1,10 @@ local cat = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, atlas = "tag_cry", pos = { x = 0, y = 2 }, key = "cat", @@ -8,12 +13,18 @@ local cat = { } local epic_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "set_cry_epic", + }, + }, atlas = "tag_cry", pos = { x = 3, y = 0 }, name = "cry-Epic Tag", order = 1, min_ante = 2, - requires = 'j_cry_googol_play', + requires = "j_cry_googol_play", config = { type = "store_joker_create" }, key = "epic", apply = function(self, tag, context) @@ -27,7 +38,7 @@ local epic_tag = { end local card if #G.P_JOKER_RARITY_POOLS.cry_epic > rares_in_posession[1] then - card = create_card("Joker", context.area, nil, 'cry_epic', nil, nil, nil, "cry_eta") + card = create_card("Joker", context.area, nil, "cry_epic", nil, nil, nil, "cry_eta") create_shop_card_ui(card, "Joker", context.area) card.states.visible = false tag:yep("+", G.C.RARITY.cry_epic, function() @@ -46,11 +57,16 @@ local epic_tag = { } local schematic = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, atlas = "tag_cry", pos = { x = 1, y = 2 }, name = "cry-Schematic Tag", order = 24, - requires = 'j_brainstorm', + requires = "j_brainstorm", config = { type = "store_joker_create" }, key = "schematic", loc_vars = function(self, info_queue) @@ -77,18 +93,28 @@ local schematic = { end end, in_pool = function() - if (G.GAME.used_jokers["j_brainstorm"] and not next(find_joker("Showman"))) then return false end - if G.GAME.banned_keys["j_brainstorm"] then return false end + if G.GAME.used_jokers["j_brainstorm"] and not next(find_joker("Showman")) then + return false + end + if G.GAME.banned_keys["j_brainstorm"] then + return false + end return true end, } local empoweredPack = { object_type = "Booster", + dependencies = { + items = { + "set_cry_tag", + "tag_cry_empowered", + }, + }, name = "cry-Empowered Pack", key = "empowered", kind = "Spectral", no_doe = true, - atlas = "empowered", + atlas = "pack", pos = { x = 3, y = 1 }, config = { extra = 2, choose = 1 }, cost = 0, @@ -127,15 +153,15 @@ local empoweredPack = { end, group_key = "k_spectral_pack", } -local empoweredpack_sprite = { - object_type = "Atlas", - key = "empowered", - path = "pack_cry.png", - px = 71, - py = 95, -} local empowered = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "set_cry_exotic", + "c_cry_gateway", + }, + }, name = "cry-Empowered Tag", order = 18, atlas = "tag_cry", @@ -153,26 +179,33 @@ local empowered = { apply = function(self, tag, context) if context.type == "new_blind_choice" then local lock = tag.ID - G.CONTROLLER.locks[lock] = true - tag:yep('+', G.C.SECONDARY_SET.Spectral,function() - local key = "p_cry_empowered" - local card = Card(G.play.T.x + G.play.T.w/2 - G.CARD_W*1.27/2, - G.play.T.y + G.play.T.h/2-G.CARD_H*1.27/2, G.CARD_W*1.27, G.CARD_H*1.27, G.P_CARDS.empty, G.P_CENTERS[key], {bypass_discovery_center = true, bypass_discovery_ui = true}) - card.cost = 0 - card.from_tag = true - G.FUNCS.use_card({config = {ref_table = card}}) + G.CONTROLLER.locks[lock] = true + tag:yep("+", G.C.SECONDARY_SET.Spectral, function() + local key = "p_cry_empowered" + local card = Card( + G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2, + G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2, + G.CARD_W * 1.27, + G.CARD_H * 1.27, + G.P_CARDS.empty, + G.P_CENTERS[key], + { bypass_discovery_center = true, bypass_discovery_ui = true } + ) + card.cost = 0 + card.from_tag = true + G.FUNCS.use_card({ config = { ref_table = card } }) if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then card:set_edition(nil, true, true) elseif G.GAME.modifiers.cry_force_random_edition then local edition = cry_poll_random_edition() card:set_edition(edition, true, true) end - card:start_materialize() - G.CONTROLLER.locks[lock] = nil - return true - end) - tag.triggered = true - return true + card:start_materialize() + G.CONTROLLER.locks[lock] = nil + return true + end) + tag.triggered = true + return true end end, in_pool = function() @@ -181,6 +214,12 @@ local empowered = { } local gambler = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "tag_cry_empowered", + }, + }, name = "cry-Gamblecore", order = 13, atlas = "tag_cry", @@ -196,23 +235,28 @@ local gambler = { if context.type == "immediate" then if pseudorandom("cry_gambler_tag") < G.GAME.probabilities.normal / tag.config.odds then local lock = tag.ID - G.CONTROLLER.locks[lock] = true - tag:yep('+', G.C.SECONDARY_SET.Spectral,function() - local tag = Tag("tag_cry_empowered") + G.CONTROLLER.locks[lock] = true + tag:yep("+", G.C.SECONDARY_SET.Spectral, function() + local tag = Tag("tag_cry_empowered") add_tag(tag) - G.CONTROLLER.locks[lock] = nil - return true - end) + G.CONTROLLER.locks[lock] = nil + return true + end) else tag:nope() end - tag.triggered = true - return true + tag.triggered = true + return true end end, } local bundle = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, name = "cry-Bundle Tag", order = 16, atlas = "tag_cry", @@ -246,6 +290,11 @@ local bundle = { } local memory = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, atlas = "tag_cry", pos = { x = 3, y = 1 }, name = "cry-Memory Tag", @@ -280,9 +329,35 @@ local memory = { in_pool = function() return G.GAME.cry_last_tag_used and true end, + init = function(self) + --store last tag used + local tapr = Tag.apply_to_run + function Tag:apply_to_run(x) + local ret = tapr(self, x) + if + self.triggered + and self.key ~= "tag_double" + and self.key ~= "tag_cry_memory" + and self.key ~= "tag_cry_triple" + and self.key ~= "tag_cry_quadruple" + and self.key ~= "tag_cry_quintuple" + and self.key ~= "tag_ortalab_rewind" + then + G.GAME.cry_last_tag_used = self.key + G.GAME.cry_memory_orbital = self.ability.orbital_hand + end + return ret + end + end, } local glitched_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_glitched", + }, + }, atlas = "tag_cry", pos = { x = 5, y = 0 }, name = "cry-Glitched Tag", @@ -290,7 +365,7 @@ local glitched_tag = { config = { type = "store_joker_modify", edition = "cry_glitched" }, key = "glitched", min_ante = 1, - requires = 'e_cry_glitched', + requires = "e_cry_glitched", loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_glitched return { vars = {} } @@ -298,33 +373,39 @@ local glitched_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_glitched = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_glitched = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local oversat_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_oversat", + }, + }, atlas = "tag_cry", pos = { x = 7, y = 1 }, name = "cry-Oversaturated Tag", order = 4, config = { type = "store_joker_modify", edition = "cry_oversat" }, key = "oversat", - requires = 'e_cry_oversat', + requires = "e_cry_oversat", min_ante = 2, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_oversat @@ -333,33 +414,39 @@ local oversat_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_oversat = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_oversat = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local mosaic_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_mosaic", + }, + }, atlas = "tag_cry", pos = { x = 5, y = 1 }, name = "cry-Mosaic Tag", order = 3, config = { type = "store_joker_modify", edition = "cry_mosaic" }, key = "mosaic", - requires = 'e_cry_mosaic', + requires = "e_cry_mosaic", min_ante = 2, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_mosaic @@ -368,33 +455,39 @@ local mosaic_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_mosaic = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_mosaic = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local gold_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_gold", + }, + }, atlas = "tag_cry", pos = { x = 6, y = 0 }, name = "cry-Golden Tag", order = 6, config = { type = "store_joker_modify", edition = "cry_gold" }, key = "gold", - requires = 'e_cry_gold', + requires = "e_cry_gold", min_ante = 3, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_gold @@ -403,33 +496,39 @@ local gold_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_gold = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_gold = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local glass_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_glass", + }, + }, atlas = "tag_cry", pos = { x = 4, y = 0 }, name = "cry-Glass Tag", order = 5, config = { type = "store_joker_modify", edition = "cry_glass" }, key = "glass", - requires = 'e_cry_glass', + requires = "e_cry_glass", min_ante = 3, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_glass @@ -438,33 +537,39 @@ local glass_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_glass = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_glass = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local blur_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_blur", + }, + }, atlas = "tag_cry", pos = { x = 7, y = 0 }, name = "cry-Blurred Tag", order = 7, config = { type = "store_joker_modify", edition = "cry_blur" }, key = "blur", - requires = 'e_cry_blur', + requires = "e_cry_blur", min_ante = 3, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_blur @@ -473,34 +578,40 @@ local blur_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_blur = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_blur = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } --order 8 reserved for Noisy tag (if it ever has a shader / comes into existence) local astral_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_astral", + }, + }, atlas = "tag_cry", pos = { x = 6, y = 1 }, name = "cry-Astral Tag", order = 9, config = { type = "store_joker_modify", edition = "cry_astral" }, key = "astral", - requires = 'e_cry_astral', + requires = "e_cry_astral", min_ante = 9, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral @@ -509,33 +620,39 @@ local astral_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('+', G.C.DARK_EDITION,function() - context.card:set_edition({cry_astral = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("+", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_astral = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local m_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "e_cry_m", + }, + }, atlas = "tag_cry", pos = { x = 4, y = 1 }, name = "cry-Jolly Tag", order = 10, config = { type = "store_joker_modify", edition = "cry_m" }, key = "m", - requires = 'e_cry_m', + requires = "e_cry_m", min_ante = 1, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m @@ -544,33 +661,40 @@ local m_tag = { apply = function(self, tag, context) if context.type == "store_joker_modify" then local _applied = nil - if not context.card.edition and not context.card.temp_edition and context.card.ability.set == 'Joker' then - local lock = tag.ID - G.CONTROLLER.locks[lock] = true - context.card.temp_edition = true - tag:yep('M', G.C.DARK_EDITION,function() - context.card:set_edition({cry_m = true}, true) - context.card.ability.couponed = true - context.card:set_cost() - context.card.temp_edition = nil - G.CONTROLLER.locks[lock] = nil - return true - end) - _applied = true + if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then + local lock = tag.ID + G.CONTROLLER.locks[lock] = true + context.card.temp_edition = true + tag:yep("M", G.C.DARK_EDITION, function() + context.card:set_edition({ cry_m = true }, true) + context.card.ability.couponed = true + context.card:set_cost() + context.card.temp_edition = nil + G.CONTROLLER.locks[lock] = nil + return true + end) + _applied = true tag.triggered = true - end + end end end, } local double_m_tag = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "set_cry_m", + "e_cry_m", + }, + }, atlas = "tag_cry", pos = { x = 7, y = 2 }, name = "cry-Double M Tag", order = 11, config = { type = "store_joker_create", edition = "cry_m" }, key = "double_m", - requires = 'j_cry_smallestm', + requires = "j_cry_smallestm", loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m return { vars = {} } @@ -601,7 +725,7 @@ local double_m_tag = { tag:yep("MM", G.C.CRY_JOLLY, function() card:start_materialize() card.ability.couponed = true - card:set_cost() + card:set_cost() return true end) tag.triggered = true @@ -613,72 +737,81 @@ local double_m_tag = { end, } local banana = { - object_type = "Tag", - name = "cry-Banana Tag", + object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, + name = "cry-Banana Tag", order = 27, - atlas = "tag_cry", - pos = { x = 5, y = 2 }, - config = { type = "immediate" }, - key = "banana", + atlas = "tag_cry", + pos = { x = 5, y = 2 }, + config = { type = "immediate" }, + key = "banana", loc_vars = function(self, info_queue) local banana if G.GAME.pool_flags.gros_michel_extinct == true then - banana = localize({ + banana = localize({ type = "name_text", set = "Joker", - key = G.P_CENTER_POOLS["Joker"][61].key + key = G.P_CENTER_POOLS["Joker"][61].key, }) info_queue[#info_queue + 1] = { - set = "Joker", + set = "Joker", key = "j_cavendish", - specific_vars = { 3, G.GAME.probabilities.normal or 1, 1000 } + specific_vars = { 3, G.GAME.probabilities.normal or 1, 1000 }, } else - banana = localize({ + banana = localize({ type = "name_text", set = "Joker", - key = G.P_CENTER_POOLS["Joker"][38].key + key = G.P_CENTER_POOLS["Joker"][38].key, }) info_queue[#info_queue + 1] = { - set = "Joker", + set = "Joker", key = "j_gros_michel", - specific_vars = { 15, G.GAME.probabilities.normal or 1, 6 } + specific_vars = { 15, G.GAME.probabilities.normal or 1, 6 }, } end return { vars = { banana } } end, - min_ante = 2, - apply = function(self, tag, context) - if context.type == "immediate" then + min_ante = 2, + apply = function(self, tag, context) + if context.type == "immediate" then if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then local lock = tag.ID - G.CONTROLLER.locks[lock] = true - tag:yep('+', G.C.PURPLE, function() + G.CONTROLLER.locks[lock] = true + tag:yep("+", G.C.PURPLE, function() if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then --Needs another check here because that's how tags work :D:D:D:D:D:D:D if G.GAME.pool_flags.gros_michel_extinct == true then - local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cavendish") - card:add_to_deck() - G.jokers:emplace(card) + local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cavendish") + card:add_to_deck() + G.jokers:emplace(card) else local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_gros_michel") - card:add_to_deck() - G.jokers:emplace(card) + card:add_to_deck() + G.jokers:emplace(card) end end - G.CONTROLLER.locks[lock] = nil - return true - end) + G.CONTROLLER.locks[lock] = nil + return true + end) else tag:nope() end - tag.triggered = true - return true + tag.triggered = true + return true end - - end + end, } local scope = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, atlas = "tag_cry", pos = { x = 6, y = 2 }, name = "cry-Scope Tag", @@ -687,22 +820,28 @@ local scope = { key = "scope", min_ante = 2, loc_vars = function(self, info_queue) - return { vars = {self.config.num} } + return { vars = { self.config.num } } end, apply = function(self, tag, context) - if context.type == 'round_start_bonus' then - tag:yep('+', G.C.BLUE,function() - return true - end) + if context.type == "round_start_bonus" then + tag:yep("+", G.C.BLUE, function() + return true + end) ease_hands_played(tag.config.num) ease_discard(tag.config.num) - tag.triggered = true - return true + tag.triggered = true + return true end end, } local loss = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "p_cry_meme_1", + }, + }, atlas = "tag_cry", pos = { x = 1, y = 3 }, name = "cry-Loss Tag", @@ -717,31 +856,43 @@ local loss = { apply = function(self, tag, context) if context.type == "new_blind_choice" then local lock = tag.ID - G.CONTROLLER.locks[lock] = true - tag:yep('+', G.C.SECONDARY_SET.Spectral,function() - local key = 'p_cry_meme_1' - local card = Card(G.play.T.x + G.play.T.w/2 - G.CARD_W*1.27/2, - G.play.T.y + G.play.T.h/2-G.CARD_H*1.27/2, G.CARD_W*1.27, G.CARD_H*1.27, G.P_CARDS.empty, G.P_CENTERS[key], {bypass_discovery_center = true, bypass_discovery_ui = true}) - card.cost = 0 - card.from_tag = true - G.FUNCS.use_card({config = {ref_table = card}}) + G.CONTROLLER.locks[lock] = true + tag:yep("+", G.C.SECONDARY_SET.Spectral, function() + local key = "p_cry_meme_1" + local card = Card( + G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2, + G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2, + G.CARD_W * 1.27, + G.CARD_H * 1.27, + G.P_CARDS.empty, + G.P_CENTERS[key], + { bypass_discovery_center = true, bypass_discovery_ui = true } + ) + card.cost = 0 + card.from_tag = true + G.FUNCS.use_card({ config = { ref_table = card } }) if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then card:set_edition(nil, true, true) elseif G.GAME.modifiers.cry_force_random_edition then local edition = cry_poll_random_edition() card:set_edition(edition, true, true) end - card:start_materialize() - G.CONTROLLER.locks[lock] = nil - return true - end) - tag.triggered = true - return true + card:start_materialize() + G.CONTROLLER.locks[lock] = nil + return true + end) + tag.triggered = true + return true end end, } local gourmand = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, atlas = "tag_cry", pos = { x = 2, y = 3 }, name = "cry-Gourmand Tag", @@ -754,22 +905,13 @@ local gourmand = { end, apply = function(self, tag, context) if context.type == "store_joker_create" then - local card - card = create_card( - "Joker", - context.area, - nil, - nil, - nil, - nil, - Cryptid.get_food("cry_gourmand_tag") - ) + local card = create_card("Food", context.area, nil, nil, nil, nil, nil, "cry_gourmand") create_shop_card_ui(card, "Joker", context.area) card.states.visible = false tag:yep("+", G.C.GREEN, function() card:start_materialize() card.ability.couponed = true - card:set_cost() + card:set_cost() return true end) tag.triggered = true @@ -778,43 +920,54 @@ local gourmand = { end, } local better_top_up = { - object_type = "Tag", - name = "cry-Better Top-up Tag", + object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, + name = "cry-Better Top-up Tag", order = 15, - atlas = "tag_cry", - pos = { x = 4, y = 3 }, - config = { type = "immediate", spawn_jokers = 2 }, - key = "bettertop_up", + atlas = "tag_cry", + pos = { x = 4, y = 3 }, + config = { type = "immediate", spawn_jokers = 2 }, + key = "bettertop_up", loc_vars = function(self, info_queue) - return { vars = {self.config.spawn_jokers} } + return { vars = { self.config.spawn_jokers } } end, - min_ante = 5, - apply = function(self, tag, context) - if context.type == "immediate" then + min_ante = 5, + apply = function(self, tag, context) + if context.type == "immediate" then if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then local lock = tag.ID - G.CONTROLLER.locks[lock] = true - tag:yep('+', G.C.GREEN, function() + G.CONTROLLER.locks[lock] = true + tag:yep("+", G.C.GREEN, function() for i = 1, tag.config.spawn_jokers do if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then - local card = create_card("Joker", G.jokers, nil, 0.8, nil, nil, nil, 'bettertop') - card:add_to_deck() - G.jokers:emplace(card) + local card = create_card("Joker", G.jokers, nil, 0.8, nil, nil, nil, "bettertop") + card:add_to_deck() + G.jokers:emplace(card) end end - G.CONTROLLER.locks[lock] = nil - return true - end) + G.CONTROLLER.locks[lock] = nil + return true + end) else tag:nope() end - tag.triggered = true - return true + tag.triggered = true + return true end - end + end, } local better_voucher = { object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "set_cry_tier3", + }, + }, atlas = "tag_cry", pos = { x = 3, y = 3 }, name = "cry-Golden Voucher Tag", @@ -823,86 +976,97 @@ local better_voucher = { min_ante = 4, key = "better_voucher", loc_vars = function(self, info_queue) - return { vars = {(SMODS.Mods["Tier3Sub"] and 4 or 3)} } + return { vars = { (SMODS.Mods["Tier3Sub"] and 4 or 3) } } end, apply = function(self, tag, context) if context.type == "voucher_add" then - tag:yep('+', G.C.SECONDARY_SET.Voucher,function() - G.ARGS.voucher_tag = G.ARGS.voucher_tag or {} - local voucher_key = get_next_megavoucher_key(true) - G.ARGS.voucher_tag[voucher_key] = true - G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1 - local card = Card(G.shop_vouchers.T.x + G.shop_vouchers.T.w/2, - G.shop_vouchers.T.y, G.CARD_W, G.CARD_H, G.P_CARDS.empty, G.P_CENTERS[voucher_key],{bypass_discovery_center = true, bypass_discovery_ui = true}) - cry_misprintize(card) - create_shop_card_ui(card, 'Voucher', G.shop_vouchers) - card:start_materialize() - if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then - card:set_edition(nil, true) - elseif G.GAME.modifiers.cry_force_random_edition then - local edition = cry_poll_random_edition() - card:set_edition(edition, true) - end - - if G.GAME.modifiers.cry_force_sticker == 'eternal' or G.GAME.modifiers.cry_sticker_sheet_plus then - card:set_eternal(true) - card.ability.eternal = true - end - if G.GAME.modifiers.cry_force_sticker == 'perishable' or G.GAME.modifiers.cry_sticker_sheet_plus then - card:set_perishable(true) - card.ability.perishable = true - end - if G.GAME.modifiers.cry_force_sticker == 'rental' or G.GAME.modifiers.cry_sticker_sheet_plus then - card:set_rental(true) - card.ability.rental = true - end - if G.GAME.modifiers.cry_force_sticker == 'pinned' or G.GAME.modifiers.cry_sticker_sheet_plus then - card.pinned = true - end - if G.GAME.modifiers.cry_force_sticker == 'banana' or G.GAME.modifiers.cry_sticker_sheet_plus then - card.ability.banana = true - end - if G.GAME.modifiers.cry_sticker_sheet_plus then - if G.GAME.modifiers.cry_sticker_sheet then - for k, v in pairs(SMODS.Stickers) do - v:set_sticker(card, true) - end - end - end - G.shop_vouchers:emplace(card) - G.ARGS.voucher_tag = nil - return true - end) - tag.triggered = true + tag:yep("+", G.C.SECONDARY_SET.Voucher, function() + G.ARGS.voucher_tag = G.ARGS.voucher_tag or {} + local voucher_key = get_next_megavoucher_key(true) + G.ARGS.voucher_tag[voucher_key] = true + G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1 + local card = Card( + G.shop_vouchers.T.x + G.shop_vouchers.T.w / 2, + G.shop_vouchers.T.y, + G.CARD_W, + G.CARD_H, + G.P_CARDS.empty, + G.P_CENTERS[voucher_key], + { bypass_discovery_center = true, bypass_discovery_ui = true } + ) + cry_misprintize(card) + create_shop_card_ui(card, "Voucher", G.shop_vouchers) + card:start_materialize() + if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then + card:set_edition(nil, true) + elseif G.GAME.modifiers.cry_force_random_edition then + local edition = cry_poll_random_edition() + card:set_edition(edition, true) + end + + if G.GAME.modifiers.cry_force_sticker == "eternal" or G.GAME.modifiers.cry_sticker_sheet_plus then + card:set_eternal(true) + card.ability.eternal = true + end + if G.GAME.modifiers.cry_force_sticker == "perishable" or G.GAME.modifiers.cry_sticker_sheet_plus then + card:set_perishable(true) + card.ability.perishable = true + end + if G.GAME.modifiers.cry_force_sticker == "rental" or G.GAME.modifiers.cry_sticker_sheet_plus then + card:set_rental(true) + card.ability.rental = true + end + if G.GAME.modifiers.cry_force_sticker == "pinned" or G.GAME.modifiers.cry_sticker_sheet_plus then + card.pinned = true + end + if G.GAME.modifiers.cry_force_sticker == "banana" or G.GAME.modifiers.cry_sticker_sheet_plus then + card.ability.banana = true + end + if G.GAME.modifiers.cry_sticker_sheet_plus then + if G.GAME.modifiers.cry_sticker_sheet then + for k, v in pairs(SMODS.Stickers) do + v:set_sticker(card, true) + end + end + end + G.shop_vouchers:emplace(card) + G.ARGS.voucher_tag = nil + return true + end) + tag.triggered = true end end, } local booster = { - object_type = "Tag", - name = "cry-Booster Tag", + object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + }, + }, + name = "cry-Booster Tag", order = 28, - atlas = "tag_cry", - pos = { x = 5, y = 3 }, - config = { type = "immediate" }, - key = "booster", + atlas = "tag_cry", + pos = { x = 5, y = 3 }, + config = { type = "immediate" }, + key = "booster", loc_vars = function(self, info_queue) return { vars = {} } end, - min_ante = 4, - apply = function(self, tag, context) - if context.type == "immediate" then + min_ante = 4, + apply = function(self, tag, context) + if context.type == "immediate" then local lock = tag.ID - G.CONTROLLER.locks[lock] = true - tag:yep('+', G.C.BLUE, function() + G.CONTROLLER.locks[lock] = true + tag:yep("+", G.C.BLUE, function() G.GAME.boostertag = true - G.CONTROLLER.locks[lock] = nil - return true - end) - tag.triggered = true - return true + G.CONTROLLER.locks[lock] = nil + return true + end) + tag.triggered = true + return true end - - end + end, } local tagitems = { cat, @@ -917,49 +1081,21 @@ local tagitems = { gourmand, better_top_up, booster, - empoweredpack_sprite, + better_voucher, + epic_tag, + glitched_tag, + oversat_tag, + mosaic_tag, + gold_tag, + glass_tag, + blur_tag, + astral_tag, + loss, + m_tag, + double_m_tag, } -if Cryptid.enabled["Vouchers"] then - tagitems[#tagitems + 1] = better_voucher -end -if Cryptid.enabled["Epic Jokers"] then - tagitems[#tagitems + 1] = epic_tag -end -if Cryptid.enabled["Misc."] then - tagitems[#tagitems + 1] = glitched_tag - tagitems[#tagitems + 1] = oversat_tag - tagitems[#tagitems + 1] = mosaic_tag - tagitems[#tagitems + 1] = gold_tag - tagitems[#tagitems + 1] = glass_tag - tagitems[#tagitems + 1] = blur_tag - tagitems[#tagitems + 1] = astral_tag - tagitems[#tagitems + 1] = loss - if Cryptid.enabled["M Jokers"] then - tagitems[#tagitems + 1] = m_tag - tagitems[#tagitems + 1] = double_m_tag - end -end return { name = "Tags", - init = function() - --Memory Tag Patches - store last tag used - local tapr = Tag.apply_to_run - function Tag:apply_to_run(x) - local ret = tapr(self, x) - if - self.triggered - and self.key ~= "tag_double" - and self.key ~= "tag_cry_memory" - and self.key ~= "tag_cry_triple" - and self.key ~= "tag_cry_quadruple" - and self.key ~= "tag_cry_quintuple" - and self.key ~= "tag_ortalab_rewind" - then - G.GAME.cry_last_tag_used = self.key - G.GAME.cry_memory_orbital = self.ability.orbital_hand - end - return ret - end - end, - items = tagitems, + init = function() end, + items = tagitems, } diff --git a/Cryptid/items/test.lua b/Cryptid/items/test.lua new file mode 100644 index 0000000..d531d41 --- /dev/null +++ b/Cryptid/items/test.lua @@ -0,0 +1,193 @@ +local test = { + object_type = "Joker", + key = "test", + discovered = true, + gameset_config = { + modest = { + extra = { chips = 1 }, + center = { rarity = 1, blueprint_compat = false, immutable = true, no_dbl = false }, + }, + mainline = { center = { rarity = 2, blueprint_compat = true, immutable = true, no_dbl = true } }, + madness = { extra = { chips = 100 }, center = { rarity = 3 } }, + cryptid_in_2025 = { extra = { chips = 1e308 }, center = { rarity = "cry_exotic" } }, + }, + extra_gamesets = { "cryptid_in_2025" }, + dependencies = { + items = { + "j_cry_happy", + "set_cry_m", + }, + }, + config = { extra = { chips = 10 } }, + pos = { x = 1, y = 0 }, + rarity = 2, + order = 11, + cost = 1, + blueprint_compat = true, + atlas = "atlasone", + loc_vars = function(self, info_queue, center) + local gameset = Card.get_gameset(center) + if gameset == "disabled" then + gameset = "mainline" + end --still show description + return { + vars = { center.ability.extra.chips }, + key = "j_cry_test_" .. gameset, + } + end, + calculate = function(self, card, context) + local gameset = Card.get_gameset(card) + if context.cardarea == G.jokers and not context.before and not context.after then + return { + message = localize({ type = "variable", key = "a_chips", vars = { card.ability.extra.chips } }), + chip_mod = card.ability.extra.chips, + } + elseif context.first_hand_drawn and gameset ~= "modest" then + ease_dollars(gameset ~= "mainline" and 44444 or 44) + end + end, + cry_credits = { + idea = { + "m", + }, + art = { + "m", + }, + code = { + "Jevonn", + }, + }, +} +local test2 = { + object_type = "Joker", + name = "ABC", + key = "abc", + loc_txt = { + name = "ABC", + text = {}, + }, + pos = { x = 0, y = 0 }, + cost = 1, + rarity = 1, + unlocked = true, + discovered = false, + blueprint_compat = true, + eternal_compat = true, + perishable_compat = true, + calculate = function(self, card, context) + if context.retrigger_joker_check and not context.retrigger_joker then + if card.T.x + card.T.w / 2 > context.other_card.T.x + context.other_card.T.w / 2 then + return { + message = localize("k_again_ex"), + repetitions = 1, + card = card, + } + end + elseif context.other_joker and card ~= context.other_joker then + if card.T.x + card.T.w / 2 < context.other_joker.T.x + context.other_joker.T.w / 2 then + if not Talisman.config_file.disable_anims then + G.E_MANAGER:add_event(Event({ + func = function() + context.other_joker:juice_up(0.5, 0.5) + return true + end, + })) + end + return { + message = localize({ type = "variable", key = "a_xmult", vars = { 3 } }), + Xmult_mod = 3, + } + end + end + end, +} +local test3 = { + object_type = "Joker", + name = "cry-test3", + key = "test3", + pos = { x = 2, y = 1 }, + rarity = 1, + cost = 2, + discovered = true, + atlas = "atlastwo", + loc_txt = { + name = "Loc var man B)", + text = { + "{C:attention}#1#", + "{C:green}#2#", + "{C:inactive}#3##4##5#", + }, + }, + loc_vars = function(self, info_queue, card) + local a, b, c, d, e = cry_get_enchanced_deck_info() + return { vars = { a, b, c, d, e } } + end, + cry_credits = { + idea = { + "Jevonn", + }, + art = { + "Jevonn", + }, + code = { + "Jevonn", + }, + }, +} +local test4 = { + object_type = "Joker", + name = "skfjadfjk;ldsjfkerjiopghtwueihvefjhgrwjh", + key = "weuqyreuiyroiusdafgdbflhfiuowyqoiwufhjklfhioqhfh8393824774893fhjdhfkj", + pos = { x = 0, y = 0 }, + rarity = 1, + cost = 404, + atlas = "atlasone", + config = { extra = { center = nil } }, + loc_txt = { + name = "Allmighty Center Checker", + text = { + "{C:attention}#1#", + "{C:green}#2#", + "{C:inactive}1st joker slot btw", + }, + }, + loc_vars = function(self, info_queue, card) + return { + vars = { + (card.ability.blueprint_compat ~= nil and card.ability.blueprint_compat or "uh oh"), + card.ability.extra.center, + }, + } + end, + update = function(self, card, front) + if G.STAGE == G.STAGES.RUN then + G.GAME.round_resets.discards = G.GAME.round_resets.discards + 1 + other_joker = G.jokers.cards[1] + if other_joker then + if G.GAME.current_round.discards_used % 3 == 0 then + card.ability.extra.center = "blueprint_compat" + if other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat then + card.ability.blueprint_compat = "yes" + else + card.ability.blueprint_compat = "nah" + end + elseif G.GAME.current_round.discards_used % 3 == 1 then + card.ability.extra.center = "immutable" + if other_joker and other_joker ~= card and (Card.no(other_joker, "immutable", true)) then + card.ability.blueprint_compat = "yes" + else + card.ability.blueprint_compat = "nah" + end + else + card.ability.extra.center = "no_dbl" + if other_joker and other_joker ~= card and (Card.no(other_joker, "no_dbl", true)) then + card.ability.blueprint_compat = "yes" + else + card.ability.blueprint_compat = "nah" + end + end + end + end + end, +} +return { items = { test, test2, test3, test4 }, disabled = true } diff --git a/Cryptid/Items/Vouchers.lua b/Cryptid/items/voucher.lua similarity index 62% rename from Cryptid/Items/Vouchers.lua rename to Cryptid/items/voucher.lua index e566c91..95a4161 100644 --- a/Cryptid/Items/Vouchers.lua +++ b/Cryptid/items/voucher.lua @@ -7,44 +7,91 @@ local voucher_atlas = { } local copies = { --Double tags become Triple Tags and are 2X as common 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}} + 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 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}} + 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", + 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}} + 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", + dependencies = { + items = { + "set_cry_voucher", + "set_cry_code", + }, + }, key = "command_prompt", atlas = "atlasvoucher", order = 3, @@ -71,6 +118,13 @@ local command_prompt = { --Code cards can appear in the shop } local satellite_uplink = { --Code cards may appear in any of the Celestial Packs object_type = "Voucher", + dependencies = { + items = { + "set_cry_voucher", + "set_cry_code", + "v_cry_command_prompt", + }, + }, key = "satellite_uplink", atlas = "atlasvoucher", order = 4, @@ -82,10 +136,19 @@ local satellite_uplink = { --Code cards may appear in any of the Celestial Packs } local quantum_computing = { --Code cards can spawn with Negative addition 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, @@ -93,6 +156,12 @@ local quantum_computing = { --Code cards can spawn with Negative addition } 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, @@ -113,6 +182,13 @@ local pairing = { --Retrigger all M Jokers if played hand is a Pair } 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, @@ -134,11 +210,20 @@ local repair_man = { --Retrigger all M Jokers if played hand contains a pair } 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 = { jolly = { "Jolly Open Winner", @@ -155,6 +240,12 @@ local pairamount_plus = { --Retrigger all M Jokers once for every pair contained } 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", @@ -171,6 +262,14 @@ local double_vision = { --Double-Sided cards appear 4x more frequently } 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, @@ -188,11 +287,20 @@ local double_slit = { --Meld can appear in the shop and Arcana Packs } 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, @@ -205,51 +313,63 @@ local double_down = { --After every round, X1.5 to all values on the back of Dou } local overstock_multi = { --+1 card slot[s], +1 booster pack slot[s] and +1 voucher slot[s] available in the shop 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" }, - loc_vars = function(self, info_queue) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + 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) + redeem = function(self, card) 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 + + math.floor(card and card.ability.extra or 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))) + change_shop_size(math.floor(card and card.ability.extra or self.config.extra)) return true end, })) - cry_bonusvouchermod(math.floor(self.config.extra)) + cry_bonusvouchermod(math.floor(card and card.ability.extra or self.config.extra)) end, - unredeem = function(self) + unredeem = function(self, card) 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 + - math.floor(card and card.ability.extra or 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))) + change_shop_size(-1 * math.floor(card and card.ability.extra or self.config.extra)) return true end, })) - cry_bonusvouchermod(-1*math.floor(self.config.extra)) + cry_bonusvouchermod(-1 * math.floor(card and card.ability.extra or self.config.extra)) end, } local massproduct = { --All cards and packs in the shop cost $1 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() @@ -280,19 +400,41 @@ local massproduct = { --All cards and packs in the shop cost $1 } local curate = { --All cards appear with an Edition 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 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({ @@ -316,95 +458,99 @@ local rerollexchange = { --All rerolls cost $2 --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 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" }, - loc_vars = function(self, info_queue) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + 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) - 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, - })) + 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) - 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, - })) + 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 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" }, - loc_vars = function(self, info_queue) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + 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) - 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, - })) + 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) - 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, - })) + 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 object_type = "Voucher", + dependencies = { + items = { + "set_cry_tier3", + }, + }, key = "tacclimator", - config = { extra = 56 / 4, extra_disp = 6 }, --blame thunk for this extra value + config = { extra = 24 / 4, extra_disp = 6 }, 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 } } + 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) + redeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() - G.GAME.tarot_rate = 4 * self.config.extra + G.GAME.tarot_rate = G.GAME.tarot_rate * (card and card.ability.extra or self.config.extra) return true end, })) end, - unredeem = function(self) + unredeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() - G.GAME.tarot_rate = G.GAME.tarot_rate / self.config.extra * (56/4) / 6 + G.GAME.tarot_rate = G.GAME.tarot_rate / (card and card.ability.extra or self.config.extra) return true end, })) @@ -412,27 +558,33 @@ local tacclimator = { --Tarot cards appear X6 more frequently in the shop All } local pacclimator = { --Planet cards appear X6 more frequently in the shop All future Planet cards are free object_type = "Voucher", + dependencies = { + items = { + "set_cry_tier3", + }, + }, key = "pacclimator", - config = { extra = 56 / 4, extra_disp = 6 }, --blame thunk for this extra value + config = { extra = 24 / 4, extra_disp = 6 }, 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 } } + 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) + redeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() - G.GAME.planet_rate = 4 * self.config.extra + G.GAME.planet_rate = G.GAME.planet_rate * (card and card.ability.extra or self.config.extra) return true end, })) end, - unredeem = function(self) + unredeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() - G.GAME.planet_rate = G.GAME.planet_rate / self.config.extra * (56/4) / 6 + G.GAME.planet_rate = G.GAME.planet_rate / (card and card.ability.extra or self.config.extra) return true end, })) @@ -440,27 +592,37 @@ local pacclimator = { --Planet cards appear X6 more frequently in the shop All } local moneybean = { --Raise the cap on interest earned in each round to $2.0e299 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" }, - loc_vars = function(self, info_queue) - return { vars = { self.config.extra / 5 } } + 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) + 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 = self.config.extra + G.GAME.interest_cap = (card and card.ability.extra or self.config.extra) return true end, })) end, - unredeem = function(self) + 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)) + 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, })) @@ -468,30 +630,38 @@ local moneybean = { --Raise the cap on interest earned in each round to $2.0e299 } local fabric = { --+2 Joker slot[s] 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" }, - loc_vars = function(self, info_queue) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + 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) + 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 + math.max(1, math.floor(self.config.extra)) + 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) + 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 - math.max(1, math.floor(self.config.extra)) + G.jokers.config.card_limit = G.jokers.config.card_limit + - (card and card.ability.extra or self.config.extra) end return true end, @@ -499,35 +669,34 @@ local fabric = { --+2 Joker slot[s] 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 + 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 + if args.type == "cry_lock_all" then lock_card(self) end - if args.type == 'cry_unlock_all' then + if args.type == "cry_unlock_all" then unlock_card(self) 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", + 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 = { asteroglyph_ante() } } end, @@ -549,117 +718,166 @@ local asteroglyph = { --Set Ante to 0 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 + if args.type == "cry_lock_all" then lock_card(self) end - if args.type == 'cry_unlock_all' then + if args.type == "cry_unlock_all" then unlock_card(self) end end, + init = function(self) + 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 + end, } --Order 89 reserved for Ivory Script (unimplemented) local blankcanvas = { --+2 hand size 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" }, - loc_vars = function(self, info_queue) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + 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) - G.hand:change_size(math.max(1, math.floor(self.config.extra))) + redeem = function(self, card) + G.hand:change_size((card and card.ability.extra or self.config.extra)) end, - unredeem = function(self) - G.hand:change_size(-1*math.max(1, math.floor(self.config.extra))) + 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 + if args.type == "cry_lock_all" then lock_card(self) end - if args.type == 'cry_unlock_all' then + if args.type == "cry_unlock_all" then unlock_card(self) end end, } - local stickyhand = { --+1 card selection limit 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) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + loc_vars = function(self, info_queue, card) + return { vars = { (card and card.ability.extra or 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)) + 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) - 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() + 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) 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) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + loc_vars = function(self, info_queue, card) + return { vars = { (card and card.ability.extra or 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)) + 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) - 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() + 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 (replace me when "extra functionality" is added later) +local hyperspacetether = { --+2 card selection limit + other stuff 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" }, - loc_vars = function(self, info_queue) - return { vars = { math.max(1, math.floor(self.config.extra)) } } + 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) - G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - + math.max(1, math.floor(self.config.extra)) + 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) - 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() + 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 object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "v_cry_copies", + }, + }, atlas = "tag_cry", name = "cry-Triple Tag", order = 20, @@ -706,6 +924,12 @@ local triple = { --Copies voucher triple tag } local quadruple = { --Tag printer voucher quadruple tag object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "v_cry_tag_printer", + }, + }, atlas = "tag_cry", name = "cry-Quadruple Tag", order = 21, @@ -752,6 +976,12 @@ local quadruple = { --Tag printer voucher quadruple tag } local quintuple = { --Clone machine voucher quintuple tag object_type = "Tag", + dependencies = { + items = { + "set_cry_tag", + "v_cry_clone_machine", + }, + }, atlas = "tag_cry", name = "cry-Quintuple Tag", order = 22, @@ -813,95 +1043,6 @@ if SMODS.Mods["Tier3Sub"] then 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, @@ -924,85 +1065,35 @@ local voucheritems = { clone_machine, stickyhand, grapplinghook, - hyperspacetether + hyperspacetether, + command_prompt, + satellite_uplink, + quantum_computing, + pairing, + repair_man, + pairamount_plus, + double_vision, + double_slit, + double_down, } -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) + --Add T3 Voucher pool for Golden Voucher Tag (in Tags.lua) and maybe other things in the future + -- Uncursed this -Math + function get_next_megavoucher_key(_from_tag) + local _pool, _pool_key = get_current_pool("Tier3") + if _from_tag then + _pool_key = "Voucher_fromtag" 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 + 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, diff --git a/Cryptid/lib/ascended.lua b/Cryptid/lib/ascended.lua new file mode 100644 index 0000000..acfffa4 --- /dev/null +++ b/Cryptid/lib/ascended.lua @@ -0,0 +1,166 @@ +-- ascended.lua - Used for Ascended Hands + +G.FUNCS.cry_asc_UI_set = function(e) + if G.GAME.cry_exploit_override then + e.config.object.colours = { darken(G.C.SECONDARY_SET.Code, 0.2) } + else + e.config.object.colours = { G.C.GOLD } + end + e.config.object:update_text() +end +-- this is a hook to make funny "x of a kind"/"flush x" display text +local pokerhandinforef = G.FUNCS.get_poker_hand_info +function G.FUNCS.get_poker_hand_info(_cards) + local text, loc_disp_text, poker_hands, scoring_hand, disp_text = pokerhandinforef(_cards) + if G.SETTINGS.language == "en-us" then + if #scoring_hand > 5 and (text == "Flush Five" or text == "Five of a Kind") then + local rank_array = {} + local county = 0 + for i = 1, #scoring_hand do + local val = scoring_hand[i]:get_id() + rank_array[val] = (rank_array[val] or 0) + 1 + if rank_array[val] > county then + county = rank_array[val] + end + end + local function create_num_chunk(int) -- maybe useful enough to not be local? but tbh this function is probably some common coding exercise + if int >= 1000 then + int = 999 + end + local ones = { + ["1"] = "One", + ["2"] = "Two", + ["3"] = "Three", + ["4"] = "Four", + ["5"] = "Five", + ["6"] = "Six", + ["7"] = "Seven", + ["8"] = "Eight", + ["9"] = "Nine", + } + local tens = { + ["1"] = "Ten", + ["2"] = "Twenty", + ["3"] = "Thirty", + ["4"] = "Forty", + ["5"] = "Fifty", + ["6"] = "Sixty", + ["7"] = "Seventy", + ["8"] = "Eighty", + ["9"] = "Ninety", + } + local str_int = string.reverse(int .. "") -- ehhhh whatever + local str_ret = "" + for i = 1, string.len(str_int) do + local place = str_int:sub(i, i) + if place ~= "0" then + if i == 1 then + str_ret = ones[place] + elseif i == 2 then + if place == "1" and str_ret ~= "" then -- admittedly not my smartest moment, i dug myself into a hole here... + if str_ret == "One" then + str_ret = "Eleven" + elseif str_ret == "Two" then + str_ret = "Twelve" + elseif str_ret == "Three" then + str_ret = "Thirteen" + elseif str_ret == "Five" then + str_ret = "Fifteen" + elseif str_ret == "Eight" then + str_ret = "Eighteen" + else + str_ret = str_ret .. "teen" + end + else + str_ret = tens[place] .. ((string.len(str_ret) > 0 and " " or "") .. str_ret) + end + elseif i == 3 then + str_ret = ones[place] + .. (" Hundred" .. ((string.len(str_ret) > 0 and " and " or "") .. str_ret)) + end -- this line is wild + end + end + return str_ret + end + -- text gets stupid small at 100+ anyway + loc_disp_text = (text == "Flush Five" and "Flush " or "") + .. ( + (county < 1000 and create_num_chunk(county) or "Thousand") + .. (text == "Five of a Kind" and " of a Kind" or "") + ) + end + end + local hand_table = { + ["High Card"] = G.GAME.used_vouchers.v_cry_hyperspacetether and 1 or nil, + ["Pair"] = G.GAME.used_vouchers.v_cry_hyperspacetether and 2 or nil, + ["Two Pair"] = 4, + ["Three of a Kind"] = G.GAME.used_vouchers.v_cry_hyperspacetether and 3 or nil, + ["Straight"] = next(SMODS.find_card("j_four_fingers")) and cry_get_gameset() ~= "modest" and 4 or 5, + ["Flush"] = next(SMODS.find_card("j_four_fingers")) and cry_get_gameset() ~= "modest" and 4 or 5, + ["Full House"] = 5, + ["Four of a Kind"] = G.GAME.used_vouchers.v_cry_hyperspacetether and 4 or nil, + ["Straight Flush"] = next(SMODS.find_card("j_four_fingers")) and cry_get_gameset() ~= "modest" and 4 or 5, --debatable + ["cry_Bulwark"] = 5, + ["Five of a Kind"] = 5, + ["Flush House"] = 5, + ["Flush Five"] = 5, + ["cry_Clusterfuck"] = 8, + ["cry_UltPair"] = 8, + ["cry_WholeDeck"] = 52, + } + + -- this is where all the logic for asc hands is. currently it's very simple but if you want more complex logic, here's the place to do it + if hand_table[text] and cry_card_enabled("set_cry_poker_hand_stuff") == true then + G.GAME.current_round.current_hand.cry_asc_num = G.GAME.used_vouchers.v_cry_hyperspacetether + and #_cards - hand_table[text] + or #scoring_hand - hand_table[text] + else + G.GAME.current_round.current_hand.cry_asc_num = 0 + end + + G.GAME.current_round.current_hand.cry_asc_num = math.max(0, G.GAME.current_round.current_hand.cry_asc_num) + if G.GAME.cry_exploit_override then + G.GAME.current_round.current_hand.cry_asc_num = G.GAME.current_round.current_hand.cry_asc_num + 1 + end + + G.GAME.current_round.current_hand.cry_asc_num_text = ( + G.GAME.current_round.current_hand.cry_asc_num and G.GAME.current_round.current_hand.cry_asc_num > 0 + ) + and " (+" .. G.GAME.current_round.current_hand.cry_asc_num .. ")" + or "" + return text, loc_disp_text, poker_hands, scoring_hand, disp_text +end +function cry_ascend(num) -- edit this function at your leisure + if cry_card_enabled("set_cry_poker_hand_stuff") ~= true then + return num + end + if cry_get_gameset() == "modest" then + -- x(1.1 + 0.05 per sol) base, each card gives + (0.1 + 0.05 per sol) + if not G.GAME.current_round.current_hand.cry_asc_num then + return num + end + if G.GAME.current_round.current_hand.cry_asc_num <= 0 then + return num + end + return math.max( + num, + num + * ( + 1 + + 0.1 + + (0.05 * (G.GAME.sunnumber or 0)) + + ((0.1 + (0.05 * (G.GAME.sunnumber or 0))) * (G.GAME.current_round.current_hand.cry_asc_num or 0)) + ) + ) + else + return math.max( + num, + num * ((1.25 + (0.05 * (G.GAME.sunnumber or 0))) ^ G.GAME.current_round.current_hand.cry_asc_num or 0) + ) + end +end +function cry_pulse_flame(duration, intensity) -- duration is in seconds, intensity is in idfk honestly, but it increases pretty quickly + G.cry_flame_override = G.cry_flame_override or {} + G.cry_flame_override["duration"] = duration or 0.01 + G.cry_flame_override["intensity"] = intensity or 2 +end diff --git a/Cryptid/lib/calculate.lua b/Cryptid/lib/calculate.lua new file mode 100644 index 0000000..c1892af --- /dev/null +++ b/Cryptid/lib/calculate.lua @@ -0,0 +1,907 @@ +-- calculate.lua: modifications specifically for card calculation + +-- deal with Rigged and Fragile when scoring a playing card +local ec = eval_card +function eval_card(card, context) + if card.will_shatter then + return + end + -- Store old probability for later reference + local ggpn = G.GAME.probabilities.normal + if card.ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local ret, post = ec(card, context) + if card.ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + return ret, post +end + +--some functions to minimize the load on calculate_joker itself +function Card:cry_copy_ability() + local orig_ability = {} + if self.ability then + for i, j in pairs(self.ability) do + if (type(j) == "table") and is_number(j) then + orig_ability[i] = to_big(j) + elseif type(j) == "table" then + orig_ability[i] = {} + for i2, j2 in pairs(j) do + orig_ability[i][i2] = j2 + end + else + orig_ability[i] = j + end + end + end + return orig_ability +end +local cj = Card.calculate_joker + +function Card:cry_double_scale_calc(orig_ability, in_context_scaling) + if + self.ability.name ~= "cry-happyhouse" + and self.ability.name ~= "Acrobat" + and self.ability.name ~= "cry-sapling" + and self.ability.name ~= "cry-mstack" + and self.ability.name ~= "cry-notebook" + and self.ability.name ~= "Invisible Joker" + and self.ability.name ~= "cry-Old Invisible Joker" + then + local jkr = self + if jkr.ability and type(jkr.ability) == "table" then + if not G.GAME.cry_double_scale[jkr.sort_id] or not G.GAME.cry_double_scale[jkr.sort_id].ability then + if not G.GAME.cry_double_scale[jkr.sort_id] then + G.GAME.cry_double_scale[jkr.sort_id] = { ability = { double_scale = true } } + end + for k, v in pairs(jkr.ability) do + if type(jkr.ability[k]) ~= "table" then + G.GAME.cry_double_scale[jkr.sort_id].ability[k] = v + else + G.GAME.cry_double_scale[jkr.sort_id].ability[k] = {} + for _k, _v in pairs(jkr.ability[k]) do + G.GAME.cry_double_scale[jkr.sort_id].ability[k][_k] = _v + end + end + end + end + if G.GAME.cry_double_scale[jkr.sort_id] and not G.GAME.cry_double_scale[jkr.sort_id].scaler then + local dbl_info = G.GAME.cry_double_scale[jkr.sort_id] + if jkr.ability.name == "cry-Number Blocks" then + dbl_info.base = { "extra", "money" } + dbl_info.scaler = { "extra", "money_mod" } + dbl_info.scaler_base = jkr.ability.extra.money_mod + dbl_info.offset = 1 + end + if jkr.ability.name == "cry-Exponentia" then + dbl_info.base = { "extra", "Emult" } + dbl_info.scaler = { "extra", "Emult_mod" } + dbl_info.scaler_base = jkr.ability.extra.Emult_mod + dbl_info.offset = 1 + end + if jkr.ability.name == "cry-Redeo" then + dbl_info.base = { "extra", "money_req" } + dbl_info.scaler = { "extra", "money_mod" } + dbl_info.scaler_base = jkr.ability.extra.money_mod + dbl_info.offset = 1 + end + if jkr.ability.name == "cry-Chili Pepper" then + dbl_info.base = { "extra", "Xmult" } + dbl_info.scaler = { "extra", "Xmult_mod" } + dbl_info.scaler_base = jkr.ability.extra.Xmult_mod + dbl_info.offset = 1 + end + if jkr.ability.name == "cry-Scalae" then + dbl_info.base = { "extra", "shadow_scale" } + dbl_info.scaler = { "extra", "shadow_scale_mod" } + dbl_info.scaler_base = jkr.ability.extra.scale_mod + dbl_info.offset = 1 + end + if jkr.ability.name == "cry-mprime" then + dbl_info.base = { "extra", "mult" } + dbl_info.scaler = { "extra", "bonus" } + dbl_info.scaler_base = jkr.ability.extra.bonus + dbl_info.offset = 1 + end + if jkr.ability.name == "Yorick" then + dbl_info.base = { "x_mult" } + dbl_info.scaler = { "extra", "xmult" } --not kidding + dbl_info.scaler_base = 1 + dbl_info.offset = 1 + end + if jkr.ability.name == "Hologram" then + dbl_info.base = { "x_mult" } + dbl_info.scaler = { "extra" } + dbl_info.scaler_base = jkr.ability.extra + dbl_info.offset = 1 + end + if jkr.ability.name == "Gift Card" then + dbl_info.base = { "extra_value" } + dbl_info.scaler = { "extra" } + dbl_info.scaler_base = jkr.ability.extra + dbl_info.offset = 1 + end + if jkr.ability.name == "Throwback" then + dbl_info.base = { "x_mult" } + dbl_info.scaler = { "extra" } + dbl_info.scaler_base = jkr.ability.x_mult or 1 + dbl_info.offset = 1 + end + if jkr.ability.name == "Egg" then + dbl_info.base = { "extra_value" } + dbl_info.scaler = { "extra" } + dbl_info.scaler_base = jkr.ability.extra + dbl_info.offset = 1 + end + local default_modifiers = { + mult = 0, + h_mult = 0, + h_x_mult = 0, + h_dollars = 0, + p_dollars = 0, + t_mult = 0, + t_chips = 0, + x_mult = 1, + h_size = 0, + d_size = 0, + } + for k, v in pairs(jkr.ability) do + --extra_value is ignored because it can be scaled by Gift Card + if + k ~= "extra_value" + and dbl_info.ability[k] ~= v + and is_number(v) + and is_number(dbl_info.ability[k]) + then + dbl_info.base = { k } + local predicted_mod = math.abs(to_number(to_big(v)) - to_number(to_big(dbl_info.ability[k]))) + local best_key = { "" } + local best_coeff = 10 ^ 100 + for l, u in pairs(jkr.ability) do + if not (default_modifiers[l] and default_modifiers[l] == u) then + if l ~= k and is_number(u) then + if + to_number(to_big(predicted_mod / u)) >= 0.999 + and to_number(to_big(predicted_mod / u)) < to_number(to_big(best_coeff)) + then + best_coeff = to_number(to_big(predicted_mod / u)) + best_key = { l } + end + end + if type(jkr.ability[l]) == "table" then + for _l, _u in pairs(jkr.ability[l]) do + if + is_number(_u) + and to_number(to_big(predicted_mod / _u)) >= 0.999 + and to_number(to_big(predicted_mod / _u)) + < to_number(to_big(best_coeff)) + then + best_coeff = to_number(to_big(predicted_mod / _u)) + best_key = { l, _l } + end + end + end + end + end + dbl_info.scaler = best_key + end + if + type(jkr.ability[k]) == "table" + and type(dbl_info.ability) == "table" + and type(dbl_info.ability[k]) == "table" + then + for _k, _v in pairs(jkr.ability[k]) do + if + dbl_info.ability[k][_k] ~= _v + and is_number(_v) + and is_number(dbl_info.ability[k][_k]) + then + dbl_info.base = { k, _k } + local predicted_mod = math.abs(_v - dbl_info.ability[k][_k]) + local best_key = { "" } + local best_coeff = 10 ^ 100 + for l, u in pairs(jkr.ability) do + if is_number(u) and to_number(to_big(predicted_mod / u)) >= 0.999 then + if to_number(to_big(predicted_mod / u)) < to_number(to_big(best_coeff)) then + best_coeff = to_number(to_big(predicted_mod / u)) + best_key = { l } + end + end + if type(jkr.ability[l]) == "table" then + for _l, _u in pairs(jkr.ability[l]) do + if + (l ~= k or _l ~= _k) + and is_number(_u) + and to_number(to_big(predicted_mod / _u)) >= 0.999 + then + if + to_number(to_big(predicted_mod / _u)) + < to_number(to_big(best_coeff)) + then + best_coeff = to_number(to_big(predicted_mod / _u)) + best_key = { l, _l } + end + end + end + end + end + dbl_info.scaler = best_key + end + end + end + end + if dbl_info.scaler then + dbl_info.scaler_base = #dbl_info.scaler == 2 + and orig_ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + or orig_ability[dbl_info.scaler[1]] + dbl_info.offset = 1 + end + end + end + end + local orig_scale_base = nil + local orig_scale_scale = nil + if G.GAME.cry_double_scale[self.sort_id] and G.GAME.cry_double_scale[self.sort_id].scaler then + local jkr = self + local dbl_info = G.GAME.cry_double_scale[self.sort_id] + if #dbl_info.base == 2 then + if + not ( + type(jkr.ability) ~= "table" + or not orig_ability[dbl_info.base[1]] + or type(orig_ability[dbl_info.base[1]]) ~= "table" + or not orig_ability[dbl_info.base[1]][dbl_info.base[2]] + ) + then + orig_scale_base = orig_ability[dbl_info.base[1]][dbl_info.base[2]] + end + else + if jkr.ability[dbl_info.base[1]] then + orig_scale_base = orig_ability[dbl_info.base[1]] + end + end + if #dbl_info.scaler == 2 then + if + not (not orig_ability[dbl_info.scaler[1]] or not orig_ability[dbl_info.scaler[1]][dbl_info.scaler[2]]) + then + orig_scale_scale = orig_ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + end + else + if orig_ability[dbl_info.scaler[1]] then + orig_scale_scale = orig_ability[dbl_info.scaler[1]] + end + end + end + + if orig_scale_base and orig_scale_scale then + local new_scale_base = nil + local true_base = nil + local jkr = self + local dbl_info = G.GAME.cry_double_scale[self.sort_id] + if #dbl_info.base == 2 then + if + not ( + type(jkr.ability) ~= "table" + or not jkr.ability[dbl_info.base[1]] + or type(jkr.ability[dbl_info.base[1]]) ~= "table" + or not jkr.ability[dbl_info.base[1]][dbl_info.base[2]] + ) + then + new_scale_base = jkr.ability[dbl_info.base[1]][dbl_info.base[2]] + end + else + if jkr.ability[dbl_info.base[1]] then + new_scale_base = jkr.ability[dbl_info.base[1]] + end + end + true_base = dbl_info.scaler_base + if + new_scale_base and ((to_big(math.abs(new_scale_base - orig_scale_base)) > to_big(0)) or in_context_scaling) + then + for i = 1, #G.jokers.cards do + local obj = G.jokers.cards[i].config.center + if obj.cry_scale_mod and type(obj.cry_scale_mod) == "function" then + local ggpn = G.GAME.probabilities.normal + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local o = obj:cry_scale_mod( + G.jokers.cards[i], + jkr, + orig_scale_scale, + true_base, + orig_scale_base, + new_scale_base + ) + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if o then + if #dbl_info.scaler == 2 then + if + not ( + not jkr.ability[dbl_info.scaler[1]] + or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + ) + then + jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o + orig_scale_scale = o + end + else + if jkr.ability[dbl_info.scaler[1]] then + jkr.ability[dbl_info.scaler[1]] = o + orig_scale_scale = o + end + end + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + end + local reps = {} + for i2 = 1, #G.jokers.cards do + local _card = G.jokers.cards[i2] + local ggpn = G.GAME.probabilities.normal + if _card.ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local check = + cj(G.jokers.cards[i2], { retrigger_joker_check = true, other_card = G.jokers.cards[i] }) + if _card.ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if type(check) == "table" then + reps[i2] = check and check.repetitions and check or 0 + else + reps[i2] = 0 + end + if + G.jokers.cards[i2] == G.jokers.cards[i] + and G.jokers.cards[i].edition + and G.jokers.cards[i].edition.retriggers + then + local old_repetitions = reps[i] ~= 0 and reps[i].repetitions or 0 + local check = false --G.jokers.cards[i]:calculate_retriggers() + if check and check.repetitions then + check.repetitions = check.repetitions + old_repetitions + reps[i] = check + end + end + end + for i0, j in ipairs(reps) do + if (type(j) == "table") and j.repetitions and (j.repetitions > 0) then + for r = 1, j.repetitions do + card_eval_status_text(j.card, "jokers", nil, nil, nil, j) + local ggpn = G.GAME.probabilities.normal + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local o = obj:cry_scale_mod( + G.jokers.cards[i], + jkr, + orig_scale_scale, + true_base, + orig_scale_base, + new_scale_base + ) + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if o then + if #dbl_info.scaler == 2 then + if + not ( + not jkr.ability[dbl_info.scaler[1]] + or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + ) + then + jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o + orig_scale_scale = o + end + else + if jkr.ability[dbl_info.scaler[1]] then + jkr.ability[dbl_info.scaler[1]] = o + orig_scale_scale = o + end + end + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + end + end + end + end + end + end + end + end +end + +local smcc = SMODS.calculate_context +function SMODS.calculate_context(context, return_table) + for k, v in pairs(SMODS.Events) do + if G.GAME.events and G.GAME.events[k] then + context.pre_jokers = true + v:calculate(context) + context.pre_jokers = nil + end + end + if context.using_consumeable then + local _card = context.consumeable + --calculate the joker effects + local eval, post = eval_card(_card, context) + local effects = { eval } + for _, v in ipairs(post) do + effects[#effects + 1] = v + end + + if context.other_joker then + for k, v in pairs(effects[1]) do + v.other_card = _card + end + end + if effects[1].retriggers then + context.retrigger_joker = true + for rt = 1, #effects[1].retriggers do + context.retrigger_joker = effects[1].retriggers[rt].retrigger_card + local rt_eval, rt_post = eval_card(_card, context) + table.insert(effects, { effects[1].retriggers[rt] }) + table.insert(effects, rt_eval) + for _, v in ipairs(rt_post) do + effects[#effects + 1] = v + end + end + context.retrigger_joker = false + end + if return_table then + for _, v in ipairs(effects) do + if v.jokers and not v.jokers.card then + v.jokers.card = _card + end + return_table[#return_table + 1] = v + end + else + SMODS.trigger_effects(effects, _card) + end + end + smcc(context, return_table) + for k, v in pairs(SMODS.Events) do + if G.GAME.events and G.GAME.events[k] then + context.post_jokers = true + v:calculate(context) + context.post_jokers = nil + end + end +end + +function Card:calculate_joker(context) + local active_side = self + if + next(find_joker("cry-Flip Side")) + and not context.dbl_side + and self.edition + and self.edition.cry_double_sided + then + self:init_dbl_side() + active_side = self.dbl_side + if context.callback then + local m = context.callback + context.callback = function(card, a, b) + m(self, a, b) + end + context.dbl_side = true + end + end + if active_side.will_shatter then + return + end + local ggpn = G.GAME.probabilities.normal + if not G.GAME.cry_double_scale then + G.GAME.cry_double_scale = { double_scale = true } --doesn't really matter what's in here as long as there's something + end + if active_side.ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local orig_ability = active_side:cry_copy_ability() + local in_context_scaling = false + local callback = context.callback + if active_side.ability.cry_possessed then + if + not ( + (context.individual and not context.repetition) + or context.joker_main + or (context.other_joker and not context.post_trigger) + ) + then + return + end + context.callback = nil + end + local ret, trig = cj(active_side, context) + if active_side.ability.cry_possessed and ret then + if ret.mult_mod then + ret.mult_mod = ret.mult_mod * -1 + end + if ret.Xmult_mod then + ret.Xmult_mod = ret.Xmult_mod ^ -1 + end + if ret.mult then + ret.mult = ret.mult * -1 + end + if ret.x_mult then + ret.x_mult = ret.x_mult ^ -1 + end + ret.e_mult = nil + ret.ee_mult = nil + ret.eee_mult = nil + ret.hyper_mult = nil + ret.Emult_mod = nil + ret.EEmult_mod = nil + ret.EEEmult_mod = nil + ret.hypermult_mod = nil + if ret.chip_mod then + ret.chip_mod = ret.chip_mod * -1 + end + if ret.Xchip_mod then + ret.Xchip_mod = ret.Xchip_mod ^ -1 + end + if ret.chips then + ret.chips = ret.chips * -1 + end + if ret.x_chips then + ret.x_chips = ret.x_chips ^ -1 + end + ret.e_chips = nil + ret.ee_chips = nil + ret.eee_chips = nil + ret.hyper_chips = nil + ret.Echip_mod = nil + ret.EEchip_mod = nil + ret.EEEchip_mod = nil + ret.hyperchip_mod = nil + if ret.message then + -- TODO - this is a hacky way to do this, but it works for now + if type(ret.message) == "table" then + ret.message = ret.message[1] + end + if ret.message:sub(1, 1) == "+" then + ret.message = "-" .. ret.message:sub(2) + elseif ret.message:sub(1, 1) == "X" then + ret.message = "/" .. ret.message:sub(2) + else + ret.message = ret.message .. "?" + end + end + callback(context.blueprint_card or self, ret, context.retrigger_joker) + end + if not context.blueprint and (active_side.ability.set == "Joker") and not active_side.debuff then + if ret or trig then + in_context_scaling = true + end + end + if active_side.ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + active_side:cry_double_scale_calc(orig_ability, in_context_scaling) + return ret, trig +end + +function exponentia_scale_mod(self, orig_scale_scale, orig_scale_base, new_scale_base) + local jkr = self + local dbl_info = G.GAME.cry_double_scale[jkr.sort_id] + if jkr.ability and type(jkr.ability) == "table" then + if not G.GAME.cry_double_scale[jkr.sort_id] or not G.GAME.cry_double_scale[jkr.sort_id].ability then + if not G.GAME.cry_double_scale[jkr.sort_id] then + G.GAME.cry_double_scale[jkr.sort_id] = { ability = { double_scale = true } } + end + for k, v in pairs(jkr.ability) do + if type(jkr.ability[k]) ~= "table" then + G.GAME.cry_double_scale[jkr.sort_id].ability[k] = v + else + G.GAME.cry_double_scale[jkr.sort_id].ability[k] = {} + for _k, _v in pairs(jkr.ability[k]) do + G.GAME.cry_double_scale[jkr.sort_id].ability[k][_k] = _v + end + end + end + end + if G.GAME.cry_double_scale[jkr.sort_id] and not G.GAME.cry_double_scale[jkr.sort_id].scaler then + dbl_info.base = { "extra", "Emult" } + dbl_info.scaler = { "extra", "Emult_mod" } + dbl_info.scaler_base = jkr.ability.extra.Emult_mod + dbl_info.offset = 1 + end + end + local true_base = dbl_info.scaler_base + if true_base then + for i = 1, #G.jokers.cards do + local obj = G.jokers.cards[i].config.center + if obj.cry_scale_mod and type(obj.cry_scale_mod) == "function" then + local ggpn = G.GAME.probabilities.normal + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local o = obj:cry_scale_mod( + G.jokers.cards[i], + jkr, + orig_scale_scale, + true_base, + orig_scale_base, + new_scale_base + ) + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if o then + if #dbl_info.scaler == 2 then + if + not ( + not jkr.ability[dbl_info.scaler[1]] + or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + ) + then + jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o + orig_scale_scale = o + end + else + if jkr.ability[dbl_info.scaler[1]] then + jkr.ability[dbl_info.scaler[1]] = o + orig_scale_scale = o + end + end + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + end + local reps = {} + for i2 = 1, #G.jokers.cards do + local _card = G.jokers.cards[i2] + local ggpn = G.GAME.probabilities.normal + if _card.ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local check = + cj(G.jokers.cards[i2], { retrigger_joker_check = true, other_card = G.jokers.cards[i] }) + if _card.ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if type(check) == "table" then + reps[i2] = check and check.repetitions and check or 0 + else + reps[i2] = 0 + end + if + G.jokers.cards[i2] == G.jokers.cards[i] + and G.jokers.cards[i].edition + and G.jokers.cards[i].edition.retriggers + then + local old_repetitions = reps[i] ~= 0 and reps[i].repetitions or 0 + local check = false --G.jokers.cards[i]:calculate_retriggers() + if check and check.repetitions then + check.repetitions = check.repetitions + old_repetitions + reps[i] = check + end + end + end + for i0, j in ipairs(reps) do + if (type(j) == "table") and j.repetitions and (j.repetitions > 0) then + for r = 1, j.repetitions do + card_eval_status_text(j.card, "jokers", nil, nil, nil, j) + local ggpn = G.GAME.probabilities.normal + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local o = obj:cry_scale_mod( + G.jokers.cards[i], + jkr, + orig_scale_scale, + true_base, + orig_scale_base, + new_scale_base + ) + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if o then + if #dbl_info.scaler == 2 then + if + not ( + not jkr.ability[dbl_info.scaler[1]] + or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + ) + then + jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o + orig_scale_scale = o + end + else + if jkr.ability[dbl_info.scaler[1]] then + jkr.ability[dbl_info.scaler[1]] = o + orig_scale_scale = o + end + end + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + end + end + end + end + end + end + end +end + +function compound_interest_scale_mod(self, orig_scale_scale, orig_scale_base, new_scale_base) + local jkr = self + local dbl_info = G.GAME.cry_double_scale[jkr.sort_id] + if jkr.ability and type(jkr.ability) == "table" then + if not G.GAME.cry_double_scale[jkr.sort_id] or not G.GAME.cry_double_scale[jkr.sort_id].ability then + if not G.GAME.cry_double_scale[jkr.sort_id] then + G.GAME.cry_double_scale[jkr.sort_id] = { ability = { double_scale = true } } + end + for k, v in pairs(jkr.ability) do + if type(jkr.ability[k]) ~= "table" then + G.GAME.cry_double_scale[jkr.sort_id].ability[k] = v + else + G.GAME.cry_double_scale[jkr.sort_id].ability[k] = {} + for _k, _v in pairs(jkr.ability[k]) do + G.GAME.cry_double_scale[jkr.sort_id].ability[k][_k] = _v + end + end + end + end + if G.GAME.cry_double_scale[jkr.sort_id] and not G.GAME.cry_double_scale[jkr.sort_id].scaler then + dbl_info.base = { "extra", "percent" } + dbl_info.scaler = { "extra", "percent_mod" } + dbl_info.scaler_base = jkr.ability.extra.percent_mod + dbl_info.offset = 1 + end + end + local true_base = dbl_info.scaler_base + if true_base then + for i = 1, #G.jokers.cards do + local obj = G.jokers.cards[i].config.center + if obj.cry_scale_mod and type(obj.cry_scale_mod) == "function" then + local ggpn = G.GAME.probabilities.normal + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local o = obj:cry_scale_mod( + G.jokers.cards[i], + jkr, + orig_scale_scale, + true_base, + orig_scale_base, + new_scale_base + ) + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if o then + if #dbl_info.scaler == 2 then + if + not ( + not jkr.ability[dbl_info.scaler[1]] + or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + ) + then + jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o + orig_scale_scale = o + end + else + if jkr.ability[dbl_info.scaler[1]] then + jkr.ability[dbl_info.scaler[1]] = o + orig_scale_scale = o + end + end + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + end + local reps = {} + for i2 = 1, #G.jokers.cards do + local _card = G.jokers.cards[i2] + local ggpn = G.GAME.probabilities.normal + if _card.ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local check = + cj(G.jokers.cards[i2], { retrigger_joker_check = true, other_card = G.jokers.cards[i] }) + if _card.ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if type(check) == "table" then + reps[i2] = check and check.repetitions and check or 0 + else + reps[i2] = 0 + end + if + G.jokers.cards[i2] == G.jokers.cards[i] + and G.jokers.cards[i].edition + and G.jokers.cards[i].edition.retriggers + then + local old_repetitions = reps[i] ~= 0 and reps[i].repetitions or 0 + local check = false --G.jokers.cards[i]:calculate_retriggers() + if check and check.repetitions then + check.repetitions = check.repetitions + old_repetitions + reps[i] = check + end + end + end + for i0, j in ipairs(reps) do + if (type(j) == "table") and j.repetitions and (j.repetitions > 0) then + for r = 1, j.repetitions do + card_eval_status_text(j.card, "jokers", nil, nil, nil, j) + local ggpn = G.GAME.probabilities.normal + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = 1e9 + end + local o = obj:cry_scale_mod( + G.jokers.cards[i], + jkr, + orig_scale_scale, + true_base, + orig_scale_base, + new_scale_base + ) + if G.jokers.cards[i].ability.cry_rigged then + G.GAME.probabilities.normal = ggpn + end + if o then + if #dbl_info.scaler == 2 then + if + not ( + not jkr.ability[dbl_info.scaler[1]] + or not jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] + ) + then + jkr.ability[dbl_info.scaler[1]][dbl_info.scaler[2]] = o + orig_scale_scale = o + end + else + if jkr.ability[dbl_info.scaler[1]] then + jkr.ability[dbl_info.scaler[1]] = o + orig_scale_scale = o + end + end + card_eval_status_text( + G.jokers.cards[i], + "extra", + nil, + nil, + nil, + { message = localize("k_upgrade_ex") } + ) + end + end + end + end + end + end + end +end diff --git a/Cryptid/lib/content.lua b/Cryptid/lib/content.lua new file mode 100644 index 0000000..355be2b --- /dev/null +++ b/Cryptid/lib/content.lua @@ -0,0 +1,659 @@ +-- content.lua - adds SMODS objects for content that should always be loaded + +SMODS.PokerHand({ + key = "Bulwark", + visible = false, + chips = 100, + mult = 10, + l_chips = 50, + l_mult = 1, + example = { + { "S_A", true, "m_stone" }, + { "S_A", true, "m_stone" }, + { "S_A", true, "m_stone" }, + { "S_A", true, "m_stone" }, + { "S_A", true, "m_stone" }, + }, + evaluate = function(parts, hand) + if cry_card_enabled("set_cry_poker_hand_stuff") ~= true or cry_card_enabled("c_cry_asteroidbelt") ~= true then + return + end + local stones = {} + for i, card in ipairs(hand) do + if card.config.center_key == "m_stone" or (card.config.center.no_rank and card.config.center.no_suit) then + stones[#stones + 1] = card + end + end + return #stones >= 5 and { stones } or {} + end, +}) +SMODS.PokerHand({ + key = "Clusterfuck", + visible = false, + chips = 200, + mult = 19, + l_chips = 40, + l_mult = 4, + example = { + { "S_A", true }, + { "C_K", true }, + { "H_J", true }, + { "S_T", true }, + { "D_9", true }, + { "D_8", true }, + { "S_6", true }, + { "C_5", true }, + }, + evaluate = function(parts, hand) + if cry_card_enabled("set_cry_poker_hand_stuff") ~= true or cry_card_enabled("c_cry_void") ~= true then + return + end + local other_hands = next(parts._flush) or next(parts._straight) or next(parts._all_pairs) + if #hand > 7 then + if not other_hands then + return { hand } + end + end + end, +}) +SMODS.PokerHand({ + key = "UltPair", + visible = false, + chips = 220, + mult = 22, + l_chips = 40, + l_mult = 4, + example = { + { "S_A", true }, + { "S_A", true }, + { "S_T", true }, + { "S_T", true }, + { "H_K", true }, + { "H_K", true }, + { "H_7", true }, + { "H_7", true }, + }, + evaluate = function(parts, hand) + if cry_card_enabled("set_cry_poker_hand_stuff") ~= true or cry_card_enabled("c_cry_marsmoons") ~= true then + return + end + local scoring_pairs = {} + local unique_suits = 0 + for suit, _ in pairs(SMODS.Suits) do + local scoring_suit_pairs = {} + for i = 1, #parts._2 do + if parts._2[i][1]:is_suit(suit) and parts._2[i][2]:is_suit(suit) then + scoring_suit_pairs[#scoring_suit_pairs + 1] = i + end + end + if #scoring_suit_pairs >= 2 then + unique_suits = unique_suits + 1 + for i = 1, #scoring_suit_pairs do + scoring_pairs[scoring_suit_pairs[i]] = (scoring_pairs[scoring_suit_pairs[i]] or 0) + 1 + end + end + end + if unique_suits < 2 then + return + end + local scored_cards = {} + local sc_max = 0 + local sc_unique = 0 + for i = 1, #parts._2 do + if scoring_pairs[i] then + if scoring_pairs[i] > 1 then + sc_unique = sc_unique + 1 + end + sc_max = math.max(sc_max, scoring_pairs[i]) + scored_cards[#scored_cards + 1] = parts._2[i][1] + scored_cards[#scored_cards + 1] = parts._2[i][2] + end + end + if sc_max == #scored_cards / 2 - 1 and sc_unique == 1 then + return + end + if #scored_cards >= 8 then + return { scored_cards } + end + end, +}) +SMODS.PokerHand({ + key = "WholeDeck", + visible = false, + chips = 525252525252525252525252525252, + mult = 52525252525252525252525252525, + l_chips = 52525252525252525252525252525, + l_mult = 5252525252525252525252525252, + example = { + { "S_A", true }, + { "H_A", true }, + { "C_A", true }, + { "D_A", true }, + { "S_K", true }, + { "H_K", true }, + { "C_K", true }, + { "D_K", true }, + { "S_Q", true }, + { "H_Q", true }, + { "C_Q", true }, + { "D_Q", true }, + { "S_J", true }, + { "H_J", true }, + { "C_J", true }, + { "D_J", true }, + { "S_T", true }, + { "H_T", true }, + { "C_T", true }, + { "D_T", true }, + { "S_9", true }, + { "H_9", true }, + { "C_9", true }, + { "D_9", true }, + { "S_8", true }, + { "H_8", true }, + { "C_8", true }, + { "D_8", true }, + { "S_7", true }, + { "H_7", true }, + { "C_7", true }, + { "D_7", true }, + { "S_6", true }, + { "H_6", true }, + { "C_6", true }, + { "D_6", true }, + { "S_5", true }, + { "H_5", true }, + { "C_5", true }, + { "D_5", true }, + { "S_4", true }, + { "H_4", true }, + { "C_4", true }, + { "D_4", true }, + { "S_3", true }, + { "H_3", true }, + { "C_3", true }, + { "D_3", true }, + { "S_2", true }, + { "H_2", true }, + { "C_2", true }, + { "D_2", true }, + }, + evaluate = function(parts, hand) + if cry_card_enabled("set_cry_poker_hand_stuff") ~= true or cry_card_enabled("c_cry_universe") ~= true then + return + end + if #hand >= 52 then + local deck_booleans = {} + local scored_cards = {} + for i = 1, 52 do + table.insert(deck_booleans, false) -- i could write this out but nobody wants to see that + end + local wilds = {} + for i, card in ipairs(hand) do + if + (card.config.center_key ~= "m_wild" and not card.config.center.any_suit) + and (card.config.center_key ~= "m_stone" and not card.config.center.no_rank) + then -- i don't know if these are different... this could be completely redundant but redundant is better than broken + local rank = card:get_id() + local suit = card.base.suit + local suit_int = 0 + suit_table = { "Spades", "Hearts", "Clubs", "Diamonds" } + for i = 1, 4 do + if suit == suit_table[i] then + suit_int = i + end + end + if suit_int > 0 then -- check for custom rank here to prevent breakage? + deck_booleans[suit_int + ((rank - 2) * 4)] = true + table.insert(scored_cards, card) + end + elseif card.config.center_key == "m_wild" or card.config.center.any_suit then + table.insert(wilds, card) + end + end + for i, card in ipairs(wilds) do -- this 100% breaks with custom ranks + local rank = card:get_id() + for i = 1, 4 do + if not deck_booleans[i + ((rank - 2) * 4)] then + deck_booleans[i + ((rank - 2) * 4)] = true + break + end + end + table.insert(scored_cards, card) + end + local entire_fucking_deck = true + for i = 1, #deck_booleans do + if deck_booleans[i] == false then + entire_fucking_deck = false + break + end + end + if entire_fucking_deck == true then + return { scored_cards } + end + end + return + end, +}) +SMODS.Rarity({ + key = "exotic", + loc_txt = {}, + badge_colour = HEX("708b91"), +}) + +SMODS.Rarity({ + key = "epic", + loc_txt = {}, + badge_colour = HEX("ef0098"), + default_weight = 0.003, + pools = { ["Joker"] = true }, + get_weight = function(self, weight, object_type) + -- The game shouldn't try generating Epic Jokers when they are disabled + if Cryptid_config["Epic Jokers"] then + return 0.003 + else + return 0 + end + end, +}) + +SMODS.Rarity({ + key = "candy", + loc_txt = {}, + badge_colour = HEX("e275e6"), +}) + +SMODS.Rarity({ + key = "cursed", + loc_txt = {}, + badge_colour = HEX("474931"), +}) + +--Add Unique consumable set - used for unique consumables that aren't normally obtained (e.g. Potion) +SMODS.ConsumableType({ + key = "Unique", + primary_colour = G.C.MONEY, + secondary_colour = G.C.MONEY, + collection_rows = { 4, 4 }, + shop_rate = 0.0, + loc_txt = {}, + default = "c_cry_potion", + can_stack = false, + can_divide = false, +}) +-- Pool used by Food Jokers +SMODS.ObjectType({ + key = "Food", + default = "j_reserved_parking", + cards = {}, + inject = function(self) + SMODS.ObjectType.inject(self) + -- insert base game food jokers + self:inject_card(G.P_CENTERS.j_gros_michel) + self:inject_card(G.P_CENTERS.j_egg) + self:inject_card(G.P_CENTERS.j_ice_cream) + self:inject_card(G.P_CENTERS.j_cavendish) + self:inject_card(G.P_CENTERS.j_turtle_bean) + self:inject_card(G.P_CENTERS.j_diet_cola) + self:inject_card(G.P_CENTERS.j_popcorn) + self:inject_card(G.P_CENTERS.j_ramen) + self:inject_card(G.P_CENTERS.j_selzer) + end, +}) +SMODS.ObjectType({ + object_type = "ObjectType", + key = "Meme", + default = "j_mr_bones", + cards = {}, + inject = function(self) + SMODS.ObjectType.inject(self) + -- insert base game meme jokers + self:inject_card(G.P_CENTERS.j_mr_bones) + self:inject_card(G.P_CENTERS.j_four_fingers) --loss reference + self:inject_card(G.P_CENTERS.j_obelisk) + self:inject_card(G.P_CENTERS.j_jolly) + self:inject_card(G.P_CENTERS.j_space) + end, +}) +SMODS.ObjectType({ + object_type = "ObjectType", + key = "Tier3", + default = "v_blank", + cards = {}, +}) +SMODS.ObjectType({ + object_type = "ObjectType", + key = "M", + default = "j_jolly", + cards = {}, +}) +--Stickers and modifiers used by Challenges+Stakes +SMODS.Atlas({ + key = "sticker", + path = "sticker_cry.png", + px = 71, + py = 95, + inject = function(self) + local file_path = type(self.path) == "table" + and (self.path[G.SETTINGS.language] or self.path["default"] or self.path["en-us"]) + or self.path + if file_path == "DEFAULT" then + return + end + -- language specific sprites override fully defined sprites only if that language is set + if self.language and not (G.SETTINGS.language == self.language) then + return + end + if not self.language and self.obj_table[("%s_%s"):format(self.key, G.SETTINGS.language)] then + return + end + self.full_path = (self.mod and self.mod.path or SMODS.path) + .. "assets/" + .. G.SETTINGS.GRAPHICS.texture_scaling + .. "x/" + .. file_path + local file_data = + assert(NFS.newFileData(self.full_path), ("Failed to collect file data for Atlas %s"):format(self.key)) + self.image_data = assert( + love.image.newImageData(file_data), + ("Failed to initialize image data for Atlas %s"):format(self.key) + ) + self.image = + love.graphics.newImage(self.image_data, { mipmaps = true, dpiscale = G.SETTINGS.GRAPHICS.texture_scaling }) + G[self.atlas_table][self.key_noloc or self.key] = self + G.shared_sticker_banana = + Sprite(0, 0, G.CARD_W, G.CARD_H, G[self.atlas_table][self.key_noloc or self.key], { x = 5, y = 2 }) + G.shared_sticker_pinned = + Sprite(0, 0, G.CARD_W, G.CARD_H, G[self.atlas_table][self.key_noloc or self.key], { x = 5, y = 0 }) + end, +}) +SMODS.Sound({ + key = "meow1", + path = "meow1.ogg", +}) +SMODS.Sound({ + key = "meow2", + path = "meow2.ogg", +}) +SMODS.Sound({ + key = "meow3", + path = "meow3.ogg", +}) +SMODS.Sound({ + key = "meow4", + path = "meow4.ogg", +}) +SMODS.Sound({ + key = "e_mosaic", + path = "e_mosaic.ogg", +}) +SMODS.Sound({ + key = "e_glitched", + path = "e_glitched.ogg", +}) +SMODS.Sound({ + key = "e_oversaturated", + path = "e_oversaturated.ogg", +}) +SMODS.Sound({ + key = "e_blur", + path = "e_blur.ogg", +}) +SMODS.Sound({ + key = "e_double_sided", + path = "e_double_sided.ogg", +}) +SMODS.Sound({ + key = "e_jolly", + path = "e_jolly.ogg", +}) +SMODS.Sound({ + key = "e_noisy", + path = "e_noisy.ogg", +}) +SMODS.Sound({ + key = "e_fragile", + path = "e_fragile.ogg", +}) +SMODS.Sound({ + key = "e_golden", + path = "e_golden.ogg", +}) +SMODS.Sound({ + key = "studiofromhelsinki", + path = "studiofromhelsinki.ogg", +}) +SMODS.Sound({ + key = "music_jimball", + path = "music_jimball.ogg", + sync = false, + pitch = 1, + select_music_track = function() + return next(find_joker("cry-Jimball")) + and Cryptid_config.Cryptid + and Cryptid_config.Cryptid.jimball_music + -- Lowering priority for edition Jimballs later + and 7 + end, +}) +SMODS.Sound({ + key = "music_code", + path = "music_code.ogg", + select_music_track = function() + return Cryptid_config.Cryptid + and Cryptid_config.Cryptid.code_music + and ( + ( + G.pack_cards + and G.pack_cards.cards + and G.pack_cards.cards[1] + and G.pack_cards.cards[1].ability.set == "Code" + ) or (G.GAME and G.GAME.USING_CODE) + ) + end, +}) +SMODS.Sound({ + key = "music_big", + path = "music_big.ogg", + select_music_track = function() + return Cryptid_config.Cryptid + and Cryptid_config.Cryptid.big_music + and to_big(G.GAME.round_scores["hand"].amt) > to_big(10) ^ 1000000 + end, +}) +SMODS.Sound({ + key = "music_exotic", + path = "music_exotic.ogg", + volume = 0.4, + select_music_track = function() + return Cryptid_config.Cryptid + and Cryptid_config.Cryptid.exotic_music + and #advanced_find_joker(nil, "cry_exotic", nil, nil, true) ~= 0 + end, +}) +SMODS.Sound({ + key = "music_mainline", + path = "music_mainline.ogg", + volume = 0.7, + sync = { + cry_music_modest = true, + cry_music_madness = true, + }, + pitch = 1, + select_music_track = function() + return G.STAGE == G.STAGES.MAIN_MENU + and (G.PROFILES[G.SETTINGS.profile].cry_gameset and G.PROFILES[G.SETTINGS.profile].cry_gameset == "mainline" or G.selectedGameset and G.selectedGameset ~= "modest" and G.selectedGameset ~= "madness") + and Cryptid_config.Cryptid.alt_bg_music + end, +}) +SMODS.Sound({ + key = "music_madness", + path = "music_madness.ogg", + volume = 0.7, + sync = { + cry_music_modest = true, + cry_music_mainline = true, + }, + pitch = 1, + select_music_track = function() + return G.STAGE == G.STAGES.MAIN_MENU + and (G.PROFILES[G.SETTINGS.profile].cry_gameset and G.PROFILES[G.SETTINGS.profile].cry_gameset == "madness" or G.selectedGameset == "madness") + and Cryptid_config.Cryptid.alt_bg_music + end, +}) +SMODS.Sound({ + key = "music_modest", + path = "music_modest.ogg", + volume = 0.7, + sync = { + cry_music_mainline = true, + cry_music_madness = true, + }, + pitch = 1, + select_music_track = function() + return G.STAGE == G.STAGES.MAIN_MENU + and (G.PROFILES[G.SETTINGS.profile].cry_gameset and G.PROFILES[G.SETTINGS.profile].cry_gameset == "modest" or G.selectedGameset == "modest") + and Cryptid_config.Cryptid.alt_bg_music + end, +}) +SMODS.Atlas({ + key = "modicon", + path = "cry_icon.png", + px = 32, + py = 32, +}) +SMODS.Atlas({ + key = "gameset", + path = "cry_gameset.png", + px = 29, + py = 29, +}) +SMODS.Atlas({ + key = "placeholders", + path = "placeholders.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasepic", + path = "atlasepic.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasone", + path = "atlasone.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlastwo", + path = "atlastwo.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasthree", + path = "atlasthree.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasspooky", + path = "atlasspooky.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasexotic", + path = "atlasexotic.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasnotjokers", --this is easier to spell then consumables + path = "atlasnotjokers.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "tag_cry", + path = "tag_cry.png", + px = 34, + py = 34, +}) +SMODS.Atlas({ + key = "atlasdeck", + path = "atlasdeck.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "glowing", + path = "b_cry_glowing.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "effarcire", + path = "goofy.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "code", + path = "c_cry_code.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "pack", + path = "pack_cry.png", + px = 71, + py = 95, +}) +SMODS.UndiscoveredSprite({ + key = "Code", + atlas = "code", + path = "c_cry_code.png", + pos = { x = 2, y = 5 }, + px = 71, + py = 95, +}) +SMODS.UndiscoveredSprite({ + key = "Unique", + atlas = "code", + path = "c_cry_code.png", + pos = { x = 2, y = 5 }, + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "blinds", + atlas_table = "ANIMATION_ATLAS", + path = "bl_cry.png", + px = 34, + py = 34, + frames = 21, +}) +SMODS.Atlas({ + key = "nostalgia", + atlas_table = "ANIMATION_ATLAS", + path = "bl_nostalgia.png", + px = 34, + py = 34, + frames = 21, +}) +--Enchancements, seals, other misc things etc +SMODS.Atlas({ + key = "cry_misc", + path = "cry_misc.png", + px = 71, + py = 95, +}) +SMODS.Atlas({ + key = "atlasSleeves", + path = "atlasSleeves.png", + px = 73, + py = 95, +}) diff --git a/Cryptid/lib/cross-mod.lua b/Cryptid/lib/cross-mod.lua new file mode 100644 index 0000000..be1921f --- /dev/null +++ b/Cryptid/lib/cross-mod.lua @@ -0,0 +1,105 @@ +-- cross-mod.lua - Used for compatibility and content with other mods + +--For Double Scale/Scalae, modify Green Joker to use one variable +SMODS.Joker:take_ownership("green_joker", { + config = { extra = 1, mult = 0 }, + name = "cry-Green Joker", --will prevent old calculation code from working + loc_vars = function(self, info_queue, center) + return { vars = { center.ability.extra, center.ability.extra, center.ability.mult } } + end, + calculate = function(self, card, context) + if + context.discard + and not context.blueprint + and context.other_card == context.full_hand[#context.full_hand] + then + local prev_mult = card.ability.mult + card.ability.mult = math.max(0, card.ability.mult - card.ability.extra) + if card.ability.mult ~= prev_mult then + return { + message = localize({ + type = "variable", + key = "a_mult_minus", + vars = { card.ability.extra }, + }), + colour = G.C.RED, + card = card, + } + end + end + if context.cardarea == G.jokers and context.before and not context.blueprint then + card.ability.mult = card.ability.mult + card.ability.extra + return { + card = card, + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.extra } }), + } + end + if context.joker_main then + return { + message = localize({ type = "variable", key = "a_mult", vars = { card.ability.mult } }), + mult_mod = card.ability.mult, + } + end + end, + loc_txt = {}, +}, true) + +--Top Gear from The World End with Jimbo has several conflicts with Cryptid items +--Namely, It overrides the edition that edition jokers spawn with, and doesn't work correctly with edition decks +--I'm taking ownership of this, overiding it, and making an implementaion that is compatible with Cryptid + +--Unrelated but kind of related side note: this prevents top gear from showing up in collection, not sure what's up with that +--Is it due to how TWEWJ is Coded? Is it an issue with Steamodded itself? Might be worth looking into, just sayin + +if (SMODS.Mods["TWEWY"] or {}).can_load then + SMODS.Joker:take_ownership("twewy_topGear", { + name = "Cry-topGear", + --Stop Top Gear's Old code from working by overriding these + add_to_deck = function(self, card, from_debuff) end, + remove_from_deck = function(self, card, from_debuff) end, + rarity = 3, + loc_txt = { + name = "Top Gear", + text = { + "All {C:blue}Common{C:attention} Jokers{}", + "are {C:dark_edition}Polychrome{}", + }, + }, + }) +end + +--Make Ortalab's Locked jokers not show up on Deck of Equilibrium and Antimatter Deck +if (SMODS.Mods["ortalab"] or {}).can_load then + for i = 1, 150 do + print(i) + SMODS.Joker:take_ownership("ortalab_temp_" .. i, { + name = "Cry-skibidi", + no_doe = true, + }) + end +end + +--Requires Malverk Mod +if (SMODS.Mods["malverk"] or {}).can_load then + AltTexture({ + key = "jolly_jokers", + set = "Joker", + path = "jolly.png", + loc_txt = { + name = "Jolly Jokers", + }, + }) + TexturePack({ -- HD Texture Pack + key = "jolly_texture", + textures = { + "cry_jolly_jokers", + }, + loc_txt = { + name = "Jolly", + text = { + "Jolly Jokers", + "Art by B", + }, + }, + }) +end diff --git a/Cryptid/lib/d20.lua b/Cryptid/lib/d20.lua new file mode 100644 index 0000000..e4903c6 --- /dev/null +++ b/Cryptid/lib/d20.lua @@ -0,0 +1,12 @@ +-- d20.lua - APIs for D20 content + +-- Currently this is very empty since D20 hasn't been fully implemented yet, but it should have a lot more later. + +--Will be moved to D20 file when that gets added +function roll_dice(seed, min, max, config) + local val + while not val or (config and config.ignore_value == val) do + val = pseudorandom(seed, min, max) + end + return val +end diff --git a/Cryptid/lib/event.lua b/Cryptid/lib/event.lua new file mode 100644 index 0000000..4d6424f --- /dev/null +++ b/Cryptid/lib/event.lua @@ -0,0 +1,44 @@ +-- event.lua - Adds SMODS Event class +-- Used for Jokers like Chocolate Die + +SMODS.Events = {} +SMODS.Event = SMODS.GameObject:extend({ + obj_table = SMODS.Events, + obj_buffer = {}, + required_params = { + "key", + }, + inject = function() end, + set = "Event", + class_prefix = "ev", + -- This should be called to start an event. + start = function(self) + G.GAME.events[self.key] = true + end, + -- This should be called to finish an event. + finish = function(self) + G.GAME.events[self.key] = nil + end, + -- Runs once before and after jokers, as well as a few special cases + calculate = function(self, context) end, + -- used for Chocolate Die tooltips, can maybe be repurposed later + loc_vars = function(self, info_queue, center) + info_queue[#info_queue + 1] = { set = "Other", key = self.key } + end, +}) + +--Calculate events on cash out +local gfco = G.FUNCS.cash_out +G.FUNCS.cash_out = function(e) + local ret = gfco(e) + SMODS.calculate_context({ cash_out = true }) + return ret +end + +-- Calculate events on start of shop +local guis = G.UIDEF.shop +G.UIDEF.shop = function(e) + local ret = guis(e) + SMODS.calculate_context({ start_shop = true }) + return ret +end diff --git a/Cryptid/lib/gameset.lua b/Cryptid/lib/gameset.lua new file mode 100644 index 0000000..437119f --- /dev/null +++ b/Cryptid/lib/gameset.lua @@ -0,0 +1,1810 @@ +-- gameset.lua: functions for gameset UI and logic + +-- Future changes I want to make to this: +-- - Sort cards in the Cryptid additions tab in collection order +-- - Give thematic sets a button to view content from just their set +-- - Edition decks and similar display their editions in the gameset config UI + +------------------------- +------ MODS LIST -------- +------------------------- + +-- If you plan on adding any new cross-mod content with one of these mods within the Cryptid source, +-- please add the name here so it displays properly in the Disabled message. +-- do it in the format MOD_ID = "MOD_NAME" +Cryptid.cross_mod_names = { + CardSleeves = "Card Sleeves", + Cryptid = "Cryptid", + jen = "Jen's Almanac", + sdm0sstuff = "SDM_0's Stuff", + magic_the_jokering = "Magic the Jokering", +} +------------------------- +---- TUTORIAL SYSTEM ---- +------------------------- + +local gu = Game.update +function Game:update(dt) + gu(self, dt) + if not G.PROFILES[G.SETTINGS.profile].cry_intro_complete then + G.FUNCS.cry_intro_controller() + end +end + +G.FUNCS.cry_intro_controller = function() + if Jen then + G.PROFILES[G.SETTINGS.profile].cry_intro_complete = true + G.PROFILES[G.SETTINGS.profile].cry_gameset = "madness" + end + G.PROFILES[G.SETTINGS.profile].cry_intro_progress = G.PROFILES[G.SETTINGS.profile].cry_intro_progress + or { + state = "start", + completed = {}, + } + if not G.SETTINGS.paused and not G.PROFILES[G.SETTINGS.profile].cry_intro_complete then + if G.STATE == G.STATES.MENU and not G.PROFILES[G.SETTINGS.profile].cry_intro_progress.completed.start then + G.PROFILES[G.SETTINGS.profile].cry_intro_progress.section = "start" + G.FUNCS.cry_intro_part("start") + G.PROFILES[G.SETTINGS.profile].cry_intro_progress.completed.start = true + G:save_progress() + end + end +end + +function create_UIBox_character_button_with_sprite(args) + local button = args.button or "NONE" + local func = args.func or nil + local colour = args.colour or G.C.RED + local update_func = args.update_func or nil + local sprite = args.sprite or nil + + local t = --{n=G.UIT.ROOT, config = {align = "cm", padding = 0.1, colour = G.C.CLEAR}, nodes={ + { + n = G.UIT.C, + config = { + align = "tm", + minw = 2.5, + padding = 0.2, + minh = 1.2, + r = 0.1, + hover = true, + colour = colour, + button = func, + func = update_func, + shadow = true, + maxw = args.maxw, + id = args.id, + }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.T, + config = { + text = button, + scale = 0.55, + colour = G.C.UI.TEXT_LIGHT, + focus_args = { button = "x", orientation = "bm" }, + func = "set_button_pip", + }, + }, + }, + }, + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { n = G.UIT.O, config = { object = sprite } }, + }, + }, + }, + } --, + --}} + return t +end + +G.FUNCS.cry_intro_part = function(_part) + local step = 1 + G.SETTINGS.paused = true + if _part == "start" then + G.gateway = Sprite( + G.ROOM_ATTACH.T.x + G.ROOM_ATTACH.T.w / 2 - 1, + G.ROOM_ATTACH.T.y + G.ROOM_ATTACH.T.h / 2 - 4, + G.CARD_W * 1.5, + G.CARD_H * 1.5, + G.ASSET_ATLAS["cry_atlasnotjokers"], + { x = 2, y = 0 } + ) + G.gateway.states.visible = false + G.gateway.states.collide.can = true + G.gateway.states.focus.can = false + G.gateway.states.hover.can = true + G.gateway.states.drag.can = false + G.gateway.hover = Node.hover + G.yawetag = Sprite( + G.ROOM_ATTACH.T.x + G.ROOM_ATTACH.T.w / 2 - 1, + G.ROOM_ATTACH.T.y + G.ROOM_ATTACH.T.h / 2 - 4, + G.CARD_W * 1.5, + G.CARD_H * 1.5, + G.ASSET_ATLAS["cry_atlasnotjokers"], + { x = 6, y = 5 } + ) + G.yawetag.states.visible = false + G.yawetag.states.collide.can = true + G.yawetag.states.focus.can = false + G.yawetag.states.hover.can = true + G.yawetag.states.drag.can = false + G.yawetag.hover = Node.hover + step = cry_intro_info({ + text_key = "cry_intro_1", + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = 0 } }, + step = step, + }) + step = cry_intro_info({ + text_key = "cry_intro_2", + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = -3 } }, + step = step, + }) + step = cry_intro_info({ + text_key = "cry_intro_3", + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = -3 } }, + step = step, + highlight = { + G.gateway, + G.yawetag, + }, + on_start = function() + G.gateway.states.visible = true + G.gateway:set_alignment({ major = G.ROOM_ATTACH, type = "cm", offset = { x = -2.5, y = -3 } }) + G.yawetag.states.visible = true + G.yawetag:set_alignment({ major = G.ROOM_ATTACH, type = "cm", offset = { x = 2.5, y = -3 } }) + end, + }) + step = cry_intro_info({ + text_key = "cry_intro_4", + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = -3 } }, + step = step, + highlight = { + G.gateway, + G.yawetag, + }, + }) + local modestSprite = Sprite(0, 0, 1, 1, G.ASSET_ATLAS["cry_gameset"], { x = 0, y = 0 }) + modestSprite:define_draw_steps({ + { shader = "dissolve", shadow_height = 0.05 }, + { shader = "dissolve" }, + }) + local mainlineSprite = Sprite(0, 0, 1, 1, G.ASSET_ATLAS["cry_gameset"], { x = 1, y = 0 }) + mainlineSprite:define_draw_steps({ + { shader = "dissolve", shadow_height = 0.05 }, + { shader = "dissolve" }, + }) + local madnessSprite = Sprite(0, 0, 1, 1, G.ASSET_ATLAS["cry_gameset"], { x = 2, y = 0 }) + madnessSprite:define_draw_steps({ + { shader = "dissolve", shadow_height = 0.05 }, + { shader = "dissolve" }, + }) + --TODO: localize + G.modestBtn = create_UIBox_character_button_with_sprite({ + sprite = modestSprite, + button = "Modest", + id = "modest", + func = "cry_modest", + colour = G.C.GREEN, + maxw = 3, + }) + G.mainlineBtn = create_UIBox_character_button_with_sprite({ + sprite = mainlineSprite, + button = "Mainline", + id = "mainline", + func = "cry_mainline", + colour = G.C.RED, + maxw = 3, + }) + G.madnessBtn = create_UIBox_character_button_with_sprite({ + sprite = madnessSprite, + button = "Madness", + id = "madness", + func = "cry_madness", + colour = G.C.CRY_EXOTIC, + maxw = 3, + }) + local gamesetUI = create_UIBox_generic_options({ + infotip = false, + contents = { + G.modestBtn, + G.mainlineBtn, + G.madnessBtn, + }, + back_label = "Confirm", + back_colour = G.C.BLUE, + back_func = "cry_gameset_confirm", + }) + G.E_MANAGER:add_event(Event({ + trigger = "after", + blocking = false, + blockable = false, + func = function() + G.madnessBtn.config.colour = G.C.CRY_EXOTIC + return true + end, + })) + gamesetUI.nodes[2] = nil + gamesetUI.config.colour = G.C.CLEAR + G.gamesetUI = UIBox({ + definition = gamesetUI, + config = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = 2.5 } }, + }) + G.gamesetUI.states.visible = false + step = cry_intro_info({ + text_key = "cry_intro_5", + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = -3 } }, + step = step, + highlight = { + G.gateway, + G.yawetag, + G.gamesetUI, + }, + on_start = function() + --the scaling should be eased later... + G.gamesetUI.states.visible = true + G.gateway:set_alignment({ major = G.ROOM_ATTACH, type = "cm", offset = { x = -4.5, y = 2.2 } }) + G.gateway.T.w = G.gateway.T.w * 3 + G.gateway.T.h = G.gateway.T.h * 3 + G.yawetag:set_alignment({ major = G.ROOM_ATTACH, type = "cm", offset = { x = 4.5, y = 2.2 } }) + G.yawetag.T.w = G.yawetag.T.w * 3 + G.yawetag.T.h = G.yawetag.T.h * 3 + end, + no_button = true, + }) + end + if _part == "modest" or _part == "mainline" or _part == "madness" then + local desc_length = { --number of times Jolly Joker speaks for each gameset + modest = 2, + mainline = 3, + madness = 3, + } + G.E_MANAGER:clear_queue("tutorial") + if G.OVERLAY_TUTORIAL.content then + G.OVERLAY_TUTORIAL.content:remove() + end + G.OVERLAY_TUTORIAL.Jimbo:remove_button() + G.OVERLAY_TUTORIAL.Jimbo:remove_speech_bubble() + G.OVERLAY_TUTORIAL.step = nil + for i = 1, desc_length[_part] do + step = cry_intro_info({ + text_key = "cry_" .. _part .. "_" .. i, + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = -3 } }, + step = step, + highlight = { + G.gamesetUI:get_UIE_by_ID(_part), + }, + }) + end + step = cry_intro_info({ + no_button = true, + attach = { major = G.ROOM_ATTACH, type = "cm", offset = { x = 0, y = -3 } }, + step = step, + highlight = { + G.gateway, + G.yawetag, + G.gamesetUI, + }, + }) + end +end + +G.FUNCS.cry_modest = function(e) + G.modestBtn.config.colour = G.C.CRY_SELECTED + G.mainlineBtn.config.colour = G.C.RED + G.madnessBtn.config.colour = G.C.CRY_EXOTIC + G.FUNCS.cry_intro_part("modest") + G.selectedGameset = "modest" +end +G.FUNCS.cry_mainline = function(e) + G.modestBtn.config.colour = G.C.GREEN + G.mainlineBtn.config.colour = G.C.CRY_SELECTED + G.madnessBtn.config.colour = G.C.CRY_EXOTIC + G.FUNCS.cry_intro_part("mainline") + G.selectedGameset = "mainline" +end +G.FUNCS.cry_madness = function(e) + G.modestBtn.config.colour = G.C.GREEN + G.mainlineBtn.config.colour = G.C.RED + G.madnessBtn.config.colour = G.C.CRY_SELECTED + G.FUNCS.cry_intro_part("madness") + G.selectedGameset = "madness" +end +G.FUNCS.cry_gameset_confirm = function(e) + if G.selectedGameset then + G.PROFILES[G.SETTINGS.profile].cry_intro_complete = true + G.PROFILES[G.SETTINGS.profile].cry_gameset = G.selectedGameset + G.SETTINGS.paused = false + G.gamesetUI:remove() + G.gateway:remove() + G.yawetag:remove() + G.E_MANAGER:clear_queue("tutorial") + G.OVERLAY_TUTORIAL.Jimbo:remove() + if G.OVERLAY_TUTORIAL.content then + G.OVERLAY_TUTORIAL.content:remove() + end + G.OVERLAY_TUTORIAL:remove() + G.OVERLAY_TUTORIAL = nil + if G.selectedGameset == "madness" then + --Unlock All by default in madness + G.PROFILES[G.SETTINGS.profile].all_unlocked = true + for k, v in pairs(G.P_CENTERS) do + if not v.demo and not v.wip then + v.alerted = true + v.discovered = true + v.unlocked = true + end + end + for k, v in pairs(G.P_BLINDS) do + if not v.demo and not v.wip then + v.alerted = true + v.discovered = true + v.unlocked = true + end + end + for k, v in pairs(G.P_TAGS) do + if not v.demo and not v.wip then + v.alerted = true + v.discovered = true + v.unlocked = true + end + end + set_profile_progress() + set_discover_tallies() + G:save_progress() + G.FILE_HANDLER.force = true + end + end +end + +function cry_intro_info(args) + local overlay_colour = { 0.32, 0.36, 0.41, 0 } + ease_value(overlay_colour, 4, 0.6, nil, "REAL", true, 0.4) + G.OVERLAY_TUTORIAL = G.OVERLAY_TUTORIAL + or UIBox({ + definition = { + n = G.UIT.ROOT, + config = { align = "cm", padding = 32.05, r = 0.1, colour = overlay_colour, emboss = 0.05 }, + nodes = {}, + }, + config = { + align = "cm", + offset = { x = 0, y = 3.2 }, + major = G.ROOM_ATTACH, + bond = "Weak", + }, + }) + G.OVERLAY_TUTORIAL.step = G.OVERLAY_TUTORIAL.step or 1 + G.OVERLAY_TUTORIAL.step_complete = false + local row_dollars_chips = G.HUD and G.HUD:get_UIE_by_ID("row_dollars_chips") or G.ROOM_ATTACH + local align = args.align or "tm" + local step = args.step or 1 + local attach = args.attach or { major = row_dollars_chips, type = "tm", offset = { x = 0, y = -0.5 } } + local pos = args.pos or { x = attach.major.T.x + attach.major.T.w / 2, y = attach.major.T.y + attach.major.T.h / 2 } + local button = args.button or { button = localize("b_next"), func = "tut_next" } + args.highlight = args.highlight or {} + G.E_MANAGER:add_event( + Event({ + trigger = "after", + delay = 0.3, + func = function() + if G.OVERLAY_TUTORIAL and G.OVERLAY_TUTORIAL.step == step and not G.OVERLAY_TUTORIAL.step_complete then + if args.on_start then + args.on_start() + end + G.CONTROLLER.interrupt.focus = true + G.OVERLAY_TUTORIAL.Jimbo = G.OVERLAY_TUTORIAL.Jimbo or Card_Character(pos) + if type(args.highlight) == "function" then + args.highlight = args.highlight() + end + args.highlight[#args.highlight + 1] = G.OVERLAY_TUTORIAL.Jimbo + if args.text_key then + G.OVERLAY_TUTORIAL.Jimbo:add_speech_bubble(args.text_key, align, args.loc_vars) + end + G.OVERLAY_TUTORIAL.Jimbo:set_alignment(attach) + if args.hard_set then + G.OVERLAY_TUTORIAL.Jimbo:hard_set_VT() + end + G.OVERLAY_TUTORIAL.button_listen = nil + if G.OVERLAY_TUTORIAL.content then + G.OVERLAY_TUTORIAL.content:remove() + end + if args.content then + G.OVERLAY_TUTORIAL.content = UIBox({ + definition = args.content(), + config = { + align = args.content_config and args.content_config.align or "cm", + offset = args.content_config and args.content_config.offset or { x = 0, y = 0 }, + major = args.content_config and args.content_config.major or G.OVERLAY_TUTORIAL.Jimbo, + bond = "Weak", + }, + }) + args.highlight[#args.highlight + 1] = G.OVERLAY_TUTORIAL.content + end + if args.button_listen then + G.OVERLAY_TUTORIAL.button_listen = args.button_listen + end + if not args.no_button then + G.OVERLAY_TUTORIAL.Jimbo:add_button( + button.button, + button.func, + button.colour, + button.update_func, + true + ) + end + G.OVERLAY_TUTORIAL.Jimbo:say_stuff(2 * #(G.localization.misc.tutorial[args.text_key] or {}) + 1) + if args.snap_to then + G.E_MANAGER:add_event( + Event({ + trigger = "immediate", + blocking = false, + blockable = false, + func = function() + if + G.OVERLAY_TUTORIAL + and G.OVERLAY_TUTORIAL.Jimbo + and not G.OVERLAY_TUTORIAL.Jimbo.talking + then + local _snap_to = args.snap_to() + if _snap_to then + G.CONTROLLER.interrupt.focus = false + G.CONTROLLER:snap_to({ node = args.snap_to() }) + end + return true + end + end, + }), + "tutorial" + ) + end + if args.highlight then + G.OVERLAY_TUTORIAL.highlights = args.highlight + end + G.OVERLAY_TUTORIAL.step_complete = true + end + return not G.OVERLAY_TUTORIAL or G.OVERLAY_TUTORIAL.step > step or G.OVERLAY_TUTORIAL.skip_steps + end, + }), + "tutorial" + ) + return step + 1 +end + +-- Profile stuff: all profiles start with M to separate from vanilla +function G.UIDEF.profile_select() + G.focused_profile = G.focused_profile or G.SETTINGS.profile or (Cryptid.profile_prefix .. "1") + + local t = create_UIBox_generic_options({ + padding = 0, + contents = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0, draw_layer = 1, minw = 4 }, + nodes = { + create_tabs({ + tabs = { + { + label = Cryptid.profile_prefix .. "1", + chosen = G.focused_profile == (Cryptid.profile_prefix .. "1"), + tab_definition_function = G.UIDEF.profile_option, + tab_definition_function_args = Cryptid.profile_prefix .. "1", + }, + { + label = Cryptid.profile_prefix .. "2", + chosen = G.focused_profile == (Cryptid.profile_prefix .. "2"), + tab_definition_function = G.UIDEF.profile_option, + tab_definition_function_args = Cryptid.profile_prefix .. "2", + }, + { + label = Cryptid.profile_prefix .. "3", + chosen = G.focused_profile == (Cryptid.profile_prefix .. "3"), + tab_definition_function = G.UIDEF.profile_option, + tab_definition_function_args = Cryptid.profile_prefix .. "3", + }, + }, + snap_to_nav = true, + }), + }, + }, + }, + }) + return t +end + +------------------------ +---- GAMESET SYSTEM ---- +------------------------ + +-- Gets gameset sprite of current profile +function gameset_sprite(scale, profile, force_gameset) + gameset = force_gameset + or G.PROFILES[profile or G.SETTINGS.profile].cry_gameset_overrides and "modified" + or G.PROFILES[profile or G.SETTINGS.profile].cry_gameset + scale = scale or 1 + local sprite = Sprite( + 0, + 0, + scale, + scale, + G.ASSET_ATLAS["cry_gameset"], + { x = (gameset == "modified" and 3 or gameset == "madness" and 2 or gameset == "modest" and 0 or 1), y = 0 } + ) + sprite:define_draw_steps({ + { shader = "dissolve", shadow_height = 0.09 }, + { shader = "dissolve" }, + }) + sprite.states.collide.can = true + sprite.states.drag.can = true + return sprite +end + +-- designed to work on any object type +function cry_get_gameset(card, center) + if Jen then + return "madness" + end + if not center then + if not card then + return G.PROFILES[G.SETTINGS.profile].cry_gameset or "mainline" + end + center = card.config and card.config.center or card.effect and card.effect.center or card + end + if card.force_gameset then + return card.force_gameset + end + if center.force_gameset then + return center.force_gameset + end + if center.fake_card then + return G.PROFILES[G.SETTINGS.profile].cry_gameset or "mainline" + end + if not center.key then + if center.tag and center.tag.key then --dumb fix for tags + center = center.tag + else + print("Could not find key for center: " .. tprint(center)) + return G.PROFILES[G.SETTINGS.profile].cry_gameset or "mainline" + end + end + local gameset = G.PROFILES[G.SETTINGS.profile].cry_gameset or "mainline" + if Cryptid_config.experimental and center.extra_gamesets then + for i = 1, #center.extra_gamesets do + if center.extra_gamesets[i] == "experimental_" .. gameset then + gameset = "experimental_" .. gameset + break + elseif center.extra_gamesets[i] == "experimental" then + gameset = "experimental" + break + end + end + end + if + G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides + and G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides[center.key] + then + return G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides[center.key] + end + return gameset +end +-- set_ability accounts for gamesets +function Card:get_gameset(center) + return cry_get_gameset(self, center) +end +local csa = Card.set_ability +function Card:set_ability(center, y, z) + if not center.config then + center.config = {} --crashproofing + end + csa(self, center, y, z) + if center.gameset_config and center.gameset_config[self:get_gameset(center)] then + for k, v in pairs(center.gameset_config[self:get_gameset(center)]) do + if k ~= "disabled" and k ~= "center" then + if k == "cost" then + self.base_cost = v + else + self.ability[k] = v + end + end + end + if center.gameset_config[self:get_gameset(center)].disabled then + self.cry_disabled = true + end + if center.gameset_config[self:get_gameset(center)].center and not self.gameset_select then + for k, v in pairs(center.gameset_config[self:get_gameset(center)].center) do + center[k] = v + self[k] = v + if k == "rarity" then + center:set_rarity(v) + else + self.config.center[k] = v + end + end + end + end +end + +--open gameset config UI when clicking on a card in the Cryptid collection +--disable this functionality for Jen's Almanac +if not Jen then + local ccl = Card.click + function Card:click() + ccl(self) + if G.your_collection then + for k, v in pairs(G.your_collection) do + if self.area == v and G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + if not self.config.center or self.config.center and self.config.center.set == "Default" then + --make a fake center + local old_force_gameset = self.config.center and self.config.center.force_gameset + if self.seal then + self.config.center = SMODS.Seal.obj_table[self.seal] + self.config.center.set = "Seal" + end + for k, v in pairs(SMODS.Stickers) do + if self.ability[k] then + self.config.center = SMODS.Sticker.obj_table[k] + self.config.center.set = "Sticker" + end + end + if self.config.center then + self.config.center.force_gameset = old_force_gameset + end + end + if self.gameset_select then + Card.cry_set_gameset(self, self.config.center, self.config.center.force_gameset) + cry_update_obj_registry() + end + cry_gameset_config_UI(self.config.center) + end + end + end + end +end + +-- gameset config UI +function cry_gameset_config_UI(center) + if not center then + center = G.viewedContentSet + end + G.SETTINGS.paused = true + G.your_collection = {} + G.your_collection[1] = CardArea( + G.ROOM.T.x + 0.2 * G.ROOM.T.w / 2, + G.ROOM.T.h, + 5.3 * G.CARD_W, + 1.03 * G.CARD_H, + { card_limit = 5, type = "title", highlight_limit = 0, collection = true } + ) + local deck_tables = { + n = G.UIT.R, + config = { align = "cm", padding = 0, no_fill = true }, + nodes = { + { n = G.UIT.O, config = { object = G.your_collection[1] } }, + }, + } + + local gamesets = { "disabled", "modest", "mainline", "madness" } + if center.extra_gamesets then + for i = 1, #center.extra_gamesets do + gamesets[#gamesets + 1] = center.extra_gamesets[i] + end + end + if center.set == "Content Set" then + gamesets = { "disabled", G.PROFILES[G.SETTINGS.profile].cry_gameset } + end + for i = 1, #gamesets do + if + not ( + center.gameset_config + and center.gameset_config[gamesets[i]] + and center.gameset_config[gamesets[i]].disabled + ) + then + local _center = cry_deep_copy(center) + _center.force_gameset = gamesets[i] + local card = create_generic_card(_center) + card.gameset_select = true + G.your_collection[1]:emplace(card) + --[[if not is_back then + local card = Card( + G.your_collection[1].T.x + G.your_collection[1].T.w / 2, + G.your_collection[1].T.y, + G.CARD_W, + G.CARD_H, + G.P_CARDS.empty, + _center + ) + card:start_materialize() + card.gameset_select = true + G.your_collection[1]:emplace(card) + else + local fake_center = { + set = "Back", + force_gameset = gamesets[i], + pos = center.pos, + atlas = center.atlas, + key = center.key, + config = {} + } + local card = Card(G.ROOM.T.x + 0.2*G.ROOM.T.w/2,G.ROOM.T.h, G.CARD_W, G.CARD_H, G.P_CARDS.empty, fake_center) + card:start_materialize() + card.gameset_select = true + G.your_collection[1]:emplace(card) + end--]] + end + end + + INIT_COLLECTION_CARD_ALERTS() + local args = { + infotip = localize("cry_gameset_explanation"), + back_func = G.cry_prev_collec, + snap_back = true, + contents = { + { + n = G.UIT.R, + config = { align = "cm", minw = 2.5, padding = 0.1, r = 0.1, colour = G.C.BLACK, emboss = 0.05 }, + nodes = { deck_tables }, + }, + }, + } + if center.set == "Content Set" then + G.viewedContentSet = center + args.back2 = true + args.back2_func = "your_collection_current_set" + args.back2_label = localize("cry_view_set_contents") + args.back2_colour = G.C.CRY_SELECTED + end + local t = create_UIBox_generic_options(args) + G.FUNCS.overlay_menu({ + definition = t, + }) +end + +function G.FUNCS.cry_gameset_config_UI() + G.cry_prev_collec = "your_collection_content_sets" + cry_gameset_config_UI() +end + +local collection_shtuff = { + "blinds", + "jokers", + + -- consumables don't work + -- idk what smods is doing with consumable collection stuff, anyone know what the buttons are doing? + "tarots", + "planets", + "spectrals", + "codes", + + "vouchers", + "enhancements", + "decks", + "editions", + "tags", + "seals", + "boosters", + "stickers", + "content_sets", +} + +-- sure this is cool and all but it doesn't keep page yet so it's pretty useless +-- would need to regex patch that + +for i, v in ipairs(collection_shtuff) do + local ref = G.FUNCS["your_collection_" .. v] + G.FUNCS["your_collection_" .. v] = function(e) + G.cry_prev_collec = "your_collection_" .. v + ref(e) + end +end +G.cry_prev_collec = "your_collection_jokers" + +-- change the rarity sticker's color for gameset selection on an item +local gtc = get_type_colour +function get_type_colour(center, card) + local color = gtc(center, card) + if center.set == "Back" or center.set == "Tag" or center.set == "Blind" then + color = G.C.CRY_SELECTED + end + if card.gameset_select then + if center.force_gameset == "modest" then + color = G.C.GREEN + elseif center.force_gameset == "mainline" then + color = G.C.RED + elseif center.force_gameset == "madness" then + color = G.C.CRY_EXOTIC + elseif center.force_gameset ~= "disabled" then + color = G.C.CRY_ASCENDANT + end + end + if + cry_get_gameset(card, center) == "disabled" + or (center.cry_disabled and (not card.gameset_select or center.cry_disabled.type ~= "manual")) + then + color = mix_colours(G.C.RED, G.C.GREY, 0.7) + end + return color +end + +function Card:cry_set_gameset(center, gameset) + if + G.PROFILES[G.SETTINGS.profile].cry_gameset == gameset + and not G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides + then + return + end + if not G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides then + G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides = {} + end + G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides[center.key] = gameset + if G.PROFILES[G.SETTINGS.profile].cry_gameset == gameset then + G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides[center.key] = nil + end + local empty = true + for _, _ in pairs(G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides) do + empty = false + break + end + if empty then + G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides = nil + end + G:save_progress() +end + +function G.FUNCS.reset_gameset_config() + G.PROFILES[G.SETTINGS.profile].cry_gameset_overrides = nil + cry_update_obj_registry() + G:save_progress() +end + +function cry_card_enabled(key, iter) + if not iter then + iter = 0 + end --iter is used to prevent infinite loops from freezing on startup + if iter > 10 then + print("Warning: Circular dependency with " .. key) + return true + end + local card = cry_get_center(key) + if + not card + or cry_get_gameset(card) == "disabled" + or card.gameset_config + and card.gameset_config[cry_get_gameset(card)] + and card.gameset_config[cry_get_gameset(card)].disabled + then + return { type = "manual" } + end + if card.dependencies then + if card.dependencies.items then + for i = 1, #card.dependencies.items do + if cry_card_enabled(card.dependencies.items[i], iter + 1) ~= true then + return { type = "card_dependency", key = card.dependencies.items[i] } + end + end + end + if card.dependencies.mods then + for i = 1, #card.dependencies.mods do + if not (SMODS.Mods[card.dependencies.mods[i]] or {}).can_load then + return { type = "mod_dependency", key = card.dependencies.mods[i] } + end + end + end + end + if card.conflicts then + if card.conflicts.mods then + for i = 1, #card.conflicts.mods do + if (SMODS.Mods[card.conflicts.mods[i]] or {}).can_load then + return { type = "mod_conflict", key = card.conflicts.mods[i] } + end + end + end + end + return true +end + +function cry_get_center(key, m) + if not m then + -- check for non game objects + if SMODS.Seals.obj_table and SMODS.Seals.obj_table[key] then + return SMODS.Seals.obj_table[key] + end + if SMODS.Stickers.obj_table and SMODS.Stickers.obj_table[key] then + return SMODS.Stickers.obj_table[key] + end + m = SMODS.GameObject + if m.subclasses then + for k, v in pairs(m.subclasses) do + local c = cry_get_center(key, v) + if c then + return c + end + end + end + end + return m.obj_table and m.obj_table[key] +end + +------------------------------ +---- CARD ENABLING SYSTEM ---- +------------------------------ + +SMODS.GameObject._disable = function(self, reason) + if not self.cry_disabled then + self.cry_disabled = reason or { type = "manual" } --used to display more information that can be used later + end +end +SMODS.GameObject.enable = function(self) + if self.cry_disabled then + self.cry_disabled = nil + end +end + +-- Note: For custom pools, these only support Center.pools, not ObjectType.cards +-- That could cause issues with mod compat in the future +-- Potential improvement: automatic pool detection from gamesets? +SMODS.Center._disable = function(self, reason) + if not self.cry_disabled then + self.cry_disabled = reason or { type = "manual" } --used to display more information that can be used later + SMODS.remove_pool(G.P_CENTER_POOLS[self.set], self.key) + for k, v in pairs(self.pools or {}) do + SMODS.ObjectTypes[k]:delete_card(self) + end + G.P_CENTERS[self.key] = nil + end +end +SMODS.Center.enable = function(self) + if self.cry_disabled then + self.cry_disabled = nil + SMODS.insert_pool(G.P_CENTER_POOLS[self.set], self) + G.P_CENTERS[self.key] = self + for k, v in pairs(self.pools or {}) do + SMODS.ObjectTypes[k]:inject_card(self) + end + end +end +SMODS.Joker.enable = function(self) + if self.cry_disabled then + SMODS.Center.enable(self) + SMODS.insert_pool(G.P_JOKER_RARITY_POOLS[self.rarity], self) + local vanilla_rarities = { ["Common"] = 1, ["Uncommon"] = 2, ["Rare"] = 3, ["Legendary"] = 4 } + if vanilla_rarities[self.rarity] then + SMODS.insert_pool(G.P_JOKER_RARITY_POOLS[vanilla_rarities[self.rarity]], self) + end + end +end +SMODS.Joker._disable = function(self, reason) + if not self.cry_disabled then + SMODS.Center._disable(self, reason) + SMODS.remove_pool(G.P_JOKER_RARITY_POOLS[self.rarity], self.key) + local vanilla_rarities = { ["Common"] = 1, ["Uncommon"] = 2, ["Rare"] = 3, ["Legendary"] = 4 } + if vanilla_rarities[self.rarity] then + SMODS.remove_pool(G.P_JOKER_RARITY_POOLS[vanilla_rarities[self.rarity]], self.key) + end + end +end +SMODS.Joker.set_rarity = function(self, rarity) + SMODS.remove_pool(G.P_JOKER_RARITY_POOLS[self.rarity], self.key) + self.rarity = rarity + SMODS.insert_pool(G.P_JOKER_RARITY_POOLS[self.rarity], self) + local vanilla_rarities = { ["Common"] = 1, ["Uncommon"] = 2, ["Rare"] = 3, ["Legendary"] = 4 } + if vanilla_rarities[self.rarity] then + SMODS.insert_pool(G.P_JOKER_RARITY_POOLS[vanilla_rarities[self.rarity]], self) + end +end + +SMODS.Consumable.enable = function(self) + if self.cry_disabled then + SMODS.Center.enable(self) + SMODS.insert_pool(G.P_CENTER_POOLS["Consumeables"], self) + end +end +SMODS.Consumable._disable = function(self, reason) + if not self.cry_disabled then + SMODS.Center._disable(self, reason) + SMODS.remove_pool(G.P_CENTER_POOLS["Consumeables"], self.key) + end +end + +SMODS.Tag._disable = function(self, reason) + if not self.cry_disabled then + self.cry_disabled = reason or { type = "manual" } --used to display more information that can be used later + SMODS.remove_pool(G.P_CENTER_POOLS[self.set], self.key) + G.P_TAGS[self.key] = nil + end +end +SMODS.Tag.enable = function(self) + if self.cry_disabled then + self.cry_disabled = nil + SMODS.insert_pool(G.P_CENTER_POOLS[self.set], self) + G.P_TAGS[self.key] = self + end +end + +SMODS.Blind._disable = function(self, reason) + if not self.cry_disabled then + self.cry_disabled = reason or { type = "manual" } --used to display more information that can be used later + G.P_BLINDS[self.key] = nil + end +end +SMODS.Blind.enable = function(self) + if self.cry_disabled then + self.cry_disabled = nil + G.P_BLINDS[self.key] = self + end +end + +--Removing seals from the center table causes issues +SMODS.Seal._disable = function(self, reason) + if not self.cry_disabled then + self.cry_disabled = reason or { type = "manual" } --used to display more information that can be used later + SMODS.remove_pool(G.P_CENTER_POOLS[self.set], self.key) + end +end +SMODS.Seal.enable = function(self) + if self.cry_disabled then + self.cry_disabled = nil + SMODS.insert_pool(G.P_CENTER_POOLS[self.set], self) + end +end + +--Removing editions from the center table causes issues, so instead we make them unable to spawn naturally +SMODS.Edition._disable = function(self, reason) + if not self.cry_disabled then + self.cry_disabled = reason or { type = "manual" } --used to display more information that can be used later + SMODS.remove_pool(G.P_CENTER_POOLS[self.set], self.key) + self.cry_get_weight = self.get_weight + self.get_weight = function() + return 0 + end + end +end +SMODS.Edition.enable = function(self) + if self.cry_disabled then + self.cry_disabled = nil + SMODS.insert_pool(G.P_CENTER_POOLS[self.set], self) + self.get_weight = self.cry_get_weight + self.cry_get_weight = nil + end +end + +function cry_update_obj_registry(m, force_enable) + if not m then + m = SMODS.GameObject + if m.subclasses then + for k, v in pairs(m.subclasses) do + cry_update_obj_registry(v, force_enable) + end + end + end + if m.obj_table then + for k, v in pairs(m.obj_table) do + if v.mod and v.mod.id == "Cryptid" then + local en = force_enable or cry_card_enabled(k) + if en == true then + if v.cry_disabled then + v:enable() + end + else + if not v.cry_disabled then + v:_disable(en) + end + end + end + end + end +end +function cry_index_items(func, m) + if not m then + m = SMODS.GameObject + if m.subclasses then + for k, v in pairs(m.subclasses) do + cry_index_items(func, v) + end + end + end + if m.obj_table then + for k, v in pairs(m.obj_table) do + if v.mod and v.mod.id == "Cryptid" then + func(v) + end + end + end +end +local init_item_prototypes_ref = Game.init_item_prototypes +function Game:init_item_prototypes() + cry_update_obj_registry(nil, true) --force enable, to prevent issues with profile reloading + init_item_prototypes_ref(self) + cry_update_obj_registry() +end + +------------------------ +----- CONTENT SETS ----- +------------------------ + +-- Content sets are used to group cards together in the settings menu, to bulk enable/disable things +-- These include CSL content sets, as well as others which are categorical (nostalgic items, epic jokers, etc.) +-- Because of this, they are referred to as Thematic Sets in-game + +SMODS.ContentSet = SMODS.Center:extend({ + set = "Content Set", + pos = { x = 0, y = 0 }, + config = {}, + class_prefix = "set", + required_params = { + "key", + }, + inject = function(self) + if not G.P_CENTER_POOLS[self.set] then + G.P_CENTER_POOLS[self.set] = {} + end + SMODS.Center.inject(self) + if not self.cry_order then + self.cry_order = 0 + end + end, +}) +G.P_CENTER_POOLS["Content Set"] = {} +-- For now, I made larger sets appear earlier. This can be tweaked later... +SMODS.ContentSet({ + key = "m", + atlas = "atlasepic", + pos = { x = 3, y = 1 }, --m + cry_order = -22, +}) +SMODS.ContentSet({ + key = "epic", + atlas = "atlasepic", + pos = { x = 2, y = 1 }, --Canvas + cry_order = -32, +}) +SMODS.ContentSet({ + key = "code", + atlas = "code", + pos = { x = 0, y = 0 }, --://CRASH + cry_order = -39, +}) +SMODS.ContentSet({ + key = "exotic", + atlas = "atlasexotic", + pos = { x = 0, y = 1 }, --Iterum + soul_pos = { x = 1, y = 1, extra = { x = 2, y = 1 } }, + cry_order = -20, +}) +SMODS.ContentSet({ + key = "blind", + atlas = "blinds", + pos = { x = 0, y = 4 }, --The Joke + cry_blind = true, + cry_order = -26, +}) +SMODS.ContentSet({ + key = "deck", + atlas = "atlasdeck", + pos = { x = 4, y = 5 }, --Critical Deck + cry_order = -23, +}) +SMODS.ContentSet({ + key = "spooky", + atlas = "atlasspooky", + pos = { x = 1, y = 0 }, --Chocolate Dice + cry_order = -14, +}) +SMODS.ContentSet({ + key = "cursed", + atlas = "atlasspooky", + pos = { x = 3, y = 0 }, --Ghost + cry_order = -6, +}) +SMODS.ContentSet({ + key = "timer", + atlas = "blinds", + pos = { x = 0, y = 1 }, --The Clock + cry_blind = true, + cry_order = -2, +}) +SMODS.ContentSet({ + key = "misc", + atlas = "cry_misc", + pos = { x = 2, y = 0 }, --Echo Card + cry_order = -22, +}) +SMODS.ContentSet({ + key = "misc_joker", + atlas = "atlasone", + pos = { x = 2, y = 3 }, --Nice + cry_order = -111, +}) +SMODS.ContentSet({ + key = "planet", + atlas = "atlasnotjokers", + pos = { x = 4, y = 2 }, --Planet.lua + cry_order = -8, +}) +SMODS.ContentSet({ + key = "spectral", + atlas = "atlasnotjokers", + pos = { x = 1, y = 1 }, --Replica + cry_order = -12, +}) +SMODS.ContentSet({ + key = "tag", + atlas = "tag_cry", + pos = { x = 0, y = 2 }, --Cat Tag + cry_tag = true, + cry_order = -30, +}) +SMODS.ContentSet({ + key = "tier3", + atlas = "atlasvoucher", + pos = { x = 5, y = 2 }, --Asteroglyph + cry_order = -18, +}) +SMODS.ContentSet({ + key = "voucher", + atlas = "atlasvoucher", + pos = { x = 1, y = 2 }, --Tag Printer + cry_order = -15, +}) +SMODS.ContentSet({ + key = "poker_hand_stuff", + atlas = "atlasthree", + pos = { x = 7, y = 1 }, --The Fuck!? (Clusterfuck's XMult Joker) + cry_order = -16, +}) + +-- these are mostly copy/paste from vanilla code +G.FUNCS.your_collection_content_sets = function(e) + G.cry_prev_collec = "your_collection_content_sets" + G.SETTINGS.paused = true + G.FUNCS.overlay_menu({ + definition = create_UIBox_your_collection_content_sets(), + }) +end + +G.FUNCS.your_collection_current_set = function(e) + G.cry_prev_collec = "your_collection_current_set" + G.SETTINGS.paused = true + G.FUNCS.overlay_menu({ + definition = create_UIBox_your_collection_current_set(), + }) +end + +function create_UIBox_your_collection_content_sets() + local deck_tables = {} + + G.your_collection = {} + for j = 1, 3 do + G.your_collection[j] = CardArea( + G.ROOM.T.x + 0.2 * G.ROOM.T.w / 2, + G.ROOM.T.h, + 5 * G.CARD_W, + 0.95 * G.CARD_H, + { card_limit = 5, type = "title", highlight_limit = 0, collection = true } + ) + table.insert(deck_tables, { + n = G.UIT.R, + config = { align = "cm", padding = 0.07, no_fill = true }, + nodes = { + { n = G.UIT.O, config = { object = G.your_collection[j] } }, + }, + }) + end + + local joker_pool = {} + for k, v in pairs(SMODS.ContentSet.obj_table) do + if v.set == "Content Set" then + table.insert(joker_pool, v) + end + end + table.sort(joker_pool, function(a, b) + return a.cry_order < b.cry_order + end) + local joker_options = {} + for i = 1, math.ceil(#joker_pool / (5 * #G.your_collection)) do + table.insert( + joker_options, + localize("k_page") + .. " " + .. tostring(i) + .. "/" + .. tostring(math.ceil(#joker_pool / (5 * #G.your_collection))) + ) + end + + for i = 1, 5 do + for j = 1, #G.your_collection do + local center = joker_pool[i + (j - 1) * 5] + if not center then + break + end + local card = create_generic_card( + center, + G.your_collection[j].T.x + G.your_collection[j].T.w / 2, + G.your_collection[j].T.y + ) + G.your_collection[j]:emplace(card) + end + end + + INIT_COLLECTION_CARD_ALERTS() + + local t = create_UIBox_generic_options({ + back_func = G.ACTIVE_MOD_UI and "openModUI_" .. G.ACTIVE_MOD_UI.id or "your_collection", + contents = { + { n = G.UIT.R, config = { align = "cm", r = 0.1, colour = G.C.BLACK, emboss = 0.05 }, nodes = deck_tables }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + create_option_cycle({ + options = joker_options, + w = 4.5, + cycle_shoulders = true, + opt_callback = "your_collection_content_set_page", + current_option = 1, + colour = G.C.RED, + no_pips = true, + focus_args = { snap_to = true, nav = "wide" }, + }), + }, + }, + }, + }) + return t +end + +function create_UIBox_your_collection_current_set() + local deck_tables = {} + + G.your_collection = {} + for j = 1, 3 do + G.your_collection[j] = CardArea( + G.ROOM.T.x + 0.2 * G.ROOM.T.w / 2, + G.ROOM.T.h, + 5 * G.CARD_W, + 0.95 * G.CARD_H, + { card_limit = 5, type = "title", highlight_limit = 0, collection = true } + ) + table.insert(deck_tables, { + n = G.UIT.R, + config = { align = "cm", padding = 0.07, no_fill = true }, + nodes = { + { n = G.UIT.O, config = { object = G.your_collection[j] } }, + }, + }) + end + + joker_pool = {} + local function is_in_set(card) + if card.dependencies and card.dependencies.items then + for i = 1, #card.dependencies.items do + if card.dependencies.items[i] == G.viewedContentSet.key then + joker_pool[#joker_pool + 1] = card + return true + end + end + end + end + cry_index_items(is_in_set) + table.sort(joker_pool, function(a, b) + return a.cry_order < b.cry_order + end) + local joker_options = {} + for i = 1, math.ceil(#joker_pool / (5 * #G.your_collection)) do + table.insert( + joker_options, + localize("k_page") + .. " " + .. tostring(i) + .. "/" + .. tostring(math.ceil(#joker_pool / (5 * #G.your_collection))) + ) + end + + for i = 1, 5 do + for j = 1, #G.your_collection do + local center = joker_pool[i + (j - 1) * 5] + if not center then + break + end + local card = create_generic_card( + center, + G.your_collection[j].T.x + G.your_collection[j].T.w / 2, + G.your_collection[j].T.y + ) + G.your_collection[j]:emplace(card) + end + end + + INIT_COLLECTION_CARD_ALERTS() + + local t = create_UIBox_generic_options({ + back_func = "cry_gameset_config_UI", + contents = { + { n = G.UIT.R, config = { align = "cm", r = 0.1, colour = G.C.BLACK, emboss = 0.05 }, nodes = deck_tables }, + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + create_option_cycle({ + options = joker_options, + w = 4.5, + cycle_shoulders = true, + opt_callback = "your_collection_current_set_page", + current_option = 1, + colour = G.C.RED, + no_pips = true, + focus_args = { snap_to = true, nav = "wide" }, + }), + }, + }, + }, + }) + return t +end + +G.FUNCS.your_collection_content_set_page = function(args) + if not args or not args.cycle_config then + return + end + for j = 1, #G.your_collection do + for i = #G.your_collection[j].cards, 1, -1 do + local c = G.your_collection[j]:remove_card(G.your_collection[j].cards[i]) + c:remove() + c = nil + end + end + local joker_pool = {} + for k, v in pairs(SMODS.ContentSet.obj_table) do + if v.set == "Content Set" then + table.insert(joker_pool, v) + end + end + table.sort(joker_pool, function(a, b) + return a.cry_order < b.cry_order + end) + for i = 1, 5 do + for j = 1, #G.your_collection do + local center = + joker_pool[i + (j - 1) * 5 + (5 * #G.your_collection * (args.cycle_config.current_option - 1))] + if not center then + break + end + local card = create_generic_card( + center, + G.your_collection[j].T.x + G.your_collection[j].T.w / 2, + G.your_collection[j].T.y + ) + G.your_collection[j]:emplace(card) + end + end + INIT_COLLECTION_CARD_ALERTS() +end +G.FUNCS.your_collection_current_set_page = function(args) + if not args or not args.cycle_config then + return + end + for j = 1, #G.your_collection do + for i = #G.your_collection[j].cards, 1, -1 do + local c = G.your_collection[j]:remove_card(G.your_collection[j].cards[i]) + c:remove() + c = nil + end + end + joker_pool = {} + local function is_in_set(card) + if card.dependencies and card.dependencies.items then + for i = 1, #card.dependencies.items do + if card.dependencies.items[i] == G.viewedContentSet.key then + joker_pool[#joker_pool + 1] = card + return true + end + end + end + end + cry_index_items(is_in_set) + table.sort(joker_pool, function(a, b) + return a.cry_order < b.cry_order + end) + for i = 1, 5 do + for j = 1, #G.your_collection do + local center = + joker_pool[i + (j - 1) * 5 + (5 * #G.your_collection * (args.cycle_config.current_option - 1))] + if not center then + break + end + local card = create_generic_card( + center, + G.your_collection[j].T.x + G.your_collection[j].T.w / 2, + G.your_collection[j].T.y + ) + G.your_collection[j]:emplace(card) + end + end + INIT_COLLECTION_CARD_ALERTS() +end + +------------------------------ +---- GENERIC COLLECTIONS ----- +------------------------------ + +function create_generic_card(center, x, y) + --todo: make gameset stickers play nicely with resized sprites + local is_blind = center.set == "Blind" or center.cry_blind + local is_tag = center.set == "Tag" or center.cry_tag + local card = Card( + x or G.ROOM.T.x + 0.2 * G.ROOM.T.w / 2, + y or G.ROOM.T.h, + is_blind and 0.7 * G.CARD_W or is_tag and 0.42 * G.CARD_W or G.CARD_W, + is_blind and 0.7 * G.CARD_W or is_tag and 0.42 * G.CARD_W or G.CARD_H, + nil, + center.set ~= "Seal" and center.set ~= "Sticker" and center or G.P_CENTERS.c_base + ) + --todo: make this work when the edition is disabled (although it's a good failsafe that it doesn't?) + if center.set == "Edition" then + card:set_edition(center.key, true, true) + end + if safe_get(center, "config", "cry_antimatter") then + card:set_edition("e_negative", true, true) + return card + end + if safe_get(center, "config", "cry_force_edition") then + card:set_edition({ [center.config.cry_force_edition] = true }, true, true) + end + if center.set == "Seal" then + card:set_seal(center.key, true, true) + card.config.center = cry_deep_copy(card.config.center) + card.config.center.force_gameset = center.force_gameset + card.config.center.key = center.key + end + if safe_get(center, "config", "cry_force_seal") then + card:set_seal(center.config.cry_force_seal, true, true) + end + if center.set == "Sticker" then + center:apply(card, true) + card.config.center = cry_deep_copy(card.config.center) + card.config.center.force_gameset = center.force_gameset + card.config.center.key = center.key + end + if safe_get(center, "config", "cry_force_sticker") then + SMODS.Stickers[center.config.cry_force_sticker]:apply(card, true) + end + return card +end + +-- Hooks for all collection types +local smcp = SMODS.collection_pool +SMODS.collection_pool = function(m) + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + -- use SMODS pools instead of vanilla pools, so disabled cards appear + if m[1] and m[1].set and m[1].set == "Seal" then + m = {} + for k, v in pairs(SMODS.Seal.obj_table) do + if v.mod and v.mod.id == "Cryptid" then + table.insert(m, v) + end + end + elseif m[1] and m[1].set and m[1].set == "Sticker" then + m = {} + for k, v in pairs(SMODS.Sticker.obj_table) do + if v.mod and v.mod.id == "Cryptid" then + table.insert(m, v) + end + end + elseif m[1] and m[1].set and G.P_CENTER_POOLS[m[1].set] == m then + local set = m[1].set + m = {} + for k, v in pairs(SMODS.Center.obj_table) do + if v.set == set and v.mod and v.mod.id == "Cryptid" then + table.insert(m, v) + end + end + end + -- Fix blind issues + for k, v in pairs(m) do + if v.set == "Blind" and v.mod and v.mod.id == "Cryptid" then + v.config = {} + end + end + table.sort(m, function(a, b) + return a.cry_order < b.cry_order + end) + end + return smcp(m) +end + +-- Make Cryptid show all collection boxes (kinda silly) +local mct = modsCollectionTally +function modsCollectionTally(pool, set) + local t = mct(pool, set) + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + local obj_tally = { tally = 0, of = 0 } + --infer pool + local _set = set or safe_get(pool, 1, "set") + --check for general consumables + local consumable = false + if _set and safe_get(pool, 1, "consumeable") then + for i = 1, #pool do + if safe_get(pool, i, "set") ~= _set then + consumable = true + break + end + end + end + if _set then + if _set == "Seal" then + pool = SMODS.Seal.obj_table + set = _set + elseif G.P_CENTER_POOLS[_set] then + pool = SMODS.Center.obj_table + set = _set + end + end + for _, v in pairs(pool) do + if v.mod and G.ACTIVE_MOD_UI.id == v.mod.id and not v.no_collection then + if consumable then + if safe_get(v, "consumeable") then + obj_tally.of = obj_tally.of + 1 + if cry_card_enabled(v.key) == true then + obj_tally.tally = obj_tally.tally + 1 + end + end + elseif set then + if v.set and v.set == set then + obj_tally.of = obj_tally.of + 1 + if cry_card_enabled(v.key) == true then + obj_tally.tally = obj_tally.tally + 1 + end + end + else + obj_tally.of = obj_tally.of + 1 + if cry_card_enabled(v.key) == true then + obj_tally.tally = obj_tally.tally + 1 + end + end + end + end + return obj_tally + end + return t +end + +-- Make non-center collections show all cards as centers +local uibk = create_UIBox_your_collection_decks +function create_UIBox_your_collection_decks() + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + local generic_collection_pool = {} + for k, v in pairs(SMODS.Center.obj_table) do + if v.set == "Back" and v.mod and v.mod.id == "Cryptid" then + table.insert(generic_collection_pool, v) + end + end + return SMODS.card_collection_UIBox(generic_collection_pool, { 5, 5, 5 }, { + modify_card = function(card, center, i, j) + if center.config.cry_antimatter then + card:set_edition("e_negative", true, true) + return card + end + if center.config.cry_force_edition then + card:set_edition({ [center.config.cry_force_edition] = true }, true, true) + end + if center.config.cry_force_seal then + card:set_seal(center.config.cry_force_seal, true, true) + end + if center.config.cry_force_sticker then + SMODS.Stickers[center.config.cry_force_sticker]:apply(card, true) + end + end, + }) + else + return uibk() + end +end + +local uitag = create_UIBox_your_collection_tags +function create_UIBox_your_collection_tags() + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + local generic_collection_pool = {} + for k, v in pairs(SMODS.Tag.obj_table) do + if v.set == "Tag" and v.mod and v.mod.id == "Cryptid" then + table.insert(generic_collection_pool, v) + end + end + return SMODS.card_collection_UIBox(generic_collection_pool, { 6, 6, 6, 6 }, { + card_scale = 0.42, + h_mod = 0.3, + w_mod = 0.55, + area_type = "title_2", + modify_card = function(card, center, i, j) + card.T.h = card.T.w + end, + }) + else + return uitag() + end +end + +local uibl = create_UIBox_your_collection_blinds +function create_UIBox_your_collection_blinds() + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + local generic_collection_pool = {} + for k, v in pairs(SMODS.Blind.obj_table) do + if v.set == "Blind" and v.mod and v.mod.id == "Cryptid" then + table.insert(generic_collection_pool, v) + end + end + return SMODS.card_collection_UIBox(generic_collection_pool, { 5, 5, 5, 5, 5 }, { + card_scale = 0.70, + h_mod = 0.45, + w_mod = 0.70, + area_type = "title_2", + modify_card = function(card, center, i, j) + card.T.h = card.T.w + end, + }) + else + return uibl() + end +end + +local uisl = create_UIBox_your_collection_seals +function create_UIBox_your_collection_seals() + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + return SMODS.card_collection_UIBox(G.P_CENTER_POOLS.Seal, { 5, 5 }, { + snap_back = true, + infotip = localize("ml_edition_seal_enhancement_explanation"), + hide_single_page = true, + collapse_single_page = true, + center = "c_base", + h_mod = 1.03, + modify_card = function(card, center) + card:set_seal(center.key, true) + -- Make disabled UI appear + card.config.center = cry_deep_copy(card.config.center) + card.config.center.key = center.key + end, + }) + else + return uisl() + end +end + +local uist = create_UIBox_your_collection_stickers +function create_UIBox_your_collection_stickers() + if G.ACTIVE_MOD_UI and G.ACTIVE_MOD_UI.id == "Cryptid" then + return SMODS.card_collection_UIBox(SMODS.Stickers, { 5, 5 }, { + snap_back = true, + hide_single_page = true, + collapse_single_page = true, + center = "c_base", + h_mod = 1.03, + back_func = "your_collection_other_gameobjects", + modify_card = function(card, center) + card.ignore_pinned = true + center:apply(card, true) + -- Make disabled UI appear + card.config.center = cry_deep_copy(card.config.center) + card.config.center.key = center.key + end, + }) + else + return uist() + end +end + +--hacky fix to get animated atlases visible for centers +local smai = SMODS.Atlas.inject +SMODS.Atlas.inject = function(self) + smai(self) + if self.atlas_table ~= "ASSET_ATLAS" then + G.ASSET_ATLAS[self.key_noloc or self.key] = G[self.atlas_table][self.key_noloc or self.key] + end +end diff --git a/Cryptid/lib/https.lua b/Cryptid/lib/https.lua new file mode 100644 index 0000000..8af3676 --- /dev/null +++ b/Cryptid/lib/https.lua @@ -0,0 +1,28 @@ +-- Update the Cryptid member count using HTTPS +function update_cry_member_count() + if Cryptid.enabled["HTTPS Module"] == true and Cryptid.mod_path then + if not GLOBAL_cry_member_update_thread then + -- start up the HTTPS thread if needed + local file_data = assert(NFS.newFileData(Cryptid.mod_path .. "https/thread.lua")) + GLOBAL_cry_member_update_thread = love.thread.newThread(file_data) + GLOBAL_cry_member_update_thread:start() + end + local old = GLOBAL_cry_member_count or 5624 + -- get the HTTPS thread's value for Cryptid members + local ret = love.thread.getChannel("member_count"):pop() + if ret then + GLOBAL_cry_member_count = string.match(ret, '"approximate_member_count"%s*:%s*(%d+)') -- string matching a json is odd but should be fine? + end + if not GLOBAL_cry_member_count then + GLOBAL_cry_member_count = old + -- Something failed, print the error + local error = love.thread.getChannel("member_error"):pop() + if error then + sendDebugMessage(error) + end + end + else + -- Use a fallback value if HTTPS is disabled (you all are awesome) + GLOBAL_cry_member_count = 20000 + end +end diff --git a/Cryptid/lib/misc.lua b/Cryptid/lib/misc.lua new file mode 100644 index 0000000..95a7d68 --- /dev/null +++ b/Cryptid/lib/misc.lua @@ -0,0 +1,647 @@ +--Localization colors +local lc = loc_colour +function loc_colour(_c, _default) + if not G.ARGS.LOC_COLOURS then + lc() + end + G.ARGS.LOC_COLOURS.cry_code = G.C.SET.Code + G.ARGS.LOC_COLOURS.heart = G.C.SUITS.Hearts + G.ARGS.LOC_COLOURS.diamond = G.C.SUITS.Diamonds + G.ARGS.LOC_COLOURS.spade = G.C.SUITS.Spades + G.ARGS.LOC_COLOURS.club = G.C.SUITS.Clubs + for k, v in pairs(G.C) do + if string.len(k) > 4 and string.sub(k, 1, 4) == "CRY_" then + G.ARGS.LOC_COLOURS[string.lower(k)] = v + end + end + return lc(_c, _default) +end + +-- More advanced version of find joker for things that need to find very specific things +function advanced_find_joker(name, rarity, edition, ability, non_debuff, area) + local jokers = {} + if not G.jokers or not G.jokers.cards then + return {} + end + local filter = 0 + if name then + filter = filter + 1 + end + if edition then + filter = filter + 1 + end + if type(rarity) ~= "table" then + if type(rarity) == "string" then + rarity = { rarity } + else + rarity = nil + end + end + if rarity then + filter = filter + 1 + end + if type(ability) ~= "table" then + if type(ability) == "string" then + ability = { ability } + else + ability = nil + end + end + if ability then + filter = filter + 1 + end + -- return nothing if function is called with no useful arguments + if filter == 0 then + return {} + end + if not area or area == "j" then + for k, v in pairs(G.jokers.cards) do + if v and type(v) == "table" and (non_debuff or not v.debuff) then + local check = 0 + if name and v.ability.name == name then + check = check + 1 + end + if + edition + and (v.edition and v.edition.key == edition) --[[ make this use safe_get later? if it's possible anyways]] + then + check = check + 1 + end + if rarity then + --Passes as valid if rarity matches ANY of the values in the rarity table + for _, a in ipairs(rarity) do + if v.config.center.rarity == a then + check = check + 1 + break + end + end + end + if ability then + --Only passes if the joker has everything in the ability table + local abilitycheck = true + for _, b in ipairs(ability) do + if not v.ability[b] then + abilitycheck = false + break + end + end + if abilitycheck then + check = check + 1 + end + end + if check == filter then + table.insert(jokers, v) + end + end + end + end + if not area or area == "c" then + for k, v in pairs(G.consumeables.cards) do + if v and type(v) == "table" and (non_debuff or not v.debuff) then + local check = 0 + if name and v.ability.name == name then + check = check + 1 + end + if + edition + and (v.edition and v.edition.key == edition) --[[ make this use safe_get later? if it's possible anyways]] + then + check = check + 1 + end + if ability then + --Only passes if the joker has everything in the ability table + local abilitycheck = true + for _, b in ipairs(ability) do + if not v.ability[b] then + abilitycheck = false + break + end + end + if abilitycheck then + check = check + 1 + end + end + --Consumables don't have a rarity, so this should ignore it in that case (untested lmfao) + if check == filter then + table.insert(jokers, v) + end + end + end + end + return jokers +end + +-- Midground sprites - used for Exotic Jokers and Gateway +-- don't really feel like explaining this deeply, it's based on code for The Soul and Legendary Jokers +local set_spritesref = Card.set_sprites +function Card:set_sprites(_center, _front) + set_spritesref(self, _center, _front) + if _center and _center.name == "cry-Gateway" then + self.children.floating_sprite = Sprite( + self.T.x, + self.T.y, + self.T.w, + self.T.h, + G.ASSET_ATLAS[_center.atlas or _center.set], + { x = 2, y = 0 } + ) + self.children.floating_sprite.role.draw_major = self + self.children.floating_sprite.states.hover.can = false + self.children.floating_sprite.states.click.can = false + self.children.floating_sprite2 = Sprite( + self.T.x, + self.T.y, + self.T.w, + self.T.h, + G.ASSET_ATLAS[_center.atlas or _center.set], + { x = 1, y = 0 } + ) + self.children.floating_sprite2.role.draw_major = self + self.children.floating_sprite2.states.hover.can = false + self.children.floating_sprite2.states.click.can = false + end + if _center and _center.soul_pos and _center.soul_pos.extra then + self.children.floating_sprite2 = Sprite( + self.T.x, + self.T.y, + self.T.w, + self.T.h, + G.ASSET_ATLAS[_center.atlas or _center.set], + _center.soul_pos.extra + ) + self.children.floating_sprite2.role.draw_major = self + self.children.floating_sprite2.states.hover.can = false + self.children.floating_sprite2.states.click.can = false + end +end + +function cry_edition_to_table(edition) -- look mom i figured it out (this does NOT need to be a function) + if edition then + return { [edition] = true } + end +end + +-- simple plural s function for localisation +function cry_pls(str, vars) + if string.sub(str, 1, 1) == "p" or string.sub(str, 1, 1) == "s" or string.sub(str, 1, 1) == "y" then + num = vars[tonumber(string.sub(str, 2, -1))] + if num then + if math.abs(to_big(num) - 1) > to_big(0.001) then + return string.sub(str, 1, 1) == "y" and "ies" or "s" + else + return string.sub(str, 1, 1) == "y" and "y" or "" + end + end + end + return false -- idk it doesn't really matter +end + +-- generate a random edition (e.g. Antimatter Deck) +function cry_poll_random_edition() + local random_edition = pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_ant_edition")) + while random_edition.key == "e_base" do + random_edition = pseudorandom_element(G.P_CENTER_POOLS.Edition, pseudoseed("cry_ant_edition")) + end + ed_table = { [random_edition.key:sub(3)] = true } + return ed_table +end + +-- gets a random, valid consumeable (used for Hammerspace, CCD Deck, Blessing, etc.) +function get_random_consumable(seed, excluded_flags, banned_card, pool, no_undiscovered) + -- set up excluded flags - these are the kinds of consumables we DON'T want to have generating + excluded_flags = excluded_flags or { "hidden", "no_doe", "no_grc" } + local selection = "n/a" + local passes = 0 + local tries = 500 + while true do + tries = tries - 1 + passes = 0 + -- create a random consumable naively + local key = pseudorandom_element(pool or G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key + selection = G.P_CENTERS[key] + -- check if it is valid + if selection.discovered or not no_undiscovered then + for k, v in pairs(excluded_flags) do + if not center_no(selection, v, key, true) then + --Makes the consumable invalid if it's a specific card unless it's set to + --I use this so cards don't create copies of themselves (eg potential inf Blessing chain, Hammerspace from Hammerspace...) + if not banned_card or (banned_card and banned_card ~= key) then + passes = passes + 1 + end + end + end + end + -- use it if it's valid or we've run out of attempts + if passes >= #excluded_flags or tries <= 0 then + if tries <= 0 and no_undiscovered then + return G.P_CENTERS["c_strength"] + else + return selection + end + end + end +end + +-- checks for Jolly Jokers or cards that are supposed to be treated as jolly jokers +function Card:is_jolly() + if self.ability.name == "Jolly Joker" then + return true + end + if self.edition and self.edition.key == "e_cry_m" then + return true + end + return false +end + +function cry_with_deck_effects(card, func) + if not card.added_to_deck then + return func(card) + else + card:remove_from_deck(true) + local ret = func(card) + card:add_to_deck(true) + return ret + end +end + +function cry_deep_copy(obj, seen) + if type(obj) ~= "table" then + return obj + end + if seen and seen[obj] then + return seen[obj] + end + local s = seen or {} + local res = setmetatable({}, getmetatable(obj)) + s[obj] = res + for k, v in pairs(obj) do + res[cry_deep_copy(k, s)] = cry_deep_copy(v, s) + end + return res +end + +function SMODS.current_mod.reset_game_globals(run_start) + G.GAME.cry_ach_conditions = G.GAME.cry_ach_conditions or {} +end + +--Used for m vouchers, perhaps this can have more applications in the future +function get_m_jokers() + local mcount = 0 + if G.jokers then + for i = 1, #G.jokers.cards do + if safe_get(G.jokers.cards[i], "pools", "M") then + mcount = mcount + 1 + end + if G.jokers.cards[i].ability.name == "cry-mprime" then + mcount = mcount + 1 + end + end + end + return mcount +end + +-- Check G.GAME as well as joker info for banned keys +function Card:no(m, no_no) + if no_no then + -- Infinifusion Compat + if self.infinifusion then + for i = 1, #self.infinifusion do + if + G.P_CENTERS[self.infinifusion[i].key][m] + or (G.GAME and G.GAME[m] and G.GAME[m][self.infinifusion[i].key]) + then + return true + end + end + return false + end + if not self.config then + --assume this is from one component of infinifusion + return G.P_CENTERS[self.key][m] or (G.GAME and G.GAME[m] and G.GAME[m][self.key]) + end + + return self.config.center[m] or (G.GAME and G.GAME[m] and G.GAME[m][self.config.center_key]) or false + end + return Card.no(self, "no_" .. m, true) +end + +function center_no(center, m, key, no_no) + if no_no then + return center[m] or (G.GAME and G.GAME[m] and G.GAME[m][key]) or false + end + return center_no(center, "no_" .. m, key, true) +end + +--todo: move to respective stake file +--[from pre-refactor] make this always active to prevent crashes +function cry_apply_ante_tax() + if G.GAME.modifiers.cry_ante_tax then + local tax = math.max( + 0, + math.min(G.GAME.modifiers.cry_ante_tax_max, math.floor(G.GAME.modifiers.cry_ante_tax * G.GAME.dollars)) + ) + ease_dollars(-1 * tax) + return true + end + return false +end + +--Changes main menu colors and stuff +--has to be modified with new enabling system +if true then --Cryptid.enabled["Menu"] then + local oldfunc = Game.main_menu + Game.main_menu = function(change_context) + local ret = oldfunc(change_context) + -- adds a Cryptid spectral to the main menu + local newcard = Card( + G.title_top.T.x, + G.title_top.T.y, + G.CARD_W, + G.CARD_H, + G.P_CARDS.empty, + G.P_CENTERS.c_cryptid, + { bypass_discovery_center = true } + ) + -- recenter the title + G.title_top.T.w = G.title_top.T.w * 1.7675 + G.title_top.T.x = G.title_top.T.x - 0.8 + G.title_top:emplace(newcard) + -- make the card look the same way as the title screen Ace of Spades + newcard.T.w = newcard.T.w * 1.1 * 1.2 + newcard.T.h = newcard.T.h * 1.1 * 1.2 + newcard.no_ui = true + newcard.states.visible = false + + -- make the title screen use different background colors + G.SPLASH_BACK:define_draw_steps({ + { + shader = "splash", + send = { + { name = "time", ref_table = G.TIMERS, ref_value = "REAL_SHADER" }, + { name = "vort_speed", val = 0.4 }, + { name = "colour_1", ref_table = G.C, ref_value = "CRY_EXOTIC" }, + { name = "colour_2", ref_table = G.C, ref_value = "DARK_EDITION" }, + }, + }, + }) + + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + blockable = false, + blocking = false, + func = function() + if change_context == "splash" then + newcard.states.visible = true + newcard:start_materialize({ G.C.WHITE, G.C.WHITE }, true, 2.5) + else + newcard.states.visible = true + newcard:start_materialize({ G.C.WHITE, G.C.WHITE }, nil, 1.2) + end + return true + end, + })) + + return ret + end +end + +-- just dumping this garbage here +-- this just ensures that extra voucher slots work as expected +function cry_bonusvouchermod(mod) + if not G.GAME.shop then + return + end + G.GAME.cry_bonusvouchercount = G.GAME.cry_bonusvouchercount + mod + if G.shop_jokers and G.shop_jokers.cards then + G.shop:recalculate() + if mod > 0 then -- not doing minus mod because it'd be janky and who really cares + for i = 1, G.GAME.cry_bonusvouchercount + 1 - #G.shop_vouchers.cards do + local curr_bonus = G.GAME.current_round.cry_bonusvouchers + curr_bonus[#curr_bonus + 1] = get_next_voucher_key() + + -- this could be a function but it's done like what... 3 times? it doesn't matter rn + + local card = Card( + G.shop_vouchers.T.x + G.shop_vouchers.T.w / 2, + G.shop_vouchers.T.y, + G.CARD_W, + G.CARD_H, + G.P_CARDS.empty, + G.P_CENTERS[curr_bonus[#curr_bonus]], + { bypass_discovery_center = true, bypass_discovery_ui = true } + ) + card.shop_cry_bonusvoucher = #curr_bonus + cry_misprintize(card) + if G.GAME.events.ev_cry_choco2 then + card.misprint_cost_fac = (card.misprint_cost_fac or 1) * 2 + card:set_cost() + end + if + G.GAME.modifiers.cry_enable_flipped_in_shop + and pseudorandom("cry_flip_vouch" .. G.GAME.round_resets.ante) > 0.7 + then + card.cry_flipped = true + end + create_shop_card_ui(card, "Voucher", G.shop_vouchers) + card:start_materialize() + if G.GAME.current_round.cry_voucher_edition then + card:set_edition(G.GAME.current_round.cry_voucher_edition, true, true) + end + G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1 + G.shop_vouchers:emplace(card) + end + end + end +end + +Cryptid.big_num_whitelist = { + j_ride_the_bus = true, + j_egg = true, + j_runner = true, + j_ice_cream = true, + j_constellation = true, + j_green_joker = true, + j_red_card = true, + j_madness = true, + j_square = true, + j_vampire = true, + j_hologram = true, + j_obelisk = true, + j_turtle_bean = true, + j_lucky_cat = true, + j_flash = true, + j_popcorn = true, + j_trousers = true, + j_ramen = true, + j_castle = true, + j_campfire = true, + j_throwback = true, + j_glass = true, + j_wee = true, + j_hit_the_road = true, + j_caino = true, + j_yorick = true, + -- Once all Cryptid Jokers get support for this, these can be removed + j_cry_dropshot = true, + j_cry_wee_fib = true, + j_cry_whip = true, + j_cry_pickle = true, + j_cry_chili_pepper = true, + j_cry_cursor = true, + j_cry_jimball = true, + j_cry_eternalflame = true, + j_cry_fspinner = true, + j_cry_krustytheclown = true, + j_cry_antennastoheaven = true, + j_cry_mondrian = true, + j_cry_spaceglobe = true, + j_cry_m = true, + j_cry_exponentia = true, + j_cry_crustulum = true, + j_cry_primus = true, + j_cry_stella_mortis = true, + j_cry_hugem = true, + j_cry_mprime = true, +} + +function is_card_big(joker) + local center = joker.config and joker.config.center + if not center then + return false + end + return Cryptid.big_num_whitelist[center.key or "Nope!"] --[[or + (center.mod and center.mod.id == "Cryptid" and not center.no_break_infinity) or center.break_infinity--]] +end + +--Utility function to check things without erroring +function safe_get(t, ...) + local current = t + for _, k in ipairs({ ... }) do + if current[k] == nil then + return false + end + current = current[k] + end + return current +end +--Functions used by boss blinds +function Blind:cry_ante_base_mod(dt) + if not self.disabled then + local obj = self.config.blind + if obj.cry_ante_base_mod and type(obj.cry_ante_base_mod) == "function" then + return obj:cry_ante_base_mod(dt) + end + end + return 0 +end +function Blind:cry_round_base_mod(dt) + if not self.disabled then + local obj = self.config.blind + if obj.cry_round_base_mod and type(obj.cry_round_base_mod) == "function" then + return obj:cry_round_base_mod(dt) + end + end + return 1 +end +function Blind:cry_cap_score(score) + if not self.disabled then + local obj = self.config.blind + if obj.cry_cap_score and type(obj.cry_cap_score) == "function" then + return obj:cry_cap_score(score) + end + end + return score +end +function Blind:cry_after_play() + if not self.disabled then + local obj = self.config.blind + if obj.cry_after_play and type(obj.cry_after_play) == "function" then + return obj:cry_after_play() + end + end +end +function Blind:cry_before_play() + if not self.disabled then + local obj = self.config.blind + if obj.cry_before_play and type(obj.cry_before_play) == "function" then + return obj:cry_before_play() + end + end +end +function Blind:cry_calc_ante_gain() + if G.GAME.modifiers.cry_spooky then --here is the best place to check when spooky should apply + local card + if pseudorandom(pseudoseed("cry_spooky_curse")) < G.GAME.modifiers.cry_curse_rate then + card = create_card("Joker", G.jokers, nil, "cry_cursed", nil, nil, nil, "cry_spooky") + else + card = create_card("Joker", G.jokers, nil, "cry_candy", nil, nil, nil, "cry_spooky") + end + card:add_to_deck() + card:start_materialize() + G.jokers:emplace(card) + end + if not self.disabled then + local obj = self.config.blind + if obj.cry_calc_ante_gain and type(obj.cry_calc_ante_gain) == "function" then + return obj:cry_calc_ante_gain() + end + end + return 1 +end +function cry_get_enchanced_deck_info(deck) + --only accounts for vanilla stuff at the moment (WIP) + local edition, enhancement, sticker, suit, seal = + "e_" .. (safe_get(G.PROFILES, G.SETTINGS.profile, "cry_edeck_edition") or "foil"), + safe_get(G.PROFILES, G.SETTINGS.profile, "cry_edeck_enhancement") or "m_bonus", + safe_get(G.PROFILES, G.SETTINGS.profile, "cry_edeck_sticker") or "eternal", + safe_get(G.PROFILES, G.SETTINGS.profile, "cry_edeck_suit") or "Spades", + safe_get(G.PROFILES, G.SETTINGS.profile, "cry_edeck_seal") or "Gold" + -- Do Stuff + edition = (safe_get(G.P_CENTERS, edition) and edition or "e_foil"):sub(3) + enhancement = safe_get(G.P_CENTERS, enhancement) and enhancement or "m_bonus" + sticker = safe_get(SMODS.Stickers, sticker) and sticker or "eternal" + suit = safe_get(SMODS.Suits, suit) and suit or "Spades" + seal = safe_get(G.P_SEALS, seal) and seal or "Gold" + local ret = { + edition = edition, + enhancement = enhancement, + sticker = sticker, + suit = suit, + seal = seal, + } + for k, _ in pairs(ret) do + if G.GAME.modifiers["cry_force_" .. k] and not G.GAME.viewed_back then + ret[k] = G.GAME.modifiers["cry_force_" .. k] + elseif safe_get(deck, "config", "cry_force_" .. k) then + ret[k] = deck.config["cry_force_" .. k] + end + end + return ret.edition, ret.enhancement, ret.sticker, ret.suit, ret.seal +end +function Cryptid.post_process(center) + if center.pools and center.pools.M then + local vc = center.calculate + center.calculate = function(self, card, context) + local ret, trig = vc(self, card, context) + if context.retrigger_joker_check and context.other_card == card then + local reps = get_m_retriggers(self, card, context) + if reps > 0 then + return { + message = localize("k_again_ex"), + repetitions = reps + (ret and ret.repetitions or 0), + card = card, + } + end + end + return ret, trig + end + end +end + +-- Wrapper G.FUNCS function to reset localization +-- For resetting localization on the fly for family friendly toggle +function reload_cryptid_localization() + SMODS.handle_loc_file(Cryptid.path) + return init_localization() +end diff --git a/Cryptid/lib/misprintize.lua b/Cryptid/lib/misprintize.lua new file mode 100644 index 0000000..af99669 --- /dev/null +++ b/Cryptid/lib/misprintize.lua @@ -0,0 +1,205 @@ +-- misprintize.lua - functions for card value randomization + +--Redefine these here because they're always used +Cryptid.base_values = {} +function cry_misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack, big) + if name and ref_tbl and ref_value then + tbl = cry_deep_copy(ref_tbl[ref_value]) + for k, v in pairs(tbl) do + if (type(tbl[k]) ~= "table") or is_number(tbl[k]) then + if + is_number(tbl[k]) + and not (k == "id") + and not (k == "colour") + and not (k == "suit_nominal") + and not (k == "base_nominal") + and not (k == "face_nominal") + and not (k == "qty") + and not (k == "x_mult" and v == 1 and not tbl.override_x_mult_check) + and not (k == "selected_d6_face") + then --Temp fix, even if I did clamp the number to values that wouldn't crash the game, the fact that it did get randomized means that there's a higher chance for 1 or 6 than other values + if not Cryptid.base_values[name] then + Cryptid.base_values[name] = {} + end + if not Cryptid.base_values[name][k] then + Cryptid.base_values[name][k] = tbl[k] + end + tbl[k] = cry_sanity_check( + clear and Cryptid.base_values[name][k] + or cry_format( + (stack and tbl[k] or Cryptid.base_values[name][k]) + * cry_log_random( + pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), + override and override.min or G.GAME.modifiers.cry_misprint_min, + override and override.max or G.GAME.modifiers.cry_misprint_max + ), + "%.2g" + ), + big + ) + end + else + for _k, _v in pairs(tbl[k]) do + if + is_number(tbl[k][_k]) + and not (_k == "id") + and not (k == "perish_tally") + and not (k == "colour") + and not (_k == "suit_nominal") + and not (_k == "base_nominal") + and not (_k == "face_nominal") + and not (_k == "qty") + and not (k == "x_mult" and v == 1 and not tbl[k].override_x_mult_check) + and not (_k == "selected_d6_face") + then --Refer to above + if not Cryptid.base_values[name] then + Cryptid.base_values[name] = {} + end + if not Cryptid.base_values[name][k] then + Cryptid.base_values[name][k] = {} + end + if not Cryptid.base_values[name][k][_k] then + Cryptid.base_values[name][k][_k] = tbl[k][_k] + end + tbl[k][_k] = cry_sanity_check( + clear and Cryptid.base_values[name][k][_k] + or cry_format( + (stack and tbl[k][_k] or Cryptid.base_values[name][k][_k]) + * cry_log_random( + pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), + override and override.min or G.GAME.modifiers.cry_misprint_min, + override and override.max or G.GAME.modifiers.cry_misprint_max + ), + "%.2g" + ), + big + ) + end + end + end + end + ref_tbl[ref_value] = tbl + end +end +function cry_misprintize_val(val, override, big) + if is_number(val) then + val = cry_sanity_check( + cry_format( + val + * cry_log_random( + pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), + override and override.min or G.GAME.modifiers.cry_misprint_min, + override and override.max or G.GAME.modifiers.cry_misprint_max + ), + "%.2g" + ), + big + ) + end + return val +end +function cry_sanity_check(val, is_big) + if is_big then + if not val or type(val) == "number" and (val ~= val or val > 1e300 or val < -1e300) then + val = 1e300 + end + if type(val) == "table" then + return val + end + if val > 1e100 or val < -1e100 then + return to_big(val) + end + end + if not val or type(val) == "number" and (val ~= val or val > 1e300 or val < -1e300) then + return 1e300 + end + return val +end +function cry_misprintize(card, override, force_reset, stack) + if Card.no(card, "immutable", true) then + force_reset = true + end + --infinifusion compat + if card.infinifusion then + if card.config.center == card.infinifusion_center or card.config.center.key == "j_infus_fused" then + calculate_infinifusion(card, nil, function(i) + cry_misprintize(card, override, force_reset, stack) + end) + end + end + if + (not force_reset or G.GAME.modifiers.cry_jkr_misprint_mod) + and (G.GAME.modifiers.cry_misprint_min or override or card.ability.set == "Joker") + and not stack + or not Card.no(card, "immutable", true) + then + if card.ability.name == "Ace Aequilibrium" then + return + end + if G.GAME.modifiers.cry_jkr_misprint_mod and card.ability.set == "Joker" then + if not override then + override = {} + end + override.min = override.min or G.GAME.modifiers.cry_misprint_min or 1 + override.max = override.max or G.GAME.modifiers.cry_misprint_max or 1 + override.min = override.min * G.GAME.modifiers.cry_jkr_misprint_mod + override.max = override.max * G.GAME.modifiers.cry_jkr_misprint_mod + end + if G.GAME.modifiers.cry_misprint_min or override and override.min then + cry_misprintize_tbl(card.config.center_key, card, "ability", nil, override, stack, is_card_big(card)) + if card.base then + cry_misprintize_tbl(card.config.card_key, card, "base", nil, override, stack, is_card_big(card)) + end + end + if G.GAME.modifiers.cry_misprint_min then + --card.cost = cry_format(card.cost / cry_log_random(pseudoseed('cry_misprint'..G.GAME.round_resets.ante),override and override.min or G.GAME.modifiers.cry_misprint_min,override and override.max or G.GAME.modifiers.cry_misprint_max),"%.2f") + card.misprint_cost_fac = 1 + / cry_log_random( + pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), + override and override.min or G.GAME.modifiers.cry_misprint_min, + override and override.max or G.GAME.modifiers.cry_misprint_max + ) + card:set_cost() + end + else + cry_misprintize_tbl(card.config.center_key, card, "ability", true, nil, nil, is_card_big(card)) + end + if card.ability.consumeable then + for k, v in pairs(card.ability.consumeable) do + card.ability.consumeable[k] = cry_deep_copy(card.ability[k]) + end + end +end +function cry_log_random(seed, min, max) + math.randomseed(seed) + local lmin = math.log(min, 2.718281828459045) + local lmax = math.log(max, 2.718281828459045) + local poll = math.random() * (lmax - lmin) + lmin + return math.exp(poll) +end +function cry_format(number, str) + if math.abs(to_big(number)) >= to_big(1e300) then + return number + end + return tonumber(str:format((Big and to_number(to_big(number)) or number))) +end +--use ID to work with glitched/misprint +function Card:get_nominal(mod) + local mult = 1 + local rank_mult = 1 + if mod == "suit" then + mult = 1000000 + end + if self.ability.effect == "Stone Card" or (self.config.center.no_suit and self.config.center.no_rank) then + mult = -10000 + elseif self.config.center.no_suit then + mult = 0 + elseif self.config.center.no_rank then + rank_mult = 0 + end + return 10 * (self.base.id or 0.1) * rank_mult + + self.base.suit_nominal * mult + + (self.base.suit_nominal_original or 0) * 0.0001 * mult + + 10 * self.base.face_nominal * rank_mult + + 0.000001 * self.unique_val +end diff --git a/Cryptid/lib/modifiers.lua b/Cryptid/lib/modifiers.lua new file mode 100644 index 0000000..b2c1a11 --- /dev/null +++ b/Cryptid/lib/modifiers.lua @@ -0,0 +1,890 @@ +-- Code to handle stickers, debuffs, etc. +-- Warning: this is a bit of a mess + +-- moved unredeem and unapply functions outside of spectrals +function Card:unredeem() + if self.ability.set == "Voucher" then + stop_use() + if not self.config.center.discovered then + discover_card(self.config.center) + end + + self.states.hover.can = false + local top_dynatext = nil + local bot_dynatext = nil + + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.4, + func = function() + top_dynatext = DynaText({ + string = localize({ + type = "name_text", + set = self.config.center.set, + key = self.config.center.key, + }), + colours = { G.C.RED }, + rotate = 1, + shadow = true, + bump = true, + float = true, + scale = 0.9, + pop_in = 0.6 / G.SPEEDFACTOR, + pop_in_rate = 1.5 * G.SPEEDFACTOR, + }) + bot_dynatext = DynaText({ + string = localize("cry_unredeemed"), + colours = { G.C.RED }, + rotate = 2, + shadow = true, + bump = true, + float = true, + scale = 0.9, + pop_in = 1.4 / G.SPEEDFACTOR, + pop_in_rate = 1.5 * G.SPEEDFACTOR, + pitch_shift = 0.25, + }) + self:juice_up(0.3, 0.5) + play_sound("card1") + play_sound("timpani") + self.children.top_disp = UIBox({ + definition = { + n = G.UIT.ROOT, + config = { align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15 }, + nodes = { + { n = G.UIT.O, config = { object = top_dynatext } }, + }, + }, + config = { align = "tm", offset = { x = 0, y = 0 }, parent = self }, + }) + self.children.bot_disp = UIBox({ + definition = { + n = G.UIT.ROOT, + config = { align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15 }, + nodes = { + { n = G.UIT.O, config = { object = bot_dynatext } }, + }, + }, + config = { align = "bm", offset = { x = 0, y = 0 }, parent = self }, + }) + return true + end, + })) + + if not self.debuff then + self:unapply_to_run() + end + + delay(0.6) + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 2.6, + func = function() + top_dynatext:pop_out(4) + bot_dynatext:pop_out(4) + return true + end, + })) + + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.5, + func = function() + self.children.top_disp:remove() + self.children.top_disp = nil + self.children.bot_disp:remove() + self.children.bot_disp = nil + return true + end, + })) + end + G.E_MANAGER:add_event(Event({ + func = function() + cry_update_used_vouchers() + return true + end, + })) +end + +function Card:unapply_to_run(center) + local center_table = { + name = center and center.name or self and self.ability.name, + extra = self and self.ability.extra or center and center.config.extra, + } + local obj = center or self.config.center + if obj.unredeem and type(obj.unredeem) == "function" then + obj:unredeem(self) + return + end + + if center_table.name == "Overstock" or center_table.name == "Overstock Plus" then + G.E_MANAGER:add_event(Event({ + func = function() + change_shop_size(-center_table.extra) + return true + end, + })) + end + if center_table.name == "Tarot Merchant" or center_table.name == "Tarot Tycoon" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.tarot_rate = G.GAME.tarot_rate / center_table.extra + return true + end, + })) + end + if center_table.name == "Planet Merchant" or center_table.name == "Planet Tycoon" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.planet_rate = G.GAME.planet_rate / center_table.extra + return true + end, + })) + end + if center_table.name == "Hone" or center_table.name == "Glow Up" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.edition_rate = G.GAME.edition_rate / center_table.extra + return true + end, + })) + end + if center_table.name == "Magic Trick" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.playing_card_rate = 0 + return true + end, + })) + end + if center_table.name == "Crystal Ball" then + G.E_MANAGER:add_event(Event({ + func = function() + G.consumeables.config.card_limit = G.consumeables.config.card_limit - center_table.extra + return true + end, + })) + end + if center_table.name == "Clearance Sale" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.discount_percent = 0 + for k, v in pairs(G.I.CARD) do + if v.set_cost then + v:set_cost() + end + end + return true + end, + })) + end + if center_table.name == "Liquidation" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.discount_percent = 25 -- no idea why the below returns nil, so it's hardcoded now + -- G.GAME.discount_percent = G.P_CENTERS.v_clearance_sale.extra + for k, v in pairs(G.I.CARD) do + if v.set_cost then + v:set_cost() + end + end + return true + end, + })) + end + if center_table.name == "Reroll Surplus" or center_table.name == "Reroll Glut" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost + self.ability.extra + G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost + self.ability.extra) + return true + end, + })) + end + if center_table.name == "Seed Money" then + G.E_MANAGER:add_event(Event({ + func = function() + G.GAME.interest_cap = 25 --note: does not account for potential deck effects + return true + end, + })) + end + if center_table.name == "Money Tree" then + G.E_MANAGER:add_event(Event({ + func = function() + if G.GAME.used_vouchers.v_seed_money then + G.GAME.interest_cap = 50 + else + G.GAME.interest_cap = 25 + end + return true + end, + })) + end + if center_table.name == "Grabber" or center_table.name == "Nacho Tong" then + G.GAME.round_resets.hands = G.GAME.round_resets.hands - center_table.extra + ease_hands_played(-center_table.extra) + end + if center_table.name == "Paint Brush" or center_table.name == "Palette" then + G.hand:change_size(-center_table.extra) + end + if center_table.name == "Wasteful" or center_table.name == "Recyclomancy" then + G.GAME.round_resets.discards = G.GAME.round_resets.discards - center_table.extra + ease_discard(-center_table.extra) + end + if center_table.name == "Antimatter" then + G.E_MANAGER:add_event(Event({ + func = function() + if G.jokers then + G.jokers.config.card_limit = G.jokers.config.card_limit - center_table.extra + end + return true + end, + })) + end + if center_table.name == "Hieroglyph" or center_table.name == "Petroglyph" then + ease_ante(center_table.extra) + G.GAME.round_resets.blind_ante = G.GAME.round_resets.blind_ante or G.GAME.round_resets.ante + G.GAME.round_resets.blind_ante = G.GAME.round_resets.blind_ante + center_table.extra + + if center_table.name == "Hieroglyph" then + G.GAME.round_resets.hands = G.GAME.round_resets.hands + center_table.extra + ease_hands_played(center_table.extra) + end + if center_table.name == "Petroglyph" then + G.GAME.round_resets.discards = G.GAME.round_resets.discards + center_table.extra + ease_discard(center_table.extra) + end + end +end + +local setabilityref = Card.set_ability +function Card:set_ability(center, initial, delay_sprites) + setabilityref(self, center, initial, delay_sprites) + self.ignore_base_shader = self.ignore_base_shader or {} + self.ignore_shadow = self.ignore_shadow or {} + local function repeatcheck(comp, table) + for _, v in ipairs(table) do + if comp == v then + return true + end + end + return false + end + local edition = nil + local sticker = nil + local random = nil + if safe_get(G, "GAME", "modifiers", "cry_force_edition") then + edition = G.GAME.modifiers.cry_force_edition + end + if safe_get(G, "GAME", "modifiers", "cry_force_sticker") then + sticker = G.GAME.modifiers.cry_force_sticker + end + if safe_get(G, "GAME", "modifiers", "cry_force_random_edition") then + random = true + end + if + repeatcheck(self.ability.set, { "Joker", "Voucher", "Booster", "Base", "Enhanced" }) + or self.ability.consumeable + then + if edition and not random then + self:set_edition({ [edition] = true }, true, true) + elseif random then + self:set_edition(cry_poll_random_edition(), true, true) + end + if sticker then + self.ability[sticker] = true + self:set_cost() + end + end + if self.ability.set == "Voucher" then + if self.ability.perishable and not self.ability.perish_tally then + self.ability.perish_tally = G.GAME.cry_voucher_perishable_rounds + end + end +end + +local updateref = Card.update +function Card:update(dt) + updateref(self, dt) + if self.ability.pinned then + self.pinned = true + end -- gluing these variables together + if self.pinned then + self.ability.pinned = true + end +end + +local setdebuffref = Card.set_debuff +function Card:set_debuff(should_debuff) + local is_debuffed = self.debuff + setdebuffref(self, should_debuff) + if self.debuff == true and is_debuffed ~= self.debuff then + if self.ability.set == "Voucher" then + self:unapply_to_run() + end + end +end + +local dissolveref = Card.start_dissolve +function Card:start_dissolve(dissolve_colours, silent, dissolve_time_fac, no_juice) + dissolveref(self, dissolve_colours, silent, dissolve_time_fac, no_juice) + G.E_MANAGER:add_event(Event({ + func = function() + cry_update_used_vouchers() + return true + end, + })) +end + +function cry_update_used_vouchers() + if G and G.GAME and G.vouchers then + G.GAME.used_vouchers = {} + for i, v in ipairs(G.vouchers.cards) do + G.GAME.used_vouchers[v.config.center_key] = true + end + end +end + +-- check if Director's Cut or Retcon offers a cheaper reroll price +function cry_cheapest_boss_reroll() + local cheapest = 1e300 + local vouchers = { + SMODS.find_card("v_directors_cut"), + SMODS.find_card("v_retcon"), + } + for _, table in ipairs(vouchers) do + for i, v in ipairs(table) do + if v.ability.extra <= cheapest then + cheapest = v.ability.extra + end + end + end + return cheapest +end + +-- check for best interest cap. better than what's done with redeems/unredeems +-- unfortunately this still sucks +-- make seed money/other vouchers better at some point? +function cry_best_interest_cap() + local best = 25 + local vouchers = { + SMODS.find_card("v_seed_money"), + SMODS.find_card("v_money_tree"), + SMODS.find_card("v_cry_money_beanstalk"), + } + for _, table in ipairs(vouchers) do + for i, v in ipairs(table) do + if v.ability.extra >= best then + best = v.ability.extra + end + end + end + return best +end + +local evaluateroundref = G.FUNCS.evaluate_round +G.FUNCS.evaluate_round = function() + G.GAME.interest_cap = cry_best_interest_cap() -- blehhhhhh + evaluateroundref() +end + +function cry_get_next_voucher_edition() -- currently only for edition decks, can be modified if voucher editioning becomes more important + if G.GAME.modifiers.cry_force_edition then + return cry_edition_to_table(G.GAME.modifiers.cry_force_edition) + elseif G.GAME.modifiers.cry_force_random_edition then + return cry_poll_random_edition() + end +end +-- code to generate Stickers for Vouchers (and boosters), based on that for Jokers +function cry_get_next_voucher_stickers(booster) + local rate = 0.3 + if booster then + rate = 0.2 + end + local suff = "v" + if booster then + suff = "b" + end + local odds = 1 - rate + + local ret = { eternal = false, perishable = false, rental = false, pinned = false, banana = false } + local checks = { eternal = {}, perishable = {}, rental = {}, pinned = {}, banana = {} } + + -- first order of business is making this shit not suck lmao + -- i did this when i didn't know what i was doing so it contains a lot of pointless checks and bloat + for k, v in pairs(checks) do + v["poll"] = pseudorandom("cry_" .. suff .. k .. G.GAME.round_resets.ante) + v["force"] = G.GAME.modifiers.cry_sticker_sheet_plus + or (G.GAME.modifiers.cry_force_sticker and G.GAME.modifiers.cry_force_sticker == k) + end + if + G.GAME.modifiers.cry_any_stickers + or G.GAME.modifiers.cry_sticker_sheet_plus + or G.GAME.modifiers.cry_force_sticker + then + if (G.GAME.modifiers.enable_eternals_in_shop and checks.eternal.poll > odds) or checks.eternal.force then + ret.eternal = true + end + if + ( + G.GAME.modifiers.cry_eternal_perishable_compat + and (G.GAME.modifiers.enable_perishables_in_shop and checks.perishable.poll > odds) + ) or checks.perishable.force + then -- still ehh? but way more understandable + ret.perishable = true + elseif + ( + not G.GAME.modifiers.cry_eternal_perishable_compat + and ( + G.GAME.modifiers.enable_perishables_in_shop + and checks.eternal.poll > odds - rate + and checks.eternal.poll <= odds + ) + ) or checks.perishable.force + then + ret.perishable = true + end + if (G.GAME.modifiers.enable_rentals_in_shop and checks.rental.poll > odds) or checks.rental.force then + ret.rental = true + end + if (G.GAME.modifiers.enable_pinned_in_shop and checks.pinned.poll > odds) or checks.pinned.force then + ret.pinned = true + end + if (G.GAME.modifiers.enable_banana_in_shop and checks.banana.poll > odds) or checks.banana.force then + ret.banana = true + end + end + return ret +end + +-- Calculates Rental sticker for Consumables +function Card:cry_calculate_consumeable_rental() + if self.ability.rental then + ease_dollars(-G.GAME.cry_consumeable_rental_rate) + card_eval_status_text(self, "dollars", -G.GAME.cry_consumeable_rental_rate) + end +end +-- Calculates Rental sticker for Vouchers +function Card:cry_calculate_voucher_rental() + if self.ability.rental then + ease_dollars(-G.GAME.cry_voucher_rental_rate) + card_eval_status_text(self, "dollars", -G.GAME.cry_voucher_rental_rate) + end +end + +-- Calculates Perishable sticker for Consumables +function Card:cry_calculate_consumeable_perishable() + if not self.ability.perish_tally then + self.ability.perish_tally = 1 + end + if self.ability.perishable and self.ability.perish_tally > 0 then + self.ability.perish_tally = 0 + card_eval_status_text( + self, + "extra", + nil, + nil, + nil, + { message = localize("k_disabled_ex"), colour = G.C.FILTER, delay = 0.45 } + ) + self:set_debuff() + end +end +-- Calculates Perishable sticker for Vouchers +function Card:cry_calculate_voucher_perishable() + if self.ability.perishable and not self.ability.perish_tally then + self.ability.perish_tally = G.GAME.cry_voucher_perishable_rounds + end + if self.ability.perishable and self.ability.perish_tally > 0 then + if self.ability.perish_tally == 1 then + self.ability.perish_tally = 0 + card_eval_status_text( + self, + "extra", + nil, + nil, + nil, + { message = localize("k_disabled_ex"), colour = G.C.FILTER, delay = 0.45 } + ) + self:set_debuff() + else + self.ability.perish_tally = self.ability.perish_tally - 1 + card_eval_status_text(self, "extra", nil, nil, nil, { + message = localize({ type = "variable", key = "a_remaining", vars = { self.ability.perish_tally } }), + colour = G.C.FILTER, + delay = 0.45, + }) + end + end +end + +function Card:set_perishable(_perishable) + self.ability.perishable = nil + if + (self.config.center.perishable_compat or G.GAME.modifiers.cry_any_stickers) + and (not self.ability.eternal or G.GAME.modifiers.cry_eternal_perishable_compat) + then + self.ability.perishable = true + self.ability.perish_tally = G.GAME.perishable_rounds or 5 + end +end +function Card:set_eternal(_eternal) + self.ability.eternal = nil + if + (self.config.center.eternal_compat or G.GAME.modifiers.cry_any_stickers) + and (not self.ability.perishable or G.GAME.modifiers.cry_eternal_perishable_compat) + then + self.ability.eternal = _eternal + end +end +function Card:calculate_banana() + if not self.ability.extinct then + if self.ability.banana and (pseudorandom("banana") < G.GAME.probabilities.normal / 10) then + self.ability.extinct = true + G.E_MANAGER:add_event(Event({ + func = function() + play_sound("tarot1") + self.T.r = -0.2 + self:juice_up(0.3, 0.4) + self.states.drag.is = true + self.children.center.pinch.x = true + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0.3, + blockable = false, + func = function() + if self.area then + self.area:remove_card(self) + end + self:remove() + self = nil + return true + end, + })) + return true + end, + })) + card_eval_status_text(self, "jokers", nil, nil, nil, { message = localize("k_extinct_ex"), delay = 0.1 }) + return true + elseif self.ability.banana then + card_eval_status_text(self, "jokers", nil, nil, nil, { message = localize("k_safe_ex"), delay = 0.1 }) + return false + end + end + return false +end +function Card:set_banana(_banana) + self.ability.banana = _banana +end +function Card:set_pinned(_pinned) + self.ability.pinned = _pinned +end + +SMODS.Sticker:take_ownership("perishable", { + atlas = "sticker", + pos = { x = 4, y = 4 }, + prefix_config = { key = false }, + loc_vars = function(self, info_queue, card) + if card.ability.consumeable then + return { key = "cry_perishable_consumeable" } + elseif card.ability.set == "Voucher" then + return { + key = "cry_perishable_voucher", + vars = { + G.GAME.cry_voucher_perishable_rounds or 1, + card.ability.perish_tally or G.GAME.cry_voucher_perishable_rounds, + }, + } + elseif card.ability.set == "Booster" then + return { key = "cry_perishable_booster" } + else + return { vars = { G.GAME.perishable_rounds or 1, card.ability.perish_tally or G.GAME.perishable_rounds } } + end + end, + calculate = function(self, card, context) + if context.end_of_round and context.main_eval then -- perishable is calculated seperately across G.playing_cards i believe + if card.ability.consumeable then + card:cry_calculate_consumeable_perishable() + elseif card.ability.set == "Voucher" then + card:cry_calculate_voucher_perishable() + else + card:calculate_perishable() + end + end + end, +}) +SMODS.Sticker:take_ownership("pinned", { + atlas = "sticker", + pos = { x = 5, y = 0 }, + prefix_config = { key = false }, + loc_vars = function(self, info_queue, card) + if card.ability.consumeable then + return { key = "cry_pinned_consumeable" } + elseif card.ability.set == "Voucher" then + return { key = "cry_pinned_voucher" } + elseif card.ability.set == "Booster" then + return { key = "cry_pinned_booster" } + else + return { key = "pinned_left" } + end + end, +}) +SMODS.Sticker:take_ownership("eternal", { + loc_vars = function(self, info_queue, card) + if card.ability.set == "Voucher" then + return { key = "cry_eternal_voucher" } + elseif card.ability.set == "Booster" then + return { key = "cry_eternal_booster" } + end + end, +}) +SMODS.Sticker:take_ownership("rental", { + loc_vars = function(self, info_queue, card) + if card.ability.consumeable then + return { key = "cry_rental_consumeable", vars = { G.GAME.cry_consumeable_rental_rate or 1 } } + elseif card.ability.set == "Voucher" then + return { key = "cry_rental_voucher", vars = { G.GAME.cry_voucher_rental_rate or 1 } } + elseif card.ability.set == "Booster" then + return { key = "cry_rental_booster" } + else + return { vars = { G.GAME.rental_rate or 1 } } + end + end, + calculate = function(self, card, context) + if context.end_of_round and context.main_eval then + if card.ability.consumeable then + card:cry_calculate_consumeable_rental() + elseif card.ability.set == "Voucher" then + card:cry_calculate_voucher_rental() + else + card:calculate_rental() + end + end + if context.playing_card_end_of_round then + card:calculate_rental() + end + end, +}) +SMODS.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, + calculate = function(self, card, context) + if + context.end_of_round + and not context.repetition + and not context.playing_card_end_of_round + and not context.individual + then + if card.ability.set == "Voucher" then + if pseudorandom("byebyevoucher") < G.GAME.probabilities.normal / G.GAME.cry_voucher_banana_odds then + local area + if G.STATE == G.STATES.HAND_PLAYED then + if not G.redeemed_vouchers_during_hand then + G.redeemed_vouchers_during_hand = CardArea( + G.play.T.x, + G.play.T.y, + G.play.T.w, + G.play.T.h, + { type = "play", card_limit = 5 } + ) + end + area = G.redeemed_vouchers_during_hand + else + area = G.play + end + + local _card = copy_card(card) + _card.ability.extra = copy_table(card.ability.extra) + if _card.facing == "back" then + _card:flip() + end + + _card:start_materialize() + area:emplace(_card) + _card.cost = 0 + _card.shop_voucher = false + _card:unredeem() + G.E_MANAGER:add_event(Event({ + trigger = "after", + delay = 0, + func = function() + _card:start_dissolve() + card:start_dissolve() + return true + end, + })) + end + end + end + end, +}) +-- temp crappy overwrite for voucher ui until smods does stuff + +function G.UIDEF.used_vouchers() + local silent = false + local keys_used = {} + local area_count = 0 + local voucher_areas = {} + local voucher_tables = {} + local voucher_table_rows = {} + table.sort(G.vouchers.cards, function(a, b) + return a.config.center.order < b.config.center.order + end) + for k, v in ipairs(G.vouchers.cards) do + local key = k + keys_used[key] = keys_used[key] or {} + keys_used[key][#keys_used[key] + 1] = v + end + for k, v in ipairs(keys_used) do + if next(v) then + area_count = area_count + 1 + end + end + for k, v in ipairs(keys_used) do + if next(v) then + if #voucher_areas == 18 or #voucher_areas == 36 or #voucher_areas == 54 then + table.insert( + voucher_table_rows, + { n = G.UIT.R, config = { align = "cm", padding = 0, no_fill = true }, nodes = voucher_tables } + ) + voucher_tables = {} + end + voucher_areas[#voucher_areas + 1] = CardArea( + G.ROOM.T.x + 0.2 * G.ROOM.T.w / 2, + G.ROOM.T.h, + (#v == 1 and 0.5 or 1.33) * G.CARD_W, + (area_count >= 10 and 0.75 or 1.07) * G.CARD_H, + { card_limit = 2, type = "voucher", highlight_limit = 0 } + ) + for kk, vv in ipairs(v) do + local card = copy_card(vv) + card.ability.extra = copy_table(vv.ability.extra) + if card.facing == "back" then + card:flip() + end + card:start_materialize(nil, silent) + silent = true + voucher_areas[#voucher_areas]:emplace(card) + end + table.insert(voucher_tables, { + n = G.UIT.C, + config = { align = "cm", padding = 0, no_fill = true }, + nodes = { + { n = G.UIT.O, config = { object = voucher_areas[#voucher_areas] } }, + }, + }) + end + end + table.insert( + voucher_table_rows, + { n = G.UIT.R, config = { align = "cm", padding = 0, no_fill = true }, nodes = voucher_tables } + ) + + local t = silent + and { + n = G.UIT.ROOT, + config = { align = "cm", colour = G.C.CLEAR }, + nodes = { + + -- tarot/planet acclimator sliders + next(SMODS.find_card("v_cry_tacclimator")) + and { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + create_slider({ + label = localize("b_tarot_rate"), + label_scale = 0.4, + text_scale = 0.3, + w = 4, + h = 0.4, + ref_table = G.GAME.cry_percrate, + ref_value = "tarot", + colour = G.C.SECONDARY_SET.Tarot, + min = 0, + max = 100, + }), + }, + } + or nil, + next(SMODS.find_card("v_cry_pacclimator")) and { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + create_slider({ + label = localize("b_planet_rate"), + label_scale = 0.4, + text_scale = 0.3, + w = 4, + h = 0.4, + ref_table = G.GAME.cry_percrate, + ref_value = "planet", + colour = G.C.SECONDARY_SET.Planet, + min = 0, + max = 100, + }), + }, + } or nil, + + { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + { + n = G.UIT.O, + config = { + object = DynaText({ + string = { localize("ph_vouchers_redeemed") }, + colours = { G.C.UI.TEXT_LIGHT }, + bump = true, + scale = 0.6, + }), + }, + }, + }, + }, + { n = G.UIT.R, config = { align = "cm", minh = 0.5 }, nodes = {} }, + { + n = G.UIT.R, + config = { align = "cm", colour = G.C.BLACK, r = 1, padding = 0.15, emboss = 0.05 }, + nodes = { + { n = G.UIT.R, config = { align = "cm" }, nodes = voucher_table_rows }, + }, + }, + }, + } + or { + n = G.UIT.ROOT, + config = { align = "cm", colour = G.C.CLEAR }, + nodes = { + { + n = G.UIT.O, + config = { + object = DynaText({ + string = { localize("ph_no_vouchers") }, + colours = { G.C.UI.TEXT_LIGHT }, + bump = true, + scale = 0.6, + }), + }, + }, + }, + } + return t +end diff --git a/Cryptid/lib/notifications.lua b/Cryptid/lib/notifications.lua new file mode 100644 index 0000000..1f9b194 --- /dev/null +++ b/Cryptid/lib/notifications.lua @@ -0,0 +1,230 @@ +-- notifications.lua - Adds notification system for Cryptid + +function create_cryptid_notif_overlay(key) + if not G.SETTINGS.cryptid_notifs then -- I want this to be across profiles + G.SETTINGS.cryptid_notifs = {} + end + if not G.SETTINGS.cryptid_notifs[key] then + G.E_MANAGER:add_event( + Event({ + trigger = "immediate", + no_delete = true, + func = function() + if not G.OVERLAY_MENU then + G.SETTINGS.paused = true + G.FUNCS.overlay_menu({ + definition = create_UIBox_cryptid_notif(key), + }) + play_sound("foil1", 0.7, 0.3) + play_sound("gong", 1.4, 0.15) + G.SETTINGS.cryptid_notifs[key] = true + G:save_settings() + return true + end + end, + }), + "unlock" + ) + end +end + +function create_UIBox_cryptid_notif(key) + local t = create_UIBox_generic_options({ + padding = 0, + back_label = localize("b_continue"), + no_pip = true, + snap_back = true, + back_func = "continue_unlock", + minw = 4.5, + contents = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0.1 }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0.1 }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.O, + config = { + object = DynaText({ + string = { localize("cry_notif_" .. key .. "_1") }, + colours = { G.C.BLUE }, + shadow = true, + rotate = true, + bump = true, + pop_in = 0.3, + pop_in_rate = 2, + scale = 1.2, + }), + }, + }, + }, + }, + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.O, + config = { + object = DynaText({ + string = { localize("cry_notif_" .. key .. "_2") }, + colours = { G.C.RED }, + shadow = true, + rotate = true, + bump = true, + pop_in = 0.6, + pop_in_rate = 2, + scale = 0.8, + }), + }, + }, + }, + }, + }, + }, + { + n = G.UIT.R, + config = { align = "cm", padding = 0.2 }, + nodes = { + { + n = G.UIT.R, + config = { + align = "cm", + padding = 0.05, + emboss = 0.05, + colour = G.C.WHITE, + r = 0.1, + }, + nodes = { + Cryptid.notifications[key].nodes(), + }, + }, + }, + }, + }, + }, + Cryptid.notifications[key].cta and { + n = G.UIT.R, + config = { + id = "overlay_menu_back_button", + align = "cm", + minw = 2.5, + padding = 0.1, + r = 0.1, + hover = true, + colour = G.C.BLUE, + button = "notif_" .. key, + shadow = true, + focus_args = { nav = "wide", button = "b" }, + }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0, no_fill = true }, + nodes = { + { + n = G.UIT.T, + config = { + text = localize(Cryptid.notifications[key].cta.label), + scale = 0.5, + colour = G.C.UI.TEXT_LIGHT, + shadow = true, + func = "set_button_pip", + focus_args = { button = "b" }, + }, + }, + }, + }, + }, + } or nil, + }, + }, + }, + }) + return t +end + +-- I couldn't figure out how to fully use localization for this, so this implementation is pretty scuffed +Cryptid.notifications = { + jimball = { + nodes = function() + return { + n = G.UIT.R, + config = { + align = "cm", + colour = empty and G.C.CLEAR or G.C.UI.BACKGROUND_WHITE, + r = 0.1, + padding = 0.04, + minw = 2, + minh = 0.8, + emboss = not empty and 0.05 or nil, + filler = true, + }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0.03 }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.T, + config = { + text = localize("cry_notif_jimball_d1"), + scale = 0.5, + colour = G.C.BLACK, + }, + }, + }, + }, + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.T, + config = { + text = localize("cry_notif_jimball_d2"), + scale = 0.5, + colour = G.C.BLACK, + }, + }, + }, + }, + { + n = G.UIT.R, + config = { align = "cm", padding = 0 }, + nodes = { + { + n = G.UIT.T, + config = { + text = localize("cry_notif_jimball_d3"), + scale = 0.5, + colour = G.C.BLACK, + }, + }, + }, + }, + }, + }, + }, + } + end, + cta = { + label = "k_disable_music", + }, + }, +} diff --git a/Cryptid/lib/overrides.lua b/Cryptid/lib/overrides.lua new file mode 100644 index 0000000..c440daa --- /dev/null +++ b/Cryptid/lib/overrides.lua @@ -0,0 +1,1301 @@ +-- overrides.lua - Adds hooks and overrides used by multiple features. + +-- get_currrent_pool hook for Deck of Equilibrium and Copies +local gcp = get_current_pool +function get_current_pool(_type, _rarity, _legendary, _append, override_equilibrium_effect) + if type == "Tag" then + for i = 1, #pool do + -- Copies: Turn Double tags into Triple Tags + if pool[i] == "tag_double" and G.GAME.used_vouchers.v_cry_copies then + pool[i] = "tag_cry_triple" + end + -- Tag Printer: Turn Double tags and Triple Tags into Quadruple Tags + 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 + -- Clone Machine: Turn Double tags and Triple Tags as well as Quadruple Tags into Quintuple Tags + 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 + -- Deck of Equilibrium stuff + elseif + G.GAME.modifiers.cry_equilibrium + and not override_equilibrium_effect + and (_append == "sho" or _type == "Voucher" or _type == "Booster") + then + if + _type ~= "Enhanced" + and _type ~= "Edition" + and _type ~= "Back" + and _type ~= "Tag" + and _type ~= "Seal" + and _type ~= "Stake" + then + -- we're regenerating the pool every time because of banned keys but it's fine tbh + P_CRY_ITEMS = {} + local valid_pools = { "Joker", "Consumeables", "Voucher", "Booster" } + for _, id in ipairs(valid_pools) do + for k, v in pairs(G.P_CENTER_POOLS[id]) do + if v.unlocked == true and not center_no(v, "doe", k) and not G.GAME.banned_keys[v.key] then + P_CRY_ITEMS[#P_CRY_ITEMS + 1] = v.key + end + end + end + if #P_CRY_ITEMS <= 0 then + P_CRY_ITEMS[#P_CRY_ITEMS + 1] = "v_blank" + end + return P_CRY_ITEMS, "cry_equilibrium" .. G.GAME.round_resets.ante + end + end + return gcp(_type, _rarity, _legendary, _append) +end +local gnb = get_new_boss +function get_new_boss() + --Fix an issue with adding bosses mid-run + for k, v in pairs(G.P_BLINDS) do + if not G.GAME.bosses_used[k] then + G.GAME.bosses_used[k] = 0 + end + end + --This is how nostalgic deck replaces the boss blinds with Nostalgic versions + local bl = gnb() + if G.GAME.modifiers.cry_beta then + local bl_key = string.sub(bl, 4) + local nostalgicblinds = { + arm = (cry_card_enabled("bl_cry_oldarm") == true), + fish = (cry_card_enabled("bl_cry_oldfish") == true), + flint = (cry_card_enabled("bl_cry_oldflint") == true), + house = (cry_card_enabled("bl_cry_oldhouse") == true), + manacle = (cry_card_enabled("bl_cry_oldmanacle") == true), + mark = (cry_card_enabled("bl_cry_oldmark") == true), + ox = (cry_card_enabled("bl_cry_oldox") == true), + pillar = (cry_card_enabled("bl_cry_oldpillar") == true), + serpent = (cry_card_enabled("bl_cry_oldserpent") == true), + } + if nostalgicblinds[bl_key] then + return "bl_cry_old" .. bl_key + end + end + return bl +end + +--Add context for after cards are played +local gfep = G.FUNCS.evaluate_play +function G.FUNCS.evaluate_play(e) + gfep(e) + G.GAME.blind:cry_after_play() +end + +--Add context for Just before cards are played +local pcfh = G.FUNCS.play_cards_from_highlighted +function G.FUNCS.play_cards_from_highlighted(e) + G.GAME.before_play_buffer = true + G.GAME.blind:cry_before_play() + pcfh(e) + G.GAME.before_play_buffer = nil +end + +--Track defeated blinds for Obsidian Orb +local dft = Blind.defeat +function Blind:defeat(s) + dft(self, s) + local obj = self.config.blind + -- Ignore blinds with loc_vars because orb does not properly work with them yet + if obj.boss and (obj.boss.no_orb or obj.boss.epic or obj.loc_vars) then + return + end + if + self.name ~= "cry-Obsidian Orb" + --Stop impossible blind combinations from happening + and self.name ~= "The Sink" + and (self.name ~= "cry-oldarm" or not G.GAME.defeated_blinds["bl_psychic"]) + and (self.name ~= "The Psychic" or not G.GAME.defeated_blinds["bl_cry_oldarm"]) + and (self.name ~= "The Eye" or not G.GAME.defeated_blinds["bl_mouth"]) + and (self.name ~= "The Mouth" or not G.GAME.defeated_blinds["bl_eye"]) + and (self.name ~= "cry-Lavender Loop" or not G.GAME.defeated_blinds["bl_cry_tax"]) + and (self.name ~= "cry-Tax" or not G.GAME.defeated_blinds["bl_cry_lavender_loop"]) + and (self.name ~= "The Needle" or not G.GAME.defeated_blinds["bl_cry_tax"]) + and (self.name ~= "cry-Tax" or not G.GAME.defeated_blinds["bl_needle"]) + then + G.GAME.defeated_blinds[self.config.blind.key] = true + end +end + +local sr = Game.start_run +function Game:start_run(args) + sr(self, args) + if G.P_BLINDS.bl_cry_clock then + G.P_BLINDS.bl_cry_clock.mult = 0 + end + if not G.GAME.defeated_blinds then + G.GAME.defeated_blinds = {} + end +end + +--patch for multiple Clocks to tick separately and load separately +local bsb = Blind.set_blind +function Blind:set_blind(blind, y, z) + local c = "Boss" + if string.sub(G.GAME.subhash or "", -1) == "S" then + c = "Small" + end + if string.sub(G.GAME.subhash or "", -1) == "B" then + c = "Big" + end + if G.GAME.CRY_BLINDS and G.GAME.CRY_BLINDS[c] and not y and blind and blind.mult and blind.cry_ante_base_mod then + blind.mult = G.GAME.CRY_BLINDS[c] + end + bsb(self, blind, y, z) +end + +local rb = reset_blinds +function reset_blinds() + if G.GAME.round_resets.blind_states.Boss == "Defeated" then + G.GAME.CRY_BLINDS = {} + if G.P_BLINDS.bl_cry_clock then + G.P_BLINDS.bl_cry_clock.mult = 0 + end + end + rb() +end +--Init stuff at the start of the game +local gigo = Game.init_game_object +function Game:init_game_object() + local g = gigo(self) + -- Add initial dropshot and number blocks card + g.current_round.cry_nb_card = { rank = "Ace" } + g.current_round.cry_dropshot_card = { suit = "Spades" } + -- Create G.GAME.events when starting a run, so there's no errors + g.events = {} + return g +end + +-- reset_castle_card hook for things like Dropshot and Number Blocks +local rcc = reset_castle_card +function reset_castle_card() + rcc() + G.GAME.current_round.cry_nb_card = { rank = "Ace" } + if not G.GAME.current_round.cry_dropshot_card then + G.GAME.current_round.cry_dropshot_card = {} + end + G.GAME.current_round.cry_dropshot_card.suit = "Spades" + local valid_castle_cards = {} + for k, v in ipairs(G.playing_cards) do + if v.ability.effect ~= "Stone Card" then + valid_castle_cards[#valid_castle_cards + 1] = v + end + end + if valid_castle_cards[1] then + --Dropshot + local castle_card = pseudorandom_element(valid_castle_cards, pseudoseed("cry_dro" .. G.GAME.round_resets.ante)) + if not G.GAME.current_round.cry_dropshot_card then + G.GAME.current_round.cry_dropshot_card = {} + end + G.GAME.current_round.cry_dropshot_card.suit = castle_card.base.suit + --Number Blocks + local castle_card_two = + pseudorandom_element(valid_castle_cards, pseudoseed("cry_nb" .. G.GAME.round_resets.ante)) + if not G.GAME.current_round.cry_nb_card then + G.GAME.current_round.cry_nb_card = {} + end + G.GAME.current_round.cry_nb_card.rank = castle_card_two.base.value + G.GAME.current_round.cry_nb_card.id = castle_card_two.base.id + end +end + +-- Back.apply_to_run Hook for decks +local Backapply_to_runRef = Back.apply_to_run +function Back.apply_to_run(self) + Backapply_to_runRef(self) + if self.effect.config.cry_no_edition_price then + G.GAME.modifiers.cry_no_edition_price = true + end +end + +--Game:update hook +local upd = Game.update + +--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 } +G.C.CRY_JOLLY = { 0, 0, 0, 0 } +Cryptid.C = { + EXOTIC = { HEX("708b91"), HEX("1e9eba") }, + TWILIGHT = { HEX("0800ff"), HEX("aa00ff") }, + VERDANT = { HEX("00ff22"), HEX("f4ff57") }, + EMBER = { HEX("ff0000"), HEX("ffae00") }, + DAWN = { HEX("00aaff"), HEX("ff00e3") }, + HORIZON = { HEX("c8fd09"), HEX("1ee7d9") }, + BLOSSOM = { HEX("ff09da"), HEX("ffd121") }, + AZURE = { HEX("0409ff"), HEX("63dcff") }, + ASCENDANT = { HEX("2e00f5"), HEX("e5001d") }, + JOLLY = { HEX("6ec1f5"), HEX("456b84") }, + SELECTED = { HEX("e38039"), HEX("ccdd1b") }, +} + +cry_pointer_dt = 0 +cry_jimball_dt = 0 +cry_glowing_dt = 0 +function Game:update(dt) + upd(self, dt) + + --Gradients based on Balatrostuck code + local anim_timer = self.TIMERS.REAL * 1.5 + local p = 0.5 * (math.sin(anim_timer) + 1) + for k, c in pairs(Cryptid.C) do + if not G.C["CRY_" .. k] then + G.C["CRY_" .. k] = { 0, 0, 0, 0 } + end + for i = 1, 4 do + G.C["CRY_" .. k][i] = c[1][i] * p + c[2][i] * (1 - p) + end + end + G.C.RARITY["cry_exotic"] = G.C.CRY_EXOTIC + G.C.SECONDARY_SET["Content Set"] = G.C.CRY_ASCENDANT + -- Idk what this is for + if Incantation and not CryptidIncanCompat then + AllowStacking("Code") + AllowDividing("Code") + CryptidIncanCompat = true + end + if cry_card_enabled("set_cry_timer") == true then + cry_pointer_dt = cry_pointer_dt + dt + cry_jimball_dt = cry_jimball_dt + dt + cry_glowing_dt = cry_glowing_dt + dt + end + --Update sprite positions each frame on certain cards to give the illusion of an animated card + if G.P_CENTERS and G.P_CENTERS.c_cry_pointer and cry_pointer_dt > 0.5 then + cry_pointer_dt = 0 + local pointerobj = G.P_CENTERS.c_cry_pointer + pointerobj.pos.x = (pointerobj.pos.x == 4) and 5 or 4 + end + if G.P_CENTERS and G.P_CENTERS.j_cry_jimball and cry_jimball_dt > 0.1 then + cry_jimball_dt = 0 + local jimballobj = G.P_CENTERS.j_cry_jimball + if jimballobj.pos.x == 5 and jimballobj.pos.y == 6 then + jimballobj.pos.x = 0 + jimballobj.pos.y = 0 + elseif jimballobj.pos.x < 8 then + jimballobj.pos.x = jimballobj.pos.x + 1 + elseif jimballobj.pos.y < 6 then + jimballobj.pos.x = 0 + jimballobj.pos.y = jimballobj.pos.y + 1 + end + end + if G.P_CENTERS and G.P_CENTERS.b_cry_glowing and cry_glowing_dt > 0.1 then + cry_glowing_dt = 0 + local glowingobj = G.P_CENTERS.b_cry_glowing + if glowingobj.pos.x == 1 and glowingobj.pos.y == 4 then + glowingobj.pos.x = 0 + glowingobj.pos.y = 0 + elseif glowingobj.pos.x < 4 then + glowingobj.pos.x = glowingobj.pos.x + 1 + elseif glowingobj.pos.y < 6 then + glowingobj.pos.x = 0 + glowingobj.pos.y = glowingobj.pos.y + 1 + end + end + for k, v in pairs(G.I.CARD) do + if v.children.back and v.children.back.atlas.name == "cry_glowing" then + v.children.back:set_sprite_pos(G.P_CENTERS.b_cry_glowing.pos or G.P_CENTERS["b_red"].pos) + end + end + if not G.OVERLAY_MENU and not G.CHOOSE_CARD and G.GAME.USING_POINTER then + G.CHOOSE_CARD = UIBox({ + definition = create_UIBox_pointer(card), + config = { + align = "cm", + offset = { x = 0, y = 10 }, + major = G.ROOM_ATTACH, + bond = "Weak", + instance_type = "POPUP", + }, + }) + G.CHOOSE_CARD.alignment.offset.y = 0 + G.ROOM.jiggle = G.ROOM.jiggle + 1 + G.CHOOSE_CARD:align_to_major() + end + + --Increase the blind size for The Clock and Lavender Loop + local choices = { "Small", "Big", "Boss" } + G.GAME.CRY_BLINDS = G.GAME.CRY_BLINDS or {} + for _, c in pairs(choices) do + if + G.GAME + and G.GAME.round_resets + and G.GAME.round_resets.blind_choices + and G.GAME.round_resets.blind_choices[c] + and G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].cry_ante_base_mod + then + if + G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult ~= 0 + and G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult_ante ~= G.GAME.round_resets.ante + then + if G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].name == "cry-Obsidian Orb" then + for i = 1, #G.GAME.defeated_blinds do + G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult = G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult + * G.P_BLINDS[G.GAME.defeated_blinds[i]] + / 2 + end + else + G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult = 0 + end + G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult_ante = G.GAME.round_resets.ante + end + if + G.GAME.round_resets.blind_states[c] ~= "Current" + and G.GAME.round_resets.blind_states[c] ~= "Defeated" + then + G.GAME.CRY_BLINDS[c] = (G.GAME.CRY_BLINDS[c] or G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].mult) + + ( + G.P_BLINDS[G.GAME.round_resets.blind_choices[c]].cry_ante_base_mod + and G.P_BLINDS[G.GAME.round_resets.blind_choices[c]]:cry_ante_base_mod( + dt * (G.GAME.modifiers.cry_rush_hour_iii and 2 or 1) + ) + or 0 + ) + --Update UI + --todo: in blinds screen, too + if G.blind_select_opts then + local blind_UI = G.blind_select_opts[string.lower(c)].definition.nodes[1].nodes[1].nodes[1].nodes[1] + local chip_text_node = blind_UI.nodes[1].nodes[3].nodes[1].nodes[2].nodes[2].nodes[3] + if chip_text_node then + chip_text_node.config.text = number_format( + get_blind_amount(G.GAME.round_resets.blind_ante) + * G.GAME.starting_params.ante_scaling + * G.GAME.CRY_BLINDS[c] + ) + chip_text_node.config.scale = score_number_scale( + 0.9, + get_blind_amount(G.GAME.round_resets.blind_ante) + * G.GAME.starting_params.ante_scaling + * G.GAME.CRY_BLINDS[c] + ) + end + G.blind_select_opts[string.lower(c)]:recalculate() + end + elseif + G.GAME.round_resets.blind_states[c] ~= "Defeated" + and not G.GAME.blind.disabled + and to_big(G.GAME.chips) < to_big(G.GAME.blind.chips) + then + G.GAME.blind.chips = G.GAME.blind.chips + + G.GAME.blind:cry_ante_base_mod(dt * (G.GAME.modifiers.cry_rush_hour_iii and 2 or 1)) + * get_blind_amount(G.GAME.round_resets.ante) + * G.GAME.starting_params.ante_scaling + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + end + end + if + G.GAME.round_resets.blind_states[c] == "Current" + and G.GAME + and G.GAME.blind + and not G.GAME.blind.disabled + and to_big(G.GAME.chips) < to_big(G.GAME.blind.chips) + then + G.GAME.blind.chips = G.GAME.blind.chips + * ( + G.GAME.blind.cry_round_base_mod + and G.GAME.blind:cry_round_base_mod(dt * (G.GAME.modifiers.cry_rush_hour_iii and 2 or 1)) + or 1 + ) + G.GAME.blind.chip_text = number_format(G.GAME.blind.chips) + end + end +end + +-- All the scattered set_cost hooks from all the pre refactor files moved into one hook +local sc = Card.set_cost +function Card:set_cost() + -- Makes the edition cost increase usually present not apply if this variable is true + -- Used for some of the Jen's almanac edition decks because having the price increase apply was "unfun" + if self.edition and G.GAME.modifiers.cry_no_edition_price then + local m = cry_deep_copy(self.edition) + self.edition = nil + sc(self) + self.edition = m + else + sc(self) + end + --Makes cube and Big Cube always cost a set amount + if self.ability.name == "cry-Cube" then + if Card.get_gameset(self) ~= "modest" then + self.cost = -27 + else + self.cost = -12 + end + end + if self.ability.name == "cry-Big Cube" then + self.cost = 27 + end + + --Multiplies voucher cost by G.GAME.modifiers.cry_voucher_price_hike + --Used by bronze stake to make vouchers %50 more expensive + 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 + + --Makes Cursed Jokers always sell for $0 + if self.config and self.config.center and self.config.center.rarity == "cry_cursed" then + self.sell_cost = 0 + self.sell_cost_label = 0 + end +end + +-- Modify to display badges for credits and some gameset badges +-- todo: make this optional +local smcmb = SMODS.create_mod_badges +function SMODS.create_mod_badges(obj, badges) + smcmb(obj, badges) + if not SMODS.config.no_mod_badges and obj and obj.cry_credits then + local function calc_scale_fac(text) + local size = 0.9 + local font = G.LANG.font + local max_text_width = 2 - 2 * 0.05 - 4 * 0.03 * size - 2 * 0.03 + local calced_text_width = 0 + -- Math reproduced from DynaText:update_text + for _, c in utf8.chars(text) do + local tx = font.FONT:getWidth(c) * (0.33 * size) * G.TILESCALE * font.FONTSCALE + + 2.7 * 1 * G.TILESCALE * font.FONTSCALE + calced_text_width = calced_text_width + tx / (G.TILESIZE * G.TILESCALE) + end + local scale_fac = calced_text_width > max_text_width and max_text_width / calced_text_width or 1 + return scale_fac + end + if obj.cry_credits.art or obj.cry_credits.code or obj.cry_credits.idea then + local scale_fac = {} + local min_scale_fac = 1 + local strings = { "Cryptid" } + for _, v in ipairs({ "idea", "art", "code" }) do + if obj.cry_credits[v] then + for i = 1, #obj.cry_credits[v] do + strings[#strings + 1] = + localize({ type = "variable", key = "cry_" .. v, vars = { obj.cry_credits[v][i] } })[1] + end + end + end + for i = 1, #strings do + scale_fac[i] = calc_scale_fac(strings[i]) + min_scale_fac = math.min(min_scale_fac, scale_fac[i]) + end + local ct = {} + for i = 1, #strings do + ct[i] = { + string = strings[i], + } + end + local cry_badge = { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + { + n = G.UIT.R, + config = { + align = "cm", + colour = G.C.CRY_EXOTIC, + r = 0.1, + minw = 2 / min_scale_fac, + minh = 0.36, + emboss = 0.05, + padding = 0.03 * 0.9, + }, + nodes = { + { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, + { + n = G.UIT.O, + config = { + object = DynaText({ + string = ct or "ERROR", + colours = { obj.cry_credits and obj.cry_credits.text_colour or G.C.WHITE }, + silent = true, + float = true, + shadow = true, + offset_y = -0.03, + spacing = 1, + scale = 0.33 * 0.9, + }), + }, + }, + { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, + }, + }, + }, + } + local function eq_col(x, y) + for i = 1, 4 do + if x[1] ~= y[1] then + return false + end + end + return true + end + for i = 1, #badges do + if eq_col(badges[i].nodes[1].config.colour, HEX("708b91")) then + badges[i].nodes[1].nodes[2].config.object:remove() + badges[i] = cry_badge + break + end + end + end + if obj.cry_credits.jolly then + local scale_fac = {} + local min_scale_fac = 1 + for i = 1, #obj.cry_credits.jolly do + scale_fac[i] = calc_scale_fac(obj.cry_credits.jolly[i]) + min_scale_fac = math.min(min_scale_fac, scale_fac[i]) + end + local ct = {} + for i = 1, #obj.cry_credits.jolly do + ct[i] = { + string = obj.cry_credits.jolly[i], + } + end + badges[#badges + 1] = { + n = G.UIT.R, + config = { align = "cm" }, + nodes = { + { + n = G.UIT.R, + config = { + align = "cm", + colour = G.C.CRY_JOLLY, + r = 0.1, + minw = 2, + minh = 0.36, + emboss = 0.05, + padding = 0.03 * 0.9, + }, + nodes = { + { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, + { + n = G.UIT.O, + config = { + object = DynaText({ + string = ct or "ERROR", + colours = { obj.cry_credits and obj.cry_credits.text_colour_jolly or G.C.WHITE }, + silent = true, + float = true, + shadow = true, + offset_y = -0.03, + spacing = 1, + scale = 0.33 * 0.9, + }), + }, + }, + { n = G.UIT.B, config = { h = 0.1, w = 0.03 } }, + }, + }, + }, + } + end + end + if safe_get(G, "ACTIVE_MOD_UI", "id") == "Cryptid" and obj and not obj.force_gameset then + local set = cry_get_gameset(obj) + if set == "disabled" or obj.set == "Content Set" then + return + end + local card_type = localize("cry_gameset_" .. cry_get_gameset(obj)) + if card_type == "ERROR" then + card_type = localize("cry_gameset_custom") + end + badges[#badges + 1] = create_badge( + card_type, + set == "modest" and G.C.GREEN + or set == "mainline" and G.C.RED + or set == "madness" and G.C.CRY_EXOTIC + or G.C.CRY_ASCENDANT + ) + end +end + +-- This is short enough that I'm fine overriding it +function calculate_reroll_cost(skip_increment) + if G.GAME.current_round.free_rerolls < 0 then + G.GAME.current_round.free_rerolls = 0 + end + if next(find_joker("cry-crustulum")) or G.GAME.current_round.free_rerolls > 0 then + G.GAME.current_round.reroll_cost = 0 + return + end + if next(find_joker("cry-candybuttons")) then + G.GAME.current_round.reroll_cost = 1 + return + end + if G.GAME.used_vouchers.v_cry_rerollexchange then + G.GAME.current_round.reroll_cost = 2 + return + end + G.GAME.current_round.reroll_cost_increase = G.GAME.current_round.reroll_cost_increase or 0 + if not skip_increment then + G.GAME.current_round.reroll_cost_increase = G.GAME.current_round.reroll_cost_increase + + (G.GAME.modifiers.cry_reroll_scaling or 1) + end + G.GAME.current_round.reroll_cost = (G.GAME.round_resets.temp_reroll_cost or G.GAME.round_resets.reroll_cost) + + G.GAME.current_round.reroll_cost_increase +end + +-- We're modifying so much of this for Brown and Yellow Stake, Equilibrium Deck, etc. that it's fine to override... +function create_card(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append) + local area = area or G.jokers + local pseudo = function(x) + return pseudorandom(pseudoseed(x)) + end + local ps = pseudoseed + if area == "ERROR" then + pseudo = function(x) + return pseudorandom(predict_pseudoseed(x)) + end + ps = predict_pseudoseed + end + local center = G.P_CENTERS.b_red + if (_type == "Joker") and G.GAME and G.GAME.modifiers and G.GAME.modifiers.all_rnj then + forced_key = "j_cry_rnjoker" + end + local function aeqviable(center) + return center.unlocked + and not center_no(center, "doe") + and not center_no(center, "aeq") + and not (center.rarity == 6 or center.rarity == "cry_exotic") + end + if _type == "Joker" and not _rarity and not legendary then + if not G.GAME.aequilibriumkey then + G.GAME.aequilibriumkey = 1 + end + local aeqactive = nil + if next(find_joker("Ace Aequilibrium")) and not forced_key then + while not aeqactive or not aeqviable(G.P_CENTER_POOLS.Joker[aeqactive]) do + if math.ceil(G.GAME.aequilibriumkey) > #G.P_CENTER_POOLS["Joker"] then + G.GAME.aequilibriumkey = 1 + end + aeqactive = math.ceil(G.GAME.aequilibriumkey) + G.GAME.aequilibriumkey = math.ceil(G.GAME.aequilibriumkey + 1) + end + end + if aeqactive then + forced_key = G.P_CENTER_POOLS["Joker"][aeqactive].key + end + end + --should pool be skipped with a forced key + if not forced_key and soulable and not G.GAME.banned_keys["c_soul"] then + for _, v in ipairs(SMODS.Consumable.legendaries) do + if + (_type == v.type.key or _type == v.soul_set) + and not (G.GAME.used_jokers[v.key] and not next(find_joker("Showman")) and not v.can_repeat_soul) + then + if pseudo("soul_" .. v.key .. _type .. G.GAME.round_resets.ante) > (1 - v.soul_rate) then + forced_key = v.key + end + end + end + if + (_type == "Tarot" or _type == "Spectral" or _type == "Tarot_Planet") + and not (G.GAME.used_jokers["c_soul"] and not next(find_joker("Showman"))) + then + if pseudo("soul_" .. _type .. G.GAME.round_resets.ante) > 0.997 then + forced_key = "c_soul" + end + end + if + (_type == "Planet" or _type == "Spectral") + and not (G.GAME.used_jokers["c_black_hole"] and not next(find_joker("Showman"))) + then + if pseudo("soul_" .. _type .. G.GAME.round_resets.ante) > 0.997 then + forced_key = "c_black_hole" + end + end + end + + if _type == "Base" then + forced_key = "c_base" + end + + if forced_key then --vanilla behavior change, mainly for M Joker reasons + center = G.P_CENTERS[forced_key] + _type = (center.set ~= "Default" and center.set or _type) + else + gcparea = area + local _pool, _pool_key = get_current_pool(_type, _rarity, legendary, key_append) + gcparea = nil + center = pseudorandom_element(_pool, ps(_pool_key)) + local it = 1 + while center == "UNAVAILABLE" do + it = it + 1 + center = pseudorandom_element(_pool, ps(_pool_key .. "_resample" .. it)) + end + + center = G.P_CENTERS[center] + end + + local front = ( + (_type == "Base" or _type == "Enhanced") + and pseudorandom_element(G.P_CARDS, ps("front" .. (key_append or "") .. G.GAME.round_resets.ante)) + ) or nil + + if area == "ERROR" then + local ret = (front or center) + if not ret.config then + ret.config = {} + end + if not ret.config.center then + ret.config.center = {} + end + if not ret.config.center.key then + ret.config.center.key = "" + end + if not ret.ability then + ret.ability = {} + end + return ret --the config.center.key stuff prevents a crash with Jen's Almanac hook + end + + local card = Card( + area and (area.T.x + area.T.w / 2) or 0, + area and area.T.y or 0, + G.CARD_W * (center and center.set == "Booster" and 1.27 or 1), + G.CARD_H * (center and center.set == "Booster" and 1.27 or 1), + front, + center, + { + bypass_discovery_center = area == G.shop_jokers + or area == G.pack_cards + or area == G.shop_vouchers + or (G.shop_demo and area == G.shop_demo) + or area == G.jokers + or area == G.consumeables, + bypass_discovery_ui = area == G.shop_jokers + or area == G.pack_cards + or area == G.shop_vouchers + or (G.shop_demo and area == G.shop_demo), + discover = area == G.jokers or area == G.consumeables, + bypass_back = G.GAME.selected_back.pos, + } + ) + if front and G.GAME.modifiers.cry_force_suit then + card:change_suit(G.GAME.modifiers.cry_force_suit) + end + if front and G.GAME.modifiers.cry_force_enhancement then + card:set_ability(G.P_CENTERS[G.GAME.modifiers.cry_force_enhancement]) + end + if front and G.GAME.modifiers.cry_force_edition then + card:set_edition({ [G.GAME.modifiers.cry_force_edition] = true }, true, true) + end + if front and G.GAME.modifiers.cry_force_seal then + card:set_seal(G.GAME.modifiers.cry_force_seal) + end + if card.ability.consumeable and not skip_materialize then + card:start_materialize() + end + for k, v in ipairs(SMODS.Sticker.obj_buffer) do + local sticker = SMODS.Stickers[v] + if + sticker.should_apply + and type(sticker.should_apply) == "function" + and sticker:should_apply(card, center, area) + then + sticker:apply(card, true) + end + end + if + G.GAME.modifiers.cry_force_sticker == "eternal" + or ( + G.GAME.modifiers.cry_sticker_sheet_plus + and not ( + (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) + ) + ) + then -- wow that is long + card:set_eternal(true) + card.ability.eternal = true + end + if + G.GAME.modifiers.cry_force_sticker == "perishable" + or ( + G.GAME.modifiers.cry_sticker_sheet_plus + and not ( + (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) + ) + ) + then + card:set_perishable(true) + card.ability.perish_tally = G.GAME.perishable_rounds -- set_perishable should be doing this? whatever + card.ability.perishable = true + end + if + G.GAME.modifiers.cry_force_sticker == "rental" + or ( + G.GAME.modifiers.cry_sticker_sheet_plus + and not ( + (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) + ) + ) + then + card:set_rental(true) + card.ability.rental = true + end + if + G.GAME.modifiers.cry_force_sticker == "pinned" + or ( + G.GAME.modifiers.cry_sticker_sheet_plus + and not ( + (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) + ) + ) + then + card.pinned = true + end + if + G.GAME.modifiers.cry_force_sticker == "banana" + or ( + G.GAME.modifiers.cry_sticker_sheet_plus + and not ( + (_type == "Base" or _type == "Enhanced") and not ((area == G.shop_jokers) or (area == G.pack_cards)) + ) + ) + then + card.ability.banana = true + end + if G.GAME.modifiers.cry_sticker_sheet_plus and not (_type == "Base" or _type == "Enhanced") then + for k, v in pairs(SMODS.Stickers) do + if v.apply and not v.no_sticker_sheet then + v:apply(card, true) + end + end + end + + if card.ability.name == "cry-Cube" then + card:set_eternal(true) + end + if _type == "Joker" or (G.GAME.modifiers.cry_any_stickers and not G.GAME.modifiers.cry_sticker_sheet) then + if G.GAME.modifiers.all_eternal then + card:set_eternal(true) + end + if G.GAME.modifiers.cry_all_perishable then + card:set_perishable(true) + end + if G.GAME.modifiers.cry_all_rental then + card:set_rental(true) + end + if G.GAME.modifiers.cry_all_pinned then + card.pinned = true + end + if G.GAME.modifiers.cry_all_banana then + card.ability.banana = true + end + if (area == G.shop_jokers) or (area == G.pack_cards) then + local eternal_perishable_poll = pseudorandom("cry_et" .. (key_append or "") .. G.GAME.round_resets.ante) + if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 then + card:set_eternal(true) + end + if G.GAME.modifiers.enable_perishables_in_shop then + if + not G.GAME.modifiers.cry_eternal_perishable_compat + and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) + then + card:set_perishable(true) + end + if + G.GAME.modifiers.cry_eternal_perishable_compat + and pseudorandom("cry_per" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 + then + card:set_perishable(true) + end + end + if + G.GAME.modifiers.enable_rentals_in_shop + and pseudorandom("cry_ssjr" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 + then + card:set_rental(true) + end + if + G.GAME.modifiers.cry_enable_pinned_in_shop + and pseudorandom("cry_pin" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 + then + card.pinned = true + end + if + not G.GAME.modifiers.cry_eternal_perishable_compat + and G.GAME.modifiers.enable_banana + and (pseudorandom("cry_banana" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7) + and (eternal_perishable_poll <= 0.7) + then + card.ability.banana = true + end + if + G.GAME.modifiers.cry_eternal_perishable_compat + and G.GAME.modifiers.enable_banana + and (pseudorandom("cry_banana" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7) + then + card.ability.banana = true + end + if G.GAME.modifiers.cry_sticker_sheet then + for k, v in pairs(SMODS.Stickers) do + if v.apply and not v.no_sticker_sheet then + v:apply(card, true) + end + end + end + if + not card.ability.eternal + and G.GAME.modifiers.cry_enable_flipped_in_shop + and pseudorandom("cry_flip" .. (key_append or "") .. G.GAME.round_resets.ante) > 0.7 + then + card.cry_flipped = true + end + end + if _type == "Joker" and not G.GAME.modifiers.cry_force_edition then + local edition = poll_edition("edi" .. (key_append or "") .. G.GAME.round_resets.ante) + card:set_edition(edition) + check_for_unlock({ type = "have_edition" }) + end + end + if + (card.ability.set == "Code") + and G.GAME.used_vouchers.v_cry_quantum_computing + and pseudorandom("cry_quantum_computing") > 0.7 + then + card:set_edition({ negative = true }) + end + if + G.GAME.modifiers.cry_force_edition + and not G.GAME.modifiers.cry_force_random_edition + and area ~= G.pack_cards + then + card:set_edition(nil, true) + end + if G.GAME.modifiers.cry_force_random_edition and area ~= G.pack_cards then + local edition = cry_poll_random_edition() + card:set_edition(edition, true) + end + if not (card.edition and (card.edition.cry_oversat or card.edition.cry_glitched)) then + cry_misprintize(card) + end + if _type == "Joker" and G.GAME.modifiers.cry_common_value_quad then + if card.config.center.rarity == 1 then + cry_misprintize(card, { min = 4, max = 4 }, nil, true) + end + end + if card.ability.consumeable and card.pinned then -- counterpart is in Sticker.toml + G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables + 0 + end + if next(find_joker("Cry-topGear")) and card.config.center.rarity == 1 then + if + card.ability.name ~= "cry-meteor" + and card.ability.name ~= "cry-exoplanet" + and card.ability.name ~= "cry-stardust" + and card.ability.name ~= "cry-universe" + then + card:set_edition("e_polychrome", true, nil, true) + end + end + if card.ability.name == "cry-meteor" then + card:set_edition("e_foil", true, nil, true) + end + if card.ability.name == "cry-exoplanet" then + card:set_edition("e_holo", true, nil, true) + end + if card.ability.name == "cry-stardust" then + card:set_edition("e_polychrome", true, nil, true) + end + if card.ability.name == "cry-universe" then + card:set_edition("e_cry_astral", true, nil, true) + end + -- Certain jokers such as Steel Joker and Driver's License depend on values set + -- during the update function. Cryptid can create jokers mid-scoring, meaning + -- those values will be unset during scoring unless update() is manually called. + card:update(0.016) -- dt is unused in the base game, but we're providing a realistic value anyway + + --Debuff jokers if certain boss blinds are active + if _type == "Joker" and G.GAME and G.GAME.blind and not G.GAME.blind.disabled then + if + G.GAME.blind.name == "cry-box" + or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_box"] == true) + then + if card.config.center.rarity == 1 and not card.debuff then + card.debuff = true + card.debuffed_by_blind = true + end + end + if + G.GAME.blind.name == "cry-windmill" + or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_windmill"] == true) + then + if card.config.center.rarity == 2 and not card.debuff then + card.debuff = true + card.debuffed_by_blind = true + end + end + if + G.GAME.blind.name == "cry-striker" + or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_striker"] == true) + then + if card.config.center.rarity == 3 and not card.debuff then + card.debuff = true + card.debuffed_by_blind = true + end + end + if + G.GAME.blind.name == "cry-shackle" + or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_shackle"] == true) + then + if (card.edition and card.edition.negative == true) and not card.debuff then + card.debuff = true + card.debuffed_by_blind = true + end + end + if + G.GAME.blind.name == "cry-pin" + or (G.GAME.blind.name == "cry-Obsidian Orb" and G.GAME.defeated_blinds["bl_cry_pin"] == true) + then + if + card.config.center.rarity ~= 3 + and card.config.center.rarity ~= 2 + and card.config.center.rarity ~= 1 + and card.config.center.rarity ~= 5 + then + card.debuff = true + card.debuffed_by_blind = true + end + end + end + return card +end + +-- Make tags fit if there's more than 13 of them +-- These two overrides modify the offset to squeeze in more tags when needed +local at = add_tag +function add_tag(tag) + at(tag) + if #G.HUD_tags > 13 then + for i = 2, #G.HUD_tags do + G.HUD_tags[i].config.offset.y = 0.9 - 0.9 * 13 / #G.HUD_tags + end + end +end + +local tr = Tag.remove +function Tag:remove() + tr(self) + if #G.HUD_tags >= 13 then + for i = 2, #G.HUD_tags do + G.HUD_tags[i].config.offset.y = 0.9 - 0.9 * 13 / #G.HUD_tags + end + end +end + +--add calculation context and callback to tag function +--used for Energia, etc. +local at2 = add_tag +function add_tag(tag, from_skip, no_copy) + if no_copy then + at2(tag) + return + end + local added_tags = 1 + local ret = {} + SMODS.calculate_context({ cry_add_tag = true }, ret) + for i = 1, #ret do + if ret[i].jokers then + added_tags = added_tags + (ret[i].jokers.tags or 0) + end + end + if added_tags >= 1 then + at2(tag) + end + for i = 2, added_tags do + local ab = copy_table(G.GAME.tags[#G.GAME.tags].ability) + local new_tag = Tag(tag.key) + at2(new_tag) + new_tag.ability = ab + end +end + +-- I don't remember exactly what this patch was for, perhaps issues with syncing hand size with jokers like Effarcire? +local nr = new_round +function new_round() + G.hand:change_size(0) + nr() +end + +-- These allow jokers that add joker slots to be obtained even without room, like with Negative Jokers in vanilla +local gfcfbs = G.FUNCS.check_for_buy_space +G.FUNCS.check_for_buy_space = function(card) + if + (card.ability.name == "cry-Negative Joker" and card.ability.extra >= 1) + or (card.ability.name == "cry-soccer" and card.ability.extra.holygrail >= 1) + or (card.ability.name == "cry-Tenebris" and card.ability.extra.slots >= 1) + then + return true + end + return gfcfbs(card) +end + +local gfcsc = G.FUNCS.can_select_card +G.FUNCS.can_select_card = function(e) + if + (e.config.ref_table.ability.name == "cry-Negative Joker" and e.config.ref_table.ability.extra >= 1) + or (e.config.ref_table.ability.name == "cry-soccer" and e.config.ref_table.ability.extra.holygrail >= 1) + or (e.config.ref_table.ability.name == "cry-Tenebris" and e.config.ref_table.ability.extra.slots >= 1) + then + e.config.colour = G.C.GREEN + e.config.button = "use_card" + else + gfcsc(e) + end +end + +--Cryptid (THE MOD) localization +local function parse_loc_txt(center) + center.text_parsed = {} + if not center.text then + else + for _, line in ipairs(center.text) do + center.text_parsed[#center.text_parsed + 1] = loc_parse_string(line) + end + center.name_parsed = {} + for _, line in ipairs(type(center.name) == "table" and center.name or { center.name }) do + center.name_parsed[#center.name_parsed + 1] = loc_parse_string(line) + end + if center.unlock then + center.unlock_parsed = {} + for _, line in ipairs(center.unlock) do + center.unlock_parsed[#center.unlock_parsed + 1] = loc_parse_string(line) + end + end + end +end +local il = init_localization +function init_localization() + if G.SETTINGS.language == "en-us" then + G.localization.descriptions.Spectral.c_cryptid.text[2] = "{C:attention}#2#{} selected card" + G.localization.descriptions.Spectral.c_talisman.text[2] = "to {C:attention}#1#{} selected" + G.localization.descriptions.Spectral.c_trance.text[2] = "to {C:attention}#1#{} selected" + G.localization.descriptions.Spectral.c_medium.text[2] = "to {C:attention}#1#{} selected" + G.localization.descriptions.Spectral.c_deja_vu.text[2] = "to {C:attention}#1#{} selected" + G.localization.descriptions.Spectral.c_deja_vu.text[2] = "to {C:attention}#1#{} selected" + G.localization.descriptions.Spectral.c_deja_vu.text[2] = "to {C:attention}#1#{} selected" -- why is this done THREE times??? + G.localization.descriptions.Voucher.v_antimatter.text[1] = "{C:dark_edition}+#1#{} Joker Slot" + G.localization.descriptions.Voucher.v_overstock_norm.text[1] = "{C:attention}+#1#{} card slot" + G.localization.descriptions.Voucher.v_overstock_plus.text[1] = "{C:attention}+#1#{} card slot" + G.localization.descriptions.Voucher.v_crystal_ball.text[1] = "{C:attention}+#1#{} consumable slot" + G.localization.descriptions.Joker.j_seance.text[1] = "If {C:attention}played hand{} contains a" -- damnit seance + end + if Cryptid.obj_buffer and Cryptid.obj_buffer.Stake then + for i = 1, #Cryptid.obj_buffer.Stake do + local key = Cryptid.obj_buffer.Stake[i].key + local color = G.localization.descriptions.Stake[key] and G.localization.descriptions.Stake[key].colour + if color then + local sticker_key = key:sub(7) .. "_sticker" + if not G.localization.descriptions.Other[sticker_key] then + G.localization.descriptions.Other[sticker_key] = { + name = localize({ type = "variable", key = "cry_sticker_name", vars = { color } })[1], + text = localize({ + type = "variable", + key = "cry_sticker_desc", + vars = { + color, + "{C:attention}", + "{}", + }, + }), + } + parse_loc_txt(G.localization.descriptions.Other[sticker_key]) + end + end + end + end + il() +end + +--Fix a corrupted game state +function Controller:queue_L_cursor_press(x, y) + if self.locks.frame then + return + end + if G.STATE == G.STATES.SPLASH then + if not G.HUD then + self:key_press("escape") + else + G.STATE = G.STATES.BLIND_SELECT + end + end + self.L_cursor_queue = { x = x, y = y } +end +-- Lemon Trophy's effect +local trophy_mod_mult = mod_mult +function mod_mult(_mult) + hand_chips = hand_chips or 0 + if G.GAME.trophymod then + _mult = math.min(_mult, math.max(hand_chips, 0)) + end + return trophy_mod_mult(_mult) +end +-- Fix a CCD-related crash +local cuc = Card.can_use_consumeable +function Card:can_use_consumeable(any_state, skip_check) + if not self.ability.consumeable then + return false + end + return cuc(self, any_state, skip_check) +end + +-- add second back button to create_UIBox_generic_options +local cuigo = create_UIBox_generic_options +function create_UIBox_generic_options(args) + local ret = cuigo(args) + if args.back2 then + local mainUI = ret.nodes[1].nodes[1].nodes + mainUI[#mainUI + 1] = { + n = G.UIT.R, + config = { + id = args.back2_id or "overlay_menu_back2_button", + align = "cm", + minw = 2.5, + button_delay = args.back2_delay, + padding = 0.1, + r = 0.1, + hover = true, + colour = args.back2_colour or G.C.ORANGE, + button = args.back2_func or "exit_overlay_menu", + shadow = true, + focus_args = { nav = "wide", button = "b", snap_to = args.snap_back2 }, + }, + nodes = { + { + n = G.UIT.R, + config = { align = "cm", padding = 0, no_fill = true }, + nodes = { + { + n = G.UIT.T, + config = { + id = args.back2_id or nil, + text = args.back2_label or localize("b_back"), + scale = 0.5, + colour = G.C.UI.TEXT_LIGHT, + shadow = true, + func = not args.no_pip and "set_button_pip" or nil, + focus_args = not args.no_pip and { button = args.back2_button or "b" } or nil, + }, + }, + }, + }, + }, + } + end + return ret +end diff --git a/Cryptid/localization/de.lua b/Cryptid/localization/de.lua index de68736..b6ba870 100644 --- a/Cryptid/localization/de.lua +++ b/Cryptid/localization/de.lua @@ -1,29 +1,29 @@ --Translation by Foegro return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimaterie Deck", - text = { - "Hat die {C:legendary,E:1}positiven Effekte{}", - "von {C:attention}jedem{} Deck", - }, - }, - b_cry_beta = { - name = "Nostalgisches Deck", - text = { - "{C:attention}Joker{} und {C:attention}Verbrauchgegenstände{}", - "Slots sind {C:attention}zusammengefasst", - "{C:attention}Nostalgische{} Blinds ersetzen", - "ihre neuen Versionen." - }, - }, - b_cry_blank = { - name = "Unbedrucktes Deck", - text = { - "{C:inactive,E:1}Tut nichts?", - }, - }, + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimaterie Deck", + text = { + "Hat die {C:legendary,E:1}positiven Effekte{}", + "von {C:attention}jedem{} Deck", + }, + }, + b_cry_beta = { + name = "Nostalgisches Deck", + text = { + "{C:attention}Joker{} und {C:attention}Verbrauchgegenstände{}", + "Slots sind {C:attention}zusammengefasst", + "{C:attention}Nostalgische{} Blinds ersetzen", + "ihre neuen Versionen.", + }, + }, + b_cry_blank = { + name = "Unbedrucktes Deck", + text = { + "{C:inactive,E:1}Tut nichts?", + }, + }, b_cry_bountiful = { name = "Größzügiges Deck", text = { @@ -31,354 +31,354 @@ return { "{C:attention}Gespielter Hand{} oder {C:attention}Abwurf{}", }, }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Jede Karte ist auch", - "ein {C:attention}zufälliger{} Verbrauchsgegenstand", - }, - }, - b_cry_conveyor = { - name = "Fließband Deck", - text = { - "Joker können {C:attention}nicht{} bewegt werden", - "Am Anfang der Runde,", - "{C:attention}dupliziere{} den rechtesten Joker", - "und {C:attention}zerstöre{} den linkesten Joker", - }, - }, - b_cry_critical = { - name = "Kritisches Deck", - text = { - "Nach jeder gespielten Hand,", - "Chance von {C:green}#1# zu 4{} für {X:dark_edition,C:white} ^2 {} Mult", - "Chance von {C:green}#1# zu 8{} für {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Verschlüsseltes Deck", - text = { - "Starte mit einem {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "und einem {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Nur {C:cry_code}Code Karten{} erscheinen im Shop", - }, - }, - b_cry_equilibrium = { - name = "Deck des Gleichgewichts", - text = { - "Alle Karten haben die", - "{C:attention}selbe Chance{}", - "im Shop aufzutauchen,", - "beginne den Durchlauf mit", - "{C:attention,T:v_overstock_plus}Überbestand Plus", - }, - }, - b_cry_glowing = { - name = "Glühendes Deck", - text = { - "Multipliziere die Werte", - "aller Joker mit {X:dark_edition,C:white} X1.25 {}", - "wenn die Boss Blind besiegt wurde.", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Unendliches Deck", - text = { - "Du kannst {C:attention}unendlich{} viele", - "Karten auswählen.", - "{C:attention}+1{} Handgröße", - }, - }, - b_cry_misprint = { - name = "Fehlgedrucktes Deck", - text = { - "Werte von Karten", - "und Pokerhänden", - "sind {C:attention}zufällig", - }, - }, - b_cry_redeemed = { - name = "Eingelöstes Deck", - text = { - "Wenn ein {C:attention}Gutschein{} gekauft wird,", - "bekomme seine {C:attention}verbesserten Versionen", - }, - }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Jede Karte ist auch", + "ein {C:attention}zufälliger{} Verbrauchsgegenstand", + }, + }, + b_cry_conveyor = { + name = "Fließband Deck", + text = { + "Joker können {C:attention}nicht{} bewegt werden", + "Am Anfang der Runde,", + "{C:attention}dupliziere{} den rechtesten Joker", + "und {C:attention}zerstöre{} den linkesten Joker", + }, + }, + b_cry_critical = { + name = "Kritisches Deck", + text = { + "Nach jeder gespielten Hand,", + "Chance von {C:green}#1# zu 4{} für {X:dark_edition,C:white} ^2 {} Mult", + "Chance von {C:green}#1# zu 8{} für {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Verschlüsseltes Deck", + text = { + "Starte mit einem {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "und einem {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Nur {C:cry_code}Code Karten{} erscheinen im Shop", + }, + }, + b_cry_equilibrium = { + name = "Deck des Gleichgewichts", + text = { + "Alle Karten haben die", + "{C:attention}selbe Chance{}", + "im Shop aufzutauchen,", + "beginne den Durchlauf mit", + "{C:attention,T:v_overstock_plus}Überbestand Plus", + }, + }, + b_cry_glowing = { + name = "Glühendes Deck", + text = { + "Multipliziere die Werte", + "aller Joker mit {X:dark_edition,C:white} X1.25 {}", + "wenn die Boss Blind besiegt wurde.", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Unendliches Deck", + text = { + "Du kannst {C:attention}unendlich{} viele", + "Karten auswählen.", + "{C:attention}+1{} Handgröße", + }, + }, + b_cry_misprint = { + name = "Fehlgedrucktes Deck", + text = { + "Werte von Karten", + "und Pokerhänden", + "sind {C:attention}zufällig", + }, + }, + b_cry_redeemed = { + name = "Eingelöstes Deck", + text = { + "Wenn ein {C:attention}Gutschein{} gekauft wird,", + "bekomme seine {C:attention}verbesserten Versionen", + }, + }, b_cry_spooky = { - name = "Gruseliges Deck", - text = { - "Starte mit einem {C:eternal}Ewigen{} {C:attention,T:j_cry_chocolate_dice}Schokoladenwürfel", - "Nach jeder {C:attention}Ante{}, erstelle eine", - "{C:cry_candy}Süßigkeit{} oder einen {X:cry_cursed,C:white}Verfluchten{} Joker", - } - }, - b_cry_very_fair = { - name = "Sehr Faires Deck", - text = { - "{C:blue}-2{} Hände, {C:red}-2{} Abwürfe", - "jede Runde", - "{C:attention}Gutscheine{} erscheinen", - "nicht mehr im Shop", - }, - }, - b_cry_wormhole = { - name = "Wurmloch Deck", - text = { - "Beginne mit einem {C:cry_exotic}Exotischen{C:attention} Joker", - "Joker sind {C:attention}20X{} warscheinlicher", - "{C:dark_edition}Negativ{} zu sein", - "{C:attention}-2{} Joker-Slots", - }, - }, - b_cry_legendary = { - name = "Legendäres Deck", - text = { - "Beginne mit einem {C:legendary}Legendären{C:legendary} Joker", - "Chance von {C:green}1 in 5{} einen weiteren zu erstellen", + name = "Gruseliges Deck", + text = { + "Starte mit einem {C:eternal}Ewigen{} {C:attention,T:j_cry_chocolate_dice}Schokoladenwürfel", + "Nach jeder {C:attention}Ante{}, erstelle eine", + "{C:cry_candy}Süßigkeit{} oder einen {X:cry_cursed,C:white}Verfluchten{} Joker", + }, + }, + b_cry_very_fair = { + name = "Sehr Faires Deck", + text = { + "{C:blue}-2{} Hände, {C:red}-2{} Abwürfe", + "jede Runde", + "{C:attention}Gutscheine{} erscheinen", + "nicht mehr im Shop", + }, + }, + b_cry_wormhole = { + name = "Wurmloch Deck", + text = { + "Beginne mit einem {C:cry_exotic}Exotischen{C:attention} Joker", + "Joker sind {C:attention}20X{} warscheinlicher", + "{C:dark_edition}Negativ{} zu sein", + "{C:attention}-2{} Joker-Slots", + }, + }, + b_cry_legendary = { + name = "Legendäres Deck", + text = { + "Beginne mit einem {C:legendary}Legendären{C:legendary} Joker", + "Chance von {C:green}1 in 5{} einen weiteren zu erstellen", "wenn Boss Blind besiegt wurde {C:inactive}(Muss Platz haben){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "Die Box", - text = { - "Alle Gewöhnlichen Joker", - "sind geschwächt.", - }, - }, - bl_cry_clock = { - name = "Die Uhr", - text = { - "+0.1X Blindgröße für alle", - "3 Sekunden, die du in dieser Ante verbringst.", - }, - }, - bl_cry_hammer = { - name = "Der Hammer", - text = { - "Alle Karten mit ungeradem", - "Rang sind geschwächt.", - }, - }, - bl_cry_joke = { - name = "Der Witz", - text = { - "Wenn deine Chips mehr als 2x die benötigten sind,", - "setze die Ante zu einer mehrzahl von #1#", - }, - }, - bl_cry_magic = { - name = "Die Magie", - text = { - "Alle Karten mit geradem", - "Rang sind geschwächt", - }, - }, - bl_cry_lavender_loop = { - name = "Lavendelschleife", - text = { - "1.25X Blindgröße für alle", - "1.5 Sekunden, die du in dieser Runde verbringst", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Kugel", - text = { - "Hat die Fähigkeiten", - "aller besiegten Bosse", - }, - }, - bl_cry_oldarm = { - name = "Nostalgischer Arm", - text = { - "Du musst 4 oder weniger", - "Karten spielen", - }, - }, - bl_cry_oldfish = { - name = "Nostalgischer Fisch", - text = { - "Alle Hände starten", - "mit 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgischer Feuerstein", - text = { - "Keine Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgisches Haus", - text = { - "Keine Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgische Handfessel", - text = { - "Dividiere Mult durch Abwürfe", - }, - }, - bl_cry_oldmark = { - name = "Nostalgische Marke", - text = { - "Keine Hände die", - "ein Paar enthalten", - }, - }, - bl_cry_oldox = { - name = "Nostalgischer Ochse", - text = { - "Alle Hände starten", - "mit 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgische Säule", - text = { - "Keine Straßen", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgische Schlange", - text = { - "Dividiere Mult durch das Level", - "der gespielten Poker Hand", - }, - }, - bl_cry_pin = { - name = "Die Stecknadel", - text = { - "Joker mit epischer oder höherer", - "Seltenheit sind geschwächt.", - }, - }, - bl_cry_pinkbow = { - name = "Pinke Schleife", - text = { - "Rang der Karten in der Hand", - "werden beim Spielen einer Hand verzufälligt", - }, - }, - bl_cry_sapphire_stamp = { - name = "Saphirstempel", - text = { - "Du kannst eine weitere Karte auswählen, vor der", - "Auswertung wird die Auswahl einer zufälligen Karte aufgehoben", - }, - }, - bl_cry_shackle = { - name = "Die Schelle", - text = { - "Alle negativen Joker", - "sind geschwächt", - }, - }, - bl_cry_striker = { - name = "Der Stürmer", - text = { - "Alle seltenen Joker", - "sind geschwächt", - }, - }, - bl_cry_tax = { - name = "Die Steuer", - text = { - "Wert einer Hand kann nicht", - "mehr als 0.4 mal das benötigte sein", - }, - }, - bl_cry_tornado = { - name = "Türkiser Tornado", - text = { - "Chance von #1# zu #2#, dass", - "die gespielte Hand nicht gewertet wird", - }, - }, - bl_cry_trick = { - name = "Der Trick", - text = { - "Nach jeder Hand, drehe alle Karten", - "mit dem Gesicht oben in der Hand um", - }, - }, - bl_cry_vermillion_virus = { - name = "Zinnober Virus", - text = { - "Ein zufälliger Joker wird", - "jede Hand ersetzt", - }, - }, - bl_cry_windmill = { - name = "Die Windmühle", - text = { - "Alle ungewöhnlichen Joker", - "sind geschwächt", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Mache {C:cry_code}#1#{} ausgewählte Karte", - "zu einer {C:cry_code}gewählten{} Verstärkung", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Zerstöre einen {C:cry_code}gewählten{} Joker,", - "erstelle einen {C:cry_code}neuen{} Joker", - "mit der {C:cry_code}selben Seltenheit", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Nein", - }, - }, - c_cry_ctrl_v = { - name = "://CTRL+V", - text = { - "Erstelle eine Kopie einer {C:cry_code}gewälten{} Spielkarte oder Gebrauchsgegenstand." + }, + }, }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "Entferne ein {C:cry_code}gewählten{}", - "Shopgegenstand {C:cry_code}permanent{}", - "{C:inactive,s:0.8}Item kann in diesem Durchlauf nicht mehr auftauchen.", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halbiere{} alle gelisteten Preise", - "Im momentanen Shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "Die {C:cry_code}nächste{} gespielte Hand wird", - "gewertet als ob sie eine {C:cry_code}gewählte{} Pokerhand enthält.", - "{C:inactive,s:0.8}Geheime Hände müssen", - "{C:inactive,s:0.8}entdeckt weden um gültig zu sein.", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Wähle zwei Joker", - "die {C:cry_code}Verhackt{} werden", - }, - }, + Blind = { + bl_cry_box = { + name = "Die Box", + text = { + "Alle Gewöhnlichen Joker", + "sind geschwächt.", + }, + }, + bl_cry_clock = { + name = "Die Uhr", + text = { + "+0.1X Blindgröße für alle", + "3 Sekunden, die du in dieser Ante verbringst.", + }, + }, + bl_cry_hammer = { + name = "Der Hammer", + text = { + "Alle Karten mit ungeradem", + "Rang sind geschwächt.", + }, + }, + bl_cry_joke = { + name = "Der Witz", + text = { + "Wenn deine Chips mehr als 2x die benötigten sind,", + "setze die Ante zu einer mehrzahl von #1#", + }, + }, + bl_cry_magic = { + name = "Die Magie", + text = { + "Alle Karten mit geradem", + "Rang sind geschwächt", + }, + }, + bl_cry_lavender_loop = { + name = "Lavendelschleife", + text = { + "1.25X Blindgröße für alle", + "1.5 Sekunden, die du in dieser Runde verbringst", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Kugel", + text = { + "Hat die Fähigkeiten", + "aller besiegten Bosse", + }, + }, + bl_cry_oldarm = { + name = "Nostalgischer Arm", + text = { + "Du musst 4 oder weniger", + "Karten spielen", + }, + }, + bl_cry_oldfish = { + name = "Nostalgischer Fisch", + text = { + "Alle Hände starten", + "mit 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgischer Feuerstein", + text = { + "Keine Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgisches Haus", + text = { + "Keine Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgische Handfessel", + text = { + "Dividiere Mult durch Abwürfe", + }, + }, + bl_cry_oldmark = { + name = "Nostalgische Marke", + text = { + "Keine Hände die", + "ein Paar enthalten", + }, + }, + bl_cry_oldox = { + name = "Nostalgischer Ochse", + text = { + "Alle Hände starten", + "mit 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgische Säule", + text = { + "Keine Straßen", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgische Schlange", + text = { + "Dividiere Mult durch das Level", + "der gespielten Poker Hand", + }, + }, + bl_cry_pin = { + name = "Die Stecknadel", + text = { + "Joker mit epischer oder höherer", + "Seltenheit sind geschwächt.", + }, + }, + bl_cry_pinkbow = { + name = "Pinke Schleife", + text = { + "Rang der Karten in der Hand", + "werden beim Spielen einer Hand verzufälligt", + }, + }, + bl_cry_sapphire_stamp = { + name = "Saphirstempel", + text = { + "Du kannst eine weitere Karte auswählen, vor der", + "Auswertung wird die Auswahl einer zufälligen Karte aufgehoben", + }, + }, + bl_cry_shackle = { + name = "Die Schelle", + text = { + "Alle negativen Joker", + "sind geschwächt", + }, + }, + bl_cry_striker = { + name = "Der Stürmer", + text = { + "Alle seltenen Joker", + "sind geschwächt", + }, + }, + bl_cry_tax = { + name = "Die Steuer", + text = { + "Wert einer Hand kann nicht", + "mehr als 0.4 mal das benötigte sein", + }, + }, + bl_cry_tornado = { + name = "Türkiser Tornado", + text = { + "Chance von #1# zu #2#, dass", + "die gespielte Hand nicht gewertet wird", + }, + }, + bl_cry_trick = { + name = "Der Trick", + text = { + "Nach jeder Hand, drehe alle Karten", + "mit dem Gesicht oben in der Hand um", + }, + }, + bl_cry_vermillion_virus = { + name = "Zinnober Virus", + text = { + "Ein zufälliger Joker wird", + "jede Hand ersetzt", + }, + }, + bl_cry_windmill = { + name = "Die Windmühle", + text = { + "Alle ungewöhnlichen Joker", + "sind geschwächt", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Mache {C:cry_code}#1#{} ausgewählte Karte", + "zu einer {C:cry_code}gewählten{} Verstärkung", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Zerstöre einen {C:cry_code}gewählten{} Joker,", + "erstelle einen {C:cry_code}neuen{} Joker", + "mit der {C:cry_code}selben Seltenheit", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Nein", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Erstelle eine Kopie einer {C:cry_code}gewälten{} Spielkarte oder Gebrauchsgegenstand.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "Entferne ein {C:cry_code}gewählten{}", + "Shopgegenstand {C:cry_code}permanent{}", + "{C:inactive,s:0.8}Item kann in diesem Durchlauf nicht mehr auftauchen.", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halbiere{} alle gelisteten Preise", + "Im momentanen Shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "Die {C:cry_code}nächste{} gespielte Hand wird", + "gewertet als ob sie eine {C:cry_code}gewählte{} Pokerhand enthält.", + "{C:inactive,s:0.8}Geheime Hände müssen", + "{C:inactive,s:0.8}entdeckt weden um gültig zu sein.", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Wähle zwei Joker", + "die {C:cry_code}Verhackt{} werden", + }, + }, c_cry_inst = { name = "://INSTANTIATE", text = { @@ -387,718 +387,718 @@ return { "{C:inactive}(Wenn möglich){}", }, }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Füge {C:dark_edition}Fehlerhaft{} zu allen", "Karten {C:cry_code}in der Hand{} hinzu" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Verschmelze ein gewählten {C:cry_code}Verbrauchsgegenstand", - "mit einer gewählten {C:cry_code}Spielkarte", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Verdopple{} alle Werte", - "eines gewählten {C:cry_code}Jokers{} bis", - "zum ende der Runde.", - }, - }, - c_cry_patch = { - name = "://PATCH", - text = { - "Entfernt alle Sticker und Schwächungen von", - "allen momentan sichtbaren Gegenständen", + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Füge {C:dark_edition}Fehlerhaft{} zu allen", "Karten {C:cry_code}in der Hand{} hinzu" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Verschmelze ein gewählten {C:cry_code}Verbrauchsgegenstand", + "mit einer gewählten {C:cry_code}Spielkarte", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Verdopple{} alle Werte", + "eines gewählten {C:cry_code}Jokers{} bis", + "zum ende der Runde.", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Entfernt alle Sticker und Schwächungen von", + "allen momentan sichtbaren Gegenständen", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Nächste besiegte Blind", + "gibt {C:cry_code}X#1#{} Zinsen", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Nächstes {C:cry_code}Booster Packet{} hat", + "{C:cry_code}#1#{} zusätzliche Karte und", + "{C:cry_code}#1#{} zusätzliche Auswahl", + "{C:inactive}(Momentan {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Erfrische {C:blue}Hände{} und {C:red}Abwürfe{},", + "tue {C:cry_code}alle{} Karten zurück ins Deck", + "und ziehe eine {C:cry_code}neue{} Hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Setzt {C:cry_code}Spielstand{} zum", + "Start {C:cry_code}dieser Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Zerstöre einen {C:cry_code}gewählten{} Joker,", + "erstelle einen {C:cry_code}Überarbeitungs-Tag{} mit", + "einer Edition {C:cry_code}besser{}", + "{C:inactive,s:0.8}Nutzt Reinfolge in der Sammlung", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Besuche einen {C:cry_code}Shop", + "während einer {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Wähle einen Joker", + "oder eine Spielkarte", + "um {C:cry_code}Manipuliert{} zu werden", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Enden momentane nicht-Boss {C:cry_code}Blind{}", "{C:cry_code}ohne{} Preisgeld zu bekommen" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Erstelle einen {C:cry_code}Fehlerhaften{}", + "Essen Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Mache {C:cry_code}#1#{} gewählte Karten", + "zu einem {C:cry_code}gewählten{} Rang", + }, + }, }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Nächste besiegte Blind", - "gibt {C:cry_code}X#1#{} Zinsen", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Nächstes {C:cry_code}Booster Packet{} hat", - "{C:cry_code}#1#{} zusätzliche Karte und", - "{C:cry_code}#1#{} zusätzliche Auswahl", - "{C:inactive}(Momentan {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Erfrische {C:blue}Hände{} und {C:red}Abwürfe{},", - "tue {C:cry_code}alle{} Karten zurück ins Deck", - "und ziehe eine {C:cry_code}neue{} Hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Setzt {C:cry_code}Spielstand{} zum", - "Start {C:cry_code}dieser Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Zerstöre einen {C:cry_code}gewählten{} Joker,", - "erstelle einen {C:cry_code}Überarbeitungs-Tag{} mit", - "einer Edition {C:cry_code}besser{}", - "{C:inactive,s:0.8}Nutzt Reinfolge in der Sammlung", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Besuche einen {C:cry_code}Shop", - "während einer {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Wähle einen Joker", - "oder eine Spielkarte", - "um {C:cry_code}Manipuliert{} zu werden", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Enden momentane nicht-Boss {C:cry_code}Blind{}", "{C:cry_code}ohne{} Preisgeld zu bekommen" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Erstelle einen {C:cry_code}Fehlerhaften{}", - "Essen Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Mache {C:cry_code}#1#{} gewählte Karten", - "zu einem {C:cry_code}gewählten{} Rang", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Verschwommen", - text = { - "{C:attention}Löse{} diese Karte", - "{C:attention}1{} mal mehr {C:attention}aus{}", - "Chance von {C:green}#1# zu #2#{}", - "sie {C:attention}#3#{} weiteres", - "mal {C:attention}auszulösen", - }, - }, - e_cry_double_sided = { - name = "Doppelseitig", - text = { - "Diese Karte kann", - "{C:attention}gedreht{} werden um", - "eine andere Karte zu zeigen.", - "{C:inactive}(Leere Seite kann mit anderer", - "{C:inactive}Karte verschmolzen werden)" - }, - }, - e_cry_glass = { - name = "Zerbrechlich", - label = "Zerbrechlich", - text = { - "{C:white,X:mult} X#3# {} Mult", - "Chance von {C:green}#1# zu #2#{}, dass diese", - "Karte beim auslösen", - "{C:attention}nicht{} {C:red}zerstört{} wird", - }, - }, - e_cry_glitched = { - name = "Fehlerhaft", - text = { - "Alle Werte auf dieser Karte sind", - "ein {C:dark_edition}zufälliger{} Wert", - "zwichen {C:attention}X0.1{} und {C:attention}X10{} des originalen.", - "{C:inactive}(Wenn möglich){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Verdiene {C:money}$#1#{} bei Benutzung", - "oder beim Auslösen", - }, - }, - e_cry_m = { - name = "Lustig", - text = { - "{C:mult}+#1#{} Mult", - "Diese Karte fühlt sich", - "ziemlich {C:attention}lustig{}", - }, - }, - e_cry_mosaic = { - name = "Mosaik", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Geräuchvoll", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Übersättigt", - text = { - "Alle Werte", - "auf dieser Karte", - "sind {C:attention}verdoppelt{}", - "{C:inactive}(Wenn möglich)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Karte", - text = { - "Chance von {C:green}#2# zu #3#{} um diese Karte", - "#1# weiteres mal {C:attention}auszulösen{}", - "wenn sie gewertet wird", - }, - }, - }, - Joker = { + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Verschwommen", + text = { + "{C:attention}Löse{} diese Karte", + "{C:attention}1{} mal mehr {C:attention}aus{}", + "Chance von {C:green}#1# zu #2#{}", + "sie {C:attention}#3#{} weiteres", + "mal {C:attention}auszulösen", + }, + }, + e_cry_double_sided = { + name = "Doppelseitig", + text = { + "Diese Karte kann", + "{C:attention}gedreht{} werden um", + "eine andere Karte zu zeigen.", + "{C:inactive}(Leere Seite kann mit anderer", + "{C:inactive}Karte verschmolzen werden)", + }, + }, + e_cry_glass = { + name = "Zerbrechlich", + label = "Zerbrechlich", + text = { + "{C:white,X:mult} X#3# {} Mult", + "Chance von {C:green}#1# zu #2#{}, dass diese", + "Karte beim auslösen", + "{C:attention}nicht{} {C:red}zerstört{} wird", + }, + }, + e_cry_glitched = { + name = "Fehlerhaft", + text = { + "Alle Werte auf dieser Karte sind", + "ein {C:dark_edition}zufälliger{} Wert", + "zwichen {C:attention}X0.1{} und {C:attention}X10{} des originalen.", + "{C:inactive}(Wenn möglich){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Verdiene {C:money}$#1#{} bei Benutzung", + "oder beim Auslösen", + }, + }, + e_cry_m = { + name = "Lustig", + text = { + "{C:mult}+#1#{} Mult", + "Diese Karte fühlt sich", + "ziemlich {C:attention}lustig{}", + }, + }, + e_cry_mosaic = { + name = "Mosaik", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Geräuchvoll", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Übersättigt", + text = { + "Alle Werte", + "auf dieser Karte", + "sind {C:attention}verdoppelt{}", + "{C:inactive}(Wenn möglich)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Karte", + text = { + "Chance von {C:green}#2# zu #3#{} um diese Karte", + "#1# weiteres mal {C:attention}auszulösen{}", + "wenn sie gewertet wird", + }, + }, + }, + Joker = { j_cry_adroit = { - name = "Geschickter Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_altgoogol = { - name = "Nostalgische Googol Play Karte", - text = { - "Verkaufe diese Karte um", - "{C:attention}2{} Kopien von dem linkesten {C:attention}Joker{} zu machen", - "{C:inactive,s:0.8}Kopiert keine Nostalgischen Googol Play Karten{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Wie Antennen zum Himmel", - text = { - "Dieser Joker bekommt", - "{X:chips,C:white} X#1# {} Chips wenn jede", - "gespielte {C:attention}7{} oder {C:attention}4{} gewertet wurde", - "{C:inactive}(Momentan {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult gegen {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Großer Würfel", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Riesig", - text = { - "{X:mult,C:white} X#1# {} Mult bis zum Ende", - "der Runde wenn {C:attention}Pokerhand{}", - "ein {C:attention}#2#{} ist", - "{C:inactive}(Momentan {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}nicht fett, hat nur große Knochen.", - }, - }, + name = "Geschickter Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_altgoogol = { + name = "Nostalgische Googol Play Karte", + text = { + "Verkaufe diese Karte um", + "{C:attention}2{} Kopien von dem linkesten {C:attention}Joker{} zu machen", + "{C:inactive,s:0.8}Kopiert keine Nostalgischen Googol Play Karten{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Wie Antennen zum Himmel", + text = { + "Dieser Joker bekommt", + "{X:chips,C:white} X#1# {} Chips wenn jede", + "gespielte {C:attention}7{} oder {C:attention}4{} gewertet wurde", + "{C:inactive}(Momentan {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult gegen {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Großer Würfel", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Riesig", + text = { + "{X:mult,C:white} X#1# {} Mult bis zum Ende", + "der Runde wenn {C:attention}Pokerhand{}", + "ein {C:attention}#2#{} ist", + "{C:inactive}(Momentan {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}nicht fett, hat nur große Knochen.", + }, + }, j_cry_blacklist = { - name = "Blacklist", - text = { - "Wenn ein(e) {C:attention}#1#{} in der Hand oder gespielt ist,", - "setze {C:chips}Chips{} und {C:mult}Mult{} zu 0", - "{C:red,E:2}zerstört sich selbst{} wenn kein {C:attention}#1#{} im deck ist", - "{C:inactive,s:0.8}Rang ändert sich nicht" - } - }, - j_cry_blender = { - name = "Blender", - text = { - "Erstelle ein {C:attention}zufäligen{}", - "Verbrauchsgegenstand wenn eine", - "{C:cry_code}Code{} Karte benutzt wird.", - "{C:inactive}(Muss Platz haben){}", - }, - }, - j_cry_blurred = { - name = "Verschwommener Joker", - text = { - "Gain {C:blue}+#1#{} Hand/Hände wenn", - "{C:attention}Blind{} ausgewählt wird", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Jeder {C:attention}Joker{} gibt {C:chips}+#1#{} Chips", - "Erhöhe anzahl um {C:chips}+#2#{} wenn", - "{C:attention}Pokerhand{} ein {C:attention}#3#{} ist", - "{C:inactive,s:0.8}Lustige Joker geben statdessen{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips{}", - }, - }, + name = "Blacklist", + text = { + "Wenn ein(e) {C:attention}#1#{} in der Hand oder gespielt ist,", + "setze {C:chips}Chips{} und {C:mult}Mult{} zu 0", + "{C:red,E:2}zerstört sich selbst{} wenn kein {C:attention}#1#{} im deck ist", + "{C:inactive,s:0.8}Rang ändert sich nicht", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Erstelle ein {C:attention}zufäligen{}", + "Verbrauchsgegenstand wenn eine", + "{C:cry_code}Code{} Karte benutzt wird.", + "{C:inactive}(Muss Platz haben){}", + }, + }, + j_cry_blurred = { + name = "Verschwommener Joker", + text = { + "Gain {C:blue}+#1#{} Hand/Hände wenn", + "{C:attention}Blind{} ausgewählt wird", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Jeder {C:attention}Joker{} gibt {C:chips}+#1#{} Chips", + "Erhöhe anzahl um {C:chips}+#2#{} wenn", + "{C:attention}Pokerhand{} ein {C:attention}#3#{} ist", + "{C:inactive,s:0.8}Lustige Joker geben statdessen{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips{}", + }, + }, j_cry_bonkers = { - name = "Bekloppter Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "Chance von {C:green}#1# zu #2#{} für jede", - "gespielte {C:attention}Bonus{} Karte die", - "{C:attention}Joker{} or {C:attention}Verbrauchgegenstand Slots", - "um {C:dark_edition}1{} zu erhöhen wenn sie gewertet werden.", - "{C:red}Funktioniert einmal pro Runde", - "{C:inactive,s:0.8}(Gleiche Chance für beide){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Packet Slot", - "im Shop verfügbar", - }, - }, - j_cry_boredom = { - name = "Lange Weile", - text = { - "Chance von {C:green}#1# zu #2#{} um", - "jeden {C:attention}Joker{} oder jede", - "{C:attention}Spielkarte{} erneut {C:attention}auszulösen{}", - "{C:inactive,s:0.8}Funktioniert nicht auf andere Lange Weilen{}", - }, - }, + name = "Bekloppter Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "Chance von {C:green}#1# zu #2#{} für jede", + "gespielte {C:attention}Bonus{} Karte die", + "{C:attention}Joker{} or {C:attention}Verbrauchgegenstand Slots", + "um {C:dark_edition}1{} zu erhöhen wenn sie gewertet werden.", + "{C:red}Funktioniert einmal pro Runde", + "{C:inactive,s:0.8}(Gleiche Chance für beide){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Packet Slot", + "im Shop verfügbar", + }, + }, + j_cry_boredom = { + name = "Lange Weile", + text = { + "Chance von {C:green}#1# zu #2#{} um", + "jeden {C:attention}Joker{} oder jede", + "{C:attention}Spielkarte{} erneut {C:attention}auszulösen{}", + "{C:inactive,s:0.8}Funktioniert nicht auf andere Lange Weilen{}", + }, + }, j_cry_brittle = { - name = "Zerbrechliche Süßigkeit", - text = { - "Für die nächsten {C:attention}#1#{} Hände,", - "füge {C:attention}Stein{}, {C:attention}Gold{}, oder {C:attention}Stahl{} zu", - "der rechtesten gewerteten Karte hinzu" - } - }, - j_cry_bubblem = { - name = "Blasen M", - text = { - "Erstelle einen {C:dark_edition}Foil {C:attention}Lustigen Joker{}", - "wenn gespielte Hand einen", - "{C:attention}#1#{} enthält.", - "{C:red,E:2}Zerstört sich selbst{}", - }, - }, - j_cry_busdriver = { - name = "Bus Fahrer", - text = { - "Chance von {C:green}#1# zu #3#{}", - "für {C:mult}+#2#{} Mult", - "Chance von {C:green}1 zu 4{}", - "für {C:mult}-#2#{} Mult", - }, - }, + name = "Zerbrechliche Süßigkeit", + text = { + "Für die nächsten {C:attention}#1#{} Hände,", + "füge {C:attention}Stein{}, {C:attention}Gold{}, oder {C:attention}Stahl{} zu", + "der rechtesten gewerteten Karte hinzu", + }, + }, + j_cry_bubblem = { + name = "Blasen M", + text = { + "Erstelle einen {C:dark_edition}Foil {C:attention}Lustigen Joker{}", + "wenn gespielte Hand einen", + "{C:attention}#1#{} enthält.", + "{C:red,E:2}Zerstört sich selbst{}", + }, + }, + j_cry_busdriver = { + name = "Bus Fahrer", + text = { + "Chance von {C:green}#1# zu #3#{}", + "für {C:mult}+#2#{} Mult", + "Chance von {C:green}1 zu 4{}", + "für {C:mult}-#2#{} Mult", + }, + }, j_cry_candy_basket = { - name = "Süßigkeitenkorb", - text = { - "Verkaufe diese Karte up {C:attention}#1#{} {C:cry_candy}Süßigkeiten{} zu erstellen", - "{C:attention}+#2#{} {C:cry_candy}Süßigkeiten{} für alle {C:attention}2{} besiegte Blinds", - "{C:attention}+#3#{} {C:cry_candy}Süßigkeiten{} für jede besiegte {C:attention}Boss Blind{}" - } - }, - j_cry_candy_buttons = { - name = "Süßigkeitenknöpfe", - text = { - "Die nächsten {C:attention}#1#{} Aktualisierungen", - "kosten {C:money}$1{}", - } - }, - j_cry_candy_cane = { - name = "Zuckerstange", - text = { - "Für die nächsten {C:attention}#1#{} Runden,", - "geben gespielte Karten {C:money}$#2#", - "wenn {C:attention}erneut ausgelöst" - } - }, - j_cry_candy_dagger = { - name = "Süßigkeitendolch", - text = { - "Wenn {C:attention}Blind{} ausgewält wurde,", - "zerstöre rechten Joker", - "um eine {C:cry_candy}Süßigkeit{} zu erstellen.", - } - }, - j_cry_candy_sticks = { - name = "Zuckerstöcke", - text = { - "Der Effekt der nächsten Boss Bind ist nicht Aktiv", - "bis {C:attention}#1#{} Hand gespielt wurde.", - } - }, - j_cry_canvas = { - name = "Leinwand", - text = { - "{C:attention}Löse{} alle {C:attention}Jokers{} auf der linken Seite", - "{C:attention}so oft neu aus{} wie du nicht-{C:blue}Gewöhnliche{C:attention} Joker{}", - "auf der rechten Seite hast", - }, - }, - j_cry_caramel = { - name = "Karamel", - text = { - "Jede gespielte Karte gibt", - "{X:mult,C:white}X#1#{} Mult wenn gewertet", - "für die nächsten {C:attention}#2#{} Runden", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Löse {C:attention}linkesten{} Joker", - "{C:attention}#1#{} weitere(s) mal(e) aus", - }, - }, - j_cry_chili_pepper = { - name = "Chilischote", - text = { - "Dieser Joker bekommt {X:mult,C:white} X#2# {} Mult", - "am Ende der Runde,", - "{C:red,E:2}zerstört sich selbst{} nach {C:attention}#3#{} Runden", - "{C:inactive}(Momentan{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, + name = "Süßigkeitenkorb", + text = { + "Verkaufe diese Karte up {C:attention}#1#{} {C:cry_candy}Süßigkeiten{} zu erstellen", + "{C:attention}+#2#{} {C:cry_candy}Süßigkeiten{} für alle {C:attention}2{} besiegte Blinds", + "{C:attention}+#3#{} {C:cry_candy}Süßigkeiten{} für jede besiegte {C:attention}Boss Blind{}", + }, + }, + j_cry_candy_buttons = { + name = "Süßigkeitenknöpfe", + text = { + "Die nächsten {C:attention}#1#{} Aktualisierungen", + "kosten {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Zuckerstange", + text = { + "Für die nächsten {C:attention}#1#{} Runden,", + "geben gespielte Karten {C:money}$#2#", + "wenn {C:attention}erneut ausgelöst", + }, + }, + j_cry_candy_dagger = { + name = "Süßigkeitendolch", + text = { + "Wenn {C:attention}Blind{} ausgewält wurde,", + "zerstöre rechten Joker", + "um eine {C:cry_candy}Süßigkeit{} zu erstellen.", + }, + }, + j_cry_candy_sticks = { + name = "Zuckerstöcke", + text = { + "Der Effekt der nächsten Boss Bind ist nicht Aktiv", + "bis {C:attention}#1#{} Hand gespielt wurde.", + }, + }, + j_cry_canvas = { + name = "Leinwand", + text = { + "{C:attention}Löse{} alle {C:attention}Jokers{} auf der linken Seite", + "{C:attention}so oft neu aus{} wie du nicht-{C:blue}Gewöhnliche{C:attention} Joker{}", + "auf der rechten Seite hast", + }, + }, + j_cry_caramel = { + name = "Karamel", + text = { + "Jede gespielte Karte gibt", + "{X:mult,C:white}X#1#{} Mult wenn gewertet", + "für die nächsten {C:attention}#2#{} Runden", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Löse {C:attention}linkesten{} Joker", + "{C:attention}#1#{} weitere(s) mal(e) aus", + }, + }, + j_cry_chili_pepper = { + name = "Chilischote", + text = { + "Dieser Joker bekommt {X:mult,C:white} X#2# {} Mult", + "am Ende der Runde,", + "{C:red,E:2}zerstört sich selbst{} nach {C:attention}#3#{} Runden", + "{C:inactive}(Momentan{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, j_cry_chocolate_dice = { - name = "Schokoladenwürfel", - text = { - "Werfe einen {C:green}Zehnerwürfel{} wenn", - "{C:attention}Boss Blind{} besiegt wurde", - "um ein {C:cry_ascendant,E:1}Event{} zu starten.", - "{C:inactive}(Currently: #1#)" - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips und {X:dark_edition,C:white}^#1#{} Mult", - "wenn {C:attention}genau{} #2#", - "Hände ubrig sind.", - }, - }, - j_cry_circus = { - name = "Zirkus", - text = { - "{C:red}Seltene{} Joker geben {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epische{} Joker geben {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendäre{} Joker geben {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotische{} Joker geben {X:mult,C:white} X#4# {} Mult", - }, - }, + name = "Schokoladenwürfel", + text = { + "Werfe einen {C:green}Zehnerwürfel{} wenn", + "{C:attention}Boss Blind{} besiegt wurde", + "um ein {C:cry_ascendant,E:1}Event{} zu starten.", + "{C:inactive}(Currently: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips und {X:dark_edition,C:white}^#1#{} Mult", + "wenn {C:attention}genau{} #2#", + "Hände ubrig sind.", + }, + }, + j_cry_circus = { + name = "Zirkus", + text = { + "{C:red}Seltene{} Joker geben {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epische{} Joker geben {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendäre{} Joker geben {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotische{} Joker geben {X:mult,C:white} X#4# {} Mult", + }, + }, j_cry_clash = { - name = "Der Kampf", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Erstelle eine {C:dark_edition}Negative{}", - "{C:cry_code}Code Karte{} wenn", - "{C:attention}Blind{} ausgewählt wird", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Verdiene zwischen", - "{C:money}$#1#{} und {C:money}$#2#{} für", - "jeden {C:attention}verkauften{} Joker", - }, - }, - j_cry_compound_interest = { - name = "Zinseszins", - text = { - "Bekomme {C:money}#1#%{} deines gesammten Geldes", - "am ende der Runde,", - "erhöht sich um {C:money}#2#%{} für jede", - "aufeinenderfolgende Auszahlung", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "Wenn eine {C:cry_code}Code{} Karte benutzt wird,", - "Chance von {C:green}#1# zu #2#{} um eine Kopie", - "zu deinen Verbrauchsgegenständen hinzuzufügen", - "{C:inactive}(Muss Platz haben)", - }, - }, + name = "Der Kampf", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Erstelle eine {C:dark_edition}Negative{}", + "{C:cry_code}Code Karte{} wenn", + "{C:attention}Blind{} ausgewählt wird", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Verdiene zwischen", + "{C:money}$#1#{} und {C:money}$#2#{} für", + "jeden {C:attention}verkauften{} Joker", + }, + }, + j_cry_compound_interest = { + name = "Zinseszins", + text = { + "Bekomme {C:money}#1#%{} deines gesammten Geldes", + "am ende der Runde,", + "erhöht sich um {C:money}#2#%{} für jede", + "aufeinenderfolgende Auszahlung", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "Wenn eine {C:cry_code}Code{} Karte benutzt wird,", + "Chance von {C:green}#1# zu #2#{} um eine Kopie", + "zu deinen Verbrauchsgegenständen hinzuzufügen", + "{C:inactive}(Muss Platz haben)", + }, + }, j_cry_cotton_candy = { - name = "Zuckerwatte", - text = { - "Wenn verkauft, bekommen", - "benachbarte {C:attention}Joker{} {C:dark_edition}Negativ{}" - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "Dieser Joker bekommt {C:chips}+#2#{} Chips", - "für jede {C:attention}Aktualisierung{} im Shop", - "{C:green}Alle Aktualisierungen sind kostenlos{}", - "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Kette", - text = { - "Verkaufe diese Karte um", - "{C:money}$#1#{} {C:attention}Verkaufswert{} zu jeder", - "{C:attention}Joker{} Karte hinzuzufügen", - }, - }, - j_cry_cube = { - name = "Würfel", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Schluchz", - text = { - "{C:edition,E:1}du kannst nicht{} {C:cry_ascendant,E:1}rennen...{}", - "{C:edition,E:1}du kannst dich nicht{} {C:cry_ascendant,E:1}verstecken...{}", - "{C:dark_edition,E:1}du kannst nicht entkommen...{}", - "{C:inactive}(Muss Platz haben){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "Dieser Joker bekommt {C:chips}+#2#{} Chips", - "für jede {C:attention}gekaufte{} Karte", - "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Ausschneiden", - text = { - "Dieser Joker zerstört", - "eine zufällige {C:cry_code}Code{} Karte", - "und bekommt {X:mult,C:white} X#1# {} Mult", - "am ende des {C:attention}Shops{}", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Deliriouser Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_discreet = { - name = "Diskreter Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_doodlem = { - name = "Gekritzeltes M", - text = { - "Erstelle 2 {C:dark_edition}Negative{} {C:attention}Verbrauchsgegenstände{}", - "wenn {C:attention}Blind{} ausgewählt wird", - "Erstelle 1 weiteren {C:attention}Verbrauchsgegenstand", - "für jeden {C:attention}Lustigen Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Doppelwage", - text = { - "Steigende {C:attention}Jokers{}", - "steigen {C:attention}Quadratisch", - "{C:inactive,s:0.8}(z.B. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(wächst um +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult für", - "jede gespielte, {C:attention}nicht gewertete{} {V:1}#2#{} Karte,", - "Farbe ändert sich jede Runde", - "{C:inactive}(Momentan {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubioser Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "eine {C:attention}#2#{} enthält" - } - }, - j_cry_duos = { - name = "Die Duos", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Dieser Joker bekommt {X:mult,C:white} X#2# {} Mult", - "wenn ein {C:attention}Joker{} oder eine", - "Spielkarte ausgelöst wird", - "{C:inactive}(Momentan {X:mult,C:white} X#1# {C:inactive} Mult)", - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Zieht {C:green}volles Deck{} zur Hand", - "wenn {C:attention}Blind{} ausgewählt wird", - "{C:inactive,s:0.8}\"Wenn du mich bei meinem 1x nicht aushälst,", - "{C:inactive,s:0.8}verdienst du much bei meinem 2x nicht\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "Wenn du einen {C:attention}Tag{} erhälst,", - "erställe {C:attention}#1#{} Kopien", - "und {C:attention}erhöhe{} die Nummer der", - "Kopien um {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ass Aequilibrium", - text = { - "Joker erscheinen in der", - "Reinfolge der {C:attention}Sammlung{}", - "Erstelle {C:attention}#1#{} {C:dark_edition}Negative(n){} Joker", - "wenn eine Hand gespielt wird.", - "{C:cry_exotic,s:0.8}Exotische {C:inactive,s:0.8}oder höhere Joker können nicht erscheinen", - "{s:0.8}Letzter erstellter Joker: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Ewige Flamme", - text = { - "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult", - "für jede {C:attention}verkaufte{} Karte", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographische{} Karten", - "geben {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "Dieser Joker bekommt {X:dark_edition,C:white} ^#1# {} Mult", - "wenn {X:red,C:white} XMult {} ausgelöst wird.", - "{C:inactive}(Momentan {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult wenn", - "gespielte Karten {C:attention}#2#{}", - "oder weniger mal ausgelöst werden.", - }, - }, - j_cry_filler = { - name = "Der Füller", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "eine {C:attention}#2#{} enthält", - }, - }, - j_cry_fractal = { - name = "Fraktal Finger", - text = { - "{C:attention}+#1#{} Karten auswahl Limit", - }, - }, - j_cry_flip_side = { - name = "Auf der anderen Seite...", - text = { - "{C:dark_edition}Doppelseitige{} Joker nutzen", - "ihre Rückseite für Effekte", - "statt der Vorderseite", - "{C:attention}Löse{} alle {C:dark_edition}Doppelseitigen{} Joker erneut {C:attention}aus" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}zerstört sich selbst{} in {C:attention}#2#{} Runde(n)", - "Erhöht sich um {C:attention}#3#{} Runden wenn", - "{C:attention}Lustiger Joker verkauft{} wird", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Größe Pommes, 20 Stücke & Großer Kuchen{}", - }, - }, + name = "Zuckerwatte", + text = { + "Wenn verkauft, bekommen", + "benachbarte {C:attention}Joker{} {C:dark_edition}Negativ{}", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "Dieser Joker bekommt {C:chips}+#2#{} Chips", + "für jede {C:attention}Aktualisierung{} im Shop", + "{C:green}Alle Aktualisierungen sind kostenlos{}", + "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Kette", + text = { + "Verkaufe diese Karte um", + "{C:money}$#1#{} {C:attention}Verkaufswert{} zu jeder", + "{C:attention}Joker{} Karte hinzuzufügen", + }, + }, + j_cry_cube = { + name = "Würfel", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Schluchz", + text = { + "{C:edition,E:1}du kannst nicht{} {C:cry_ascendant,E:1}rennen...{}", + "{C:edition,E:1}du kannst dich nicht{} {C:cry_ascendant,E:1}verstecken...{}", + "{C:dark_edition,E:1}du kannst nicht entkommen...{}", + "{C:inactive}(Muss Platz haben){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "Dieser Joker bekommt {C:chips}+#2#{} Chips", + "für jede {C:attention}gekaufte{} Karte", + "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Ausschneiden", + text = { + "Dieser Joker zerstört", + "eine zufällige {C:cry_code}Code{} Karte", + "und bekommt {X:mult,C:white} X#1# {} Mult", + "am ende des {C:attention}Shops{}", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Deliriouser Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_discreet = { + name = "Diskreter Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_doodlem = { + name = "Gekritzeltes M", + text = { + "Erstelle 2 {C:dark_edition}Negative{} {C:attention}Verbrauchsgegenstände{}", + "wenn {C:attention}Blind{} ausgewählt wird", + "Erstelle 1 weiteren {C:attention}Verbrauchsgegenstand", + "für jeden {C:attention}Lustigen Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Doppelwage", + text = { + "Steigende {C:attention}Jokers{}", + "steigen {C:attention}Quadratisch", + "{C:inactive,s:0.8}(z.B. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(wächst um +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult für", + "jede gespielte, {C:attention}nicht gewertete{} {V:1}#2#{} Karte,", + "Farbe ändert sich jede Runde", + "{C:inactive}(Momentan {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubioser Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "eine {C:attention}#2#{} enthält", + }, + }, + j_cry_duos = { + name = "Die Duos", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Dieser Joker bekommt {X:mult,C:white} X#2# {} Mult", + "wenn ein {C:attention}Joker{} oder eine", + "Spielkarte ausgelöst wird", + "{C:inactive}(Momentan {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Zieht {C:green}volles Deck{} zur Hand", + "wenn {C:attention}Blind{} ausgewählt wird", + '{C:inactive,s:0.8}"Wenn du mich bei meinem 1x nicht aushälst,', + '{C:inactive,s:0.8}verdienst du much bei meinem 2x nicht"', + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "Wenn du einen {C:attention}Tag{} erhälst,", + "erställe {C:attention}#1#{} Kopien", + "und {C:attention}erhöhe{} die Nummer der", + "Kopien um {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ass Aequilibrium", + text = { + "Joker erscheinen in der", + "Reinfolge der {C:attention}Sammlung{}", + "Erstelle {C:attention}#1#{} {C:dark_edition}Negative(n){} Joker", + "wenn eine Hand gespielt wird.", + "{C:cry_exotic,s:0.8}Exotische {C:inactive,s:0.8}oder höhere Joker können nicht erscheinen", + "{s:0.8}Letzter erstellter Joker: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Ewige Flamme", + text = { + "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult", + "für jede {C:attention}verkaufte{} Karte", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographische{} Karten", + "geben {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "Dieser Joker bekommt {X:dark_edition,C:white} ^#1# {} Mult", + "wenn {X:red,C:white} XMult {} ausgelöst wird.", + "{C:inactive}(Momentan {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult wenn", + "gespielte Karten {C:attention}#2#{}", + "oder weniger mal ausgelöst werden.", + }, + }, + j_cry_filler = { + name = "Der Füller", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "eine {C:attention}#2#{} enthält", + }, + }, + j_cry_fractal = { + name = "Fraktal Finger", + text = { + "{C:attention}+#1#{} Karten auswahl Limit", + }, + }, + j_cry_flip_side = { + name = "Auf der anderen Seite...", + text = { + "{C:dark_edition}Doppelseitige{} Joker nutzen", + "ihre Rückseite für Effekte", + "statt der Vorderseite", + "{C:attention}Löse{} alle {C:dark_edition}Doppelseitigen{} Joker erneut {C:attention}aus", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}zerstört sich selbst{} in {C:attention}#2#{} Runde(n)", + "Erhöht sich um {C:attention}#3#{} Runden wenn", + "{C:attention}Lustiger Joker verkauft{} wird", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Größe Pommes, 20 Stücke & Großer Kuchen{}", + }, + }, j_cry_foolhardy = { - name = "Tollkühner Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, + name = "Tollkühner Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, j_cry_formidiulosus = { name = "Formidiulosus", text = { @@ -1108,833 +1108,833 @@ return { "{C:inactive}(Momenan {X:dark_edition,C:white}^#3#{C:inactive} Mult)", }, }, - j_cry_foxy = { - name = "Fuchsiger Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "Dieser Joker bekommt {C:chips}+#2#{} Chips", - "wenn gespielte hand {C:attention}nicht{}", - "die meistgespielte {C:attention}Pokerhand{} ist", - "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} Chips)", - }, - }, + j_cry_foxy = { + name = "Fuchsiger Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "Dieser Joker bekommt {C:chips}+#2#{} Chips", + "wenn gespielte hand {C:attention}nicht{}", + "die meistgespielte {C:attention}Pokerhand{} ist", + "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} Chips)", + }, + }, j_cry_fuckedup = { - name = "Abgefuckter Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_gardenfork = { - name = "Garden der Kreuzungen", - text = { - "Verdiene {C:money}$#1#{} wenn {C:attention}gespielte Hand{}", - "Ein {C:attention}Ass{} und eine {C:attention}7{} enthält", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Verdoppelt{} alle Werte", - "des linkesten {C:attention}Jokers", - "am Ende der Runde", - }, - }, + name = "Abgefuckter Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_gardenfork = { + name = "Garden der Kreuzungen", + text = { + "Verdiene {C:money}$#1#{} wenn {C:attention}gespielte Hand{}", + "Ein {C:attention}Ass{} und eine {C:attention}7{} enthält", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Verdoppelt{} alle Werte", + "des linkesten {C:attention}Jokers", + "am Ende der Runde", + }, + }, j_cry_ghost = { - name = "Geist", - text = { - "Am Ende der Runde:", - "Chance von {C:green}#1# zu #2#{} einen", - "zufälligen {C:attention}Joker{} zu {C:attention}besetzen", - "Chance von {C:green}#1# zu #3#{}", - "{E:2,C:red}sich selbst zu zerstören" - } - }, - j_cry_giggly = { - name = "Absurder Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "eine {C:attention}#2#{} enthält" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Verdiene {C:money}#1#%{} des gesammten", - "Geldes am ende der Runde", - "Auszahlung erhöht sich um {C:money}#2#%{}", - "wenn eine {C:attention}Gold{}", - "Karte gewertet wird.", - }, - }, - j_cry_googol_play = { - name = "Googol Play Karte", - text = { - "Chance von {C:green}#1# zu #2#{} für", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Erstelle einen zufälligen {C:attention}Joker{}", - "am Ende der Runde", - "Verkaufe diese Karte um", - "einen zufälligen {C:attention}Joker{} zu erstellen", - "{C:inactive}(Muss Platz haben){}", - }, - }, - j_cry_happyhouse = { - name = "Fröhliches Haus", - text = { - "{X:dark_edition,C:white}^#1#{} Mult nachdem du", - "{C:attention}114{} Hände{} gespielt hast", - "{C:inactive}(Momentan #2#/114){}", - "{C:inactive,s:0.8}Es gibt keinen Platz so schön wie dein Zuhause!{}", - }, - }, - j_cry_home = { - name = "Das Zuhause", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Verdiene {C:money}$#1#{} wenn", - "ein {C:attention}Verbrauchsgegenstand{} benutzt wird", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Löse alle Karten", - "{C:attention}#2#{} mal mehr aus,", - "jede Karte gibt", - "{X:mult,C:white} X#1# {} Mult wenn sie gewertet wird", - }, - }, + name = "Geist", + text = { + "Am Ende der Runde:", + "Chance von {C:green}#1# zu #2#{} einen", + "zufälligen {C:attention}Joker{} zu {C:attention}besetzen", + "Chance von {C:green}#1# zu #3#{}", + "{E:2,C:red}sich selbst zu zerstören", + }, + }, + j_cry_giggly = { + name = "Absurder Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "eine {C:attention}#2#{} enthält", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Verdiene {C:money}#1#%{} des gesammten", + "Geldes am ende der Runde", + "Auszahlung erhöht sich um {C:money}#2#%{}", + "wenn eine {C:attention}Gold{}", + "Karte gewertet wird.", + }, + }, + j_cry_googol_play = { + name = "Googol Play Karte", + text = { + "Chance von {C:green}#1# zu #2#{} für", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Erstelle einen zufälligen {C:attention}Joker{}", + "am Ende der Runde", + "Verkaufe diese Karte um", + "einen zufälligen {C:attention}Joker{} zu erstellen", + "{C:inactive}(Muss Platz haben){}", + }, + }, + j_cry_happyhouse = { + name = "Fröhliches Haus", + text = { + "{X:dark_edition,C:white}^#1#{} Mult nachdem du", + "{C:attention}114{} Hände{} gespielt hast", + "{C:inactive}(Momentan #2#/114){}", + "{C:inactive,s:0.8}Es gibt keinen Platz so schön wie dein Zuhause!{}", + }, + }, + j_cry_home = { + name = "Das Zuhause", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Verdiene {C:money}$#1#{} wenn", + "ein {C:attention}Verbrauchsgegenstand{} benutzt wird", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Löse alle Karten", + "{C:attention}#2#{} mal mehr aus,", + "jede Karte gibt", + "{X:mult,C:white} X#1# {} Mult wenn sie gewertet wird", + }, + }, j_cry_jawbreaker = { - name = "Kieferbrecher", - text = { - "Wenn {C:attention}Boss Blind{} besiegt wurde,", - "{C:attention}verdopple{} die Werte benachbarter Joker", - "{E:2,C:red}Zerstört sich selbst{}", - } - }, - j_cry_jimball = { - name = "Jimball", - text = { - "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult", - "für jede {C:attention}aufeinenderfolgende{} gespielte Hand", - "währende du deine", - "am meisten gespielte {C:attention}Pokerhand{} spielst", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Lustiger Joker?", - text = { - "Erstelle einen {C:dark_edition}Lustigen{} Joker", - "Wenn ein Joker {C:attention}verkauft{} wird", - "{C:red}Funktioniert einmal pro Runde{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Entführung", - text = { - "Verdiene {C:money}$#2#{} am Ende der Runde", - "Erhöhe Auszahlung um {C:money}$#1#{}", - "wenn ein {C:attention}Mult Typ{} oder", - "{C:attention}Chip Typ{} Joker verkauft wird", - }, - }, - j_cry_kooky = { - name = "Wahnsinniger Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_krustytheclown = { - name = "Krusty der Clown", - text = { - "Dieser Joker bekommt", - "{X:mult,C:white} X#1# {} Mult wenn", - "jede gespielte {C:attention}Karte{} gewertet wird", - "{C:inactive}(Momenan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoskop", - text = { - "Füge {C:dark_edition}Polychrome{} zu", - "einem zufälligen {C:attention}Joker{} hinzu", - "wenn {C:attention}Boss Blind{} besiegt wird", - }, - }, - j_cry_lightupthenight = { - name = "Erläuchte die Nacht", - text = { - "Jede gespielte {C:attention}7{} oder {C:attention}2{}", - "gibt {X:mult,C:white}X#1#{} Mult wenn gewertet", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Gib zukünftigen Kopien", - "dieses Jokers {X:mult,C:white}X#1#{} Mult", - "am Ende der Runde", - "{C:inactive}(Momentan {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Löse{} alle Joker für jeden", - "{C:attention}Jolly Joker{}, der in dieser Runder", - "verkauft wurde erneut {C:attention}aus", - "{C:inactive}(Momentan{}{C:attention:} #1#{}{C:inactive} Auslösung(en)){}", - "{C:inactive,s:0.8}Es war nicht genug Platz...{}", - }, - }, - j_cry_lucky_joker = { - name = "Glücksjoker", - text = { - "Verdiene {C:money}$#1#{} jedes mal wenn eine", - "{C:attention}Glückskarte{} {C:green}erfolgreich{}", - "ausgelöst wird", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "Alle Joker geben", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult", - "wenn {C:attention}Lustiger Joker{} verkauft wird", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Erstelle einen {C:dark_edition}Negativen{}", - "{C:attention}Lustigen Joker{} wenn", - "{C:attention}Blind{} ausgewählt wird", - }, - }, - j_cry_macabre = { - name = "Makaberer Joker", - text = { - "Wenn {C:attention}Blind{} ausgewählt wird,", - "zerstöre jeden {C:attention}Joker{} außer", - "{C:legendary}M-Joker{} und {C:attention}Lustige Jokers{}", - "und erstelle 1 {C:attention}Lustigen Joker{}", - "für jede zerstörte Karte", - }, - }, - j_cry_magnet = { - name = "Kühlschrankmagnet", - text = { - "Verdiene {C:money}$#1#{} am Ende der Runde", - "Es verdient {X:money,C:white} X#2# {} wenn du", - "{C:attention}#3#{} oder weniger {C:attention}Joker{} Karten hast", - }, - }, - j_cry_manic = { - name = "Manischer Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Löse alle Joker", - "{C:attention}#1#{} weitere(s) mal aus", - }, - }, - j_cry_maximized = { - name = "Maximiert", - text = { - "Alle {C:attention}Bildkarten{}", - "zählen als {C:attention}Könige{},", - "alle {C:attention}Zahlkarten{}", - "zählen als {C:attention}10{}", - }, - }, - j_cry_maze = { - name = "Labyrint", - text = { - "Alle Hände zählen als", - "{C:attention}erste Hand{} der Runde,", - "alle Abwürfe zählen als", - "{C:attention}erster Abwurf{} der Runde", - }, - }, - j_cry_Megg = { - name = "Mei", - text = { - "Verkaufe diese Karte um", - "{C:attention}#2#{} Lustige #3# zu erstellen, erhöhe", - "um {C:attention}#1#{} am Ende der Runde", - }, - }, + name = "Kieferbrecher", + text = { + "Wenn {C:attention}Boss Blind{} besiegt wurde,", + "{C:attention}verdopple{} die Werte benachbarter Joker", + "{E:2,C:red}Zerstört sich selbst{}", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult", + "für jede {C:attention}aufeinenderfolgende{} gespielte Hand", + "währende du deine", + "am meisten gespielte {C:attention}Pokerhand{} spielst", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Lustiger Joker?", + text = { + "Erstelle einen {C:dark_edition}Lustigen{} Joker", + "Wenn ein Joker {C:attention}verkauft{} wird", + "{C:red}Funktioniert einmal pro Runde{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Entführung", + text = { + "Verdiene {C:money}$#2#{} am Ende der Runde", + "Erhöhe Auszahlung um {C:money}$#1#{}", + "wenn ein {C:attention}Mult Typ{} oder", + "{C:attention}Chip Typ{} Joker verkauft wird", + }, + }, + j_cry_kooky = { + name = "Wahnsinniger Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_krustytheclown = { + name = "Krusty der Clown", + text = { + "Dieser Joker bekommt", + "{X:mult,C:white} X#1# {} Mult wenn", + "jede gespielte {C:attention}Karte{} gewertet wird", + "{C:inactive}(Momenan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoskop", + text = { + "Füge {C:dark_edition}Polychrome{} zu", + "einem zufälligen {C:attention}Joker{} hinzu", + "wenn {C:attention}Boss Blind{} besiegt wird", + }, + }, + j_cry_lightupthenight = { + name = "Erläuchte die Nacht", + text = { + "Jede gespielte {C:attention}7{} oder {C:attention}2{}", + "gibt {X:mult,C:white}X#1#{} Mult wenn gewertet", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Gib zukünftigen Kopien", + "dieses Jokers {X:mult,C:white}X#1#{} Mult", + "am Ende der Runde", + "{C:inactive}(Momentan {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Löse{} alle Joker für jeden", + "{C:attention}Jolly Joker{}, der in dieser Runder", + "verkauft wurde erneut {C:attention}aus", + "{C:inactive}(Momentan{}{C:attention:} #1#{}{C:inactive} Auslösung(en)){}", + "{C:inactive,s:0.8}Es war nicht genug Platz...{}", + }, + }, + j_cry_lucky_joker = { + name = "Glücksjoker", + text = { + "Verdiene {C:money}$#1#{} jedes mal wenn eine", + "{C:attention}Glückskarte{} {C:green}erfolgreich{}", + "ausgelöst wird", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "Alle Joker geben", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "Dieser Joker bekommt {X:mult,C:white} X#1# {} Mult", + "wenn {C:attention}Lustiger Joker{} verkauft wird", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Erstelle einen {C:dark_edition}Negativen{}", + "{C:attention}Lustigen Joker{} wenn", + "{C:attention}Blind{} ausgewählt wird", + }, + }, + j_cry_macabre = { + name = "Makaberer Joker", + text = { + "Wenn {C:attention}Blind{} ausgewählt wird,", + "zerstöre jeden {C:attention}Joker{} außer", + "{C:legendary}M-Joker{} und {C:attention}Lustige Jokers{}", + "und erstelle 1 {C:attention}Lustigen Joker{}", + "für jede zerstörte Karte", + }, + }, + j_cry_magnet = { + name = "Kühlschrankmagnet", + text = { + "Verdiene {C:money}$#1#{} am Ende der Runde", + "Es verdient {X:money,C:white} X#2# {} wenn du", + "{C:attention}#3#{} oder weniger {C:attention}Joker{} Karten hast", + }, + }, + j_cry_manic = { + name = "Manischer Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Löse alle Joker", + "{C:attention}#1#{} weitere(s) mal aus", + }, + }, + j_cry_maximized = { + name = "Maximiert", + text = { + "Alle {C:attention}Bildkarten{}", + "zählen als {C:attention}Könige{},", + "alle {C:attention}Zahlkarten{}", + "zählen als {C:attention}10{}", + }, + }, + j_cry_maze = { + name = "Labyrint", + text = { + "Alle Hände zählen als", + "{C:attention}erste Hand{} der Runde,", + "alle Abwürfe zählen als", + "{C:attention}erster Abwurf{} der Runde", + }, + }, + j_cry_Megg = { + name = "Mei", + text = { + "Verkaufe diese Karte um", + "{C:attention}#2#{} Lustige #3# zu erstellen, erhöhe", + "um {C:attention}#1#{} am Ende der Runde", + }, + }, j_cry_mellowcreme = { - name = "Mellowcreme", - text = { - "Verkaufe diese Karte um", - "Verkaufswert aller {C:attention}Verbrauchgegenstände{}", - "mit {C:attention}X#1#{} zu {C:attention}multiplizieren" - } - }, - j_cry_membershipcard = { - name = "Mitgliedskarte", - text = { - "{X:mult,C:white}X#1#{} Mult für jedes Mitglied", - "im {C:attention}Cryptid Discord{}", - "{C:inactive}(Momentan {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Alte Mitgliedskarte", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips für jedes Mitglied", - "im {C:attention}Cryptid Discord{}", - "{C:inactive}(Momentan {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteorschauer", - text = { - "{C:dark_edition}Foil{} Karten", - "geben {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Bekomme {C:money}$#2#{} am Ende der Runde", - "Erhöhe Auszahlung um", - "{C:money}$#1#{} für jeden {C:attention}Lustigen Joker{}", - "oder {C:legendary}M Joker{} am", - "Ende der Runde", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "Dieser Joker erhält {X:mult,C:white} X#1# {} Mult", - "wenn keine {C:attention}Abwürfe{}", - "am Ende der Runde genutzt wurden", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Affendolch", - text = { - "Wenn {C:attention}Blind{} ausgewählt wird,", - "wird der linke Joker zerstört", - "und {C:attention}10 mal{} der Verkaufswert", - "zu den {C:chips}Chips{} hinzugefügt", - "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} Chips)", - }, - }, + name = "Mellowcreme", + text = { + "Verkaufe diese Karte um", + "Verkaufswert aller {C:attention}Verbrauchgegenstände{}", + "mit {C:attention}X#1#{} zu {C:attention}multiplizieren", + }, + }, + j_cry_membershipcard = { + name = "Mitgliedskarte", + text = { + "{X:mult,C:white}X#1#{} Mult für jedes Mitglied", + "im {C:attention}Cryptid Discord{}", + "{C:inactive}(Momentan {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Alte Mitgliedskarte", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips für jedes Mitglied", + "im {C:attention}Cryptid Discord{}", + "{C:inactive}(Momentan {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteorschauer", + text = { + "{C:dark_edition}Foil{} Karten", + "geben {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Bekomme {C:money}$#2#{} am Ende der Runde", + "Erhöhe Auszahlung um", + "{C:money}$#1#{} für jeden {C:attention}Lustigen Joker{}", + "oder {C:legendary}M Joker{} am", + "Ende der Runde", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "Dieser Joker erhält {X:mult,C:white} X#1# {} Mult", + "wenn keine {C:attention}Abwürfe{}", + "am Ende der Runde genutzt wurden", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Affendolch", + text = { + "Wenn {C:attention}Blind{} ausgewählt wird,", + "wird der linke Joker zerstört", + "und {C:attention}10 mal{} der Verkaufswert", + "zu den {C:chips}Chips{} hinzugefügt", + "{C:inactive}(Momentan {C:chips}+#1#{C:inactive} Chips)", + }, + }, j_cry_monopoly_money = { - name = "Monopoly Geld", - text = { - "Chance von {C:green}#1# zu #2#{} gekaufte", - "Gegenstände zu {C:attention}zerstören{}", - "Halbiert Geld wenn {C:attention}Verkauft", - } - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Verdiene {C:money}$#2#{} am Ende der Runde", - "Erhöhe die Auszahlung um {C:money}$#1#{} wenn", - "eine Karte mit {C:attention}Edition{} verkauft wird", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Erstelle einen {C:legendary}M Joker{} am Ende der Runde", - "Jeder {C:attention}Lustige Joker{} oder {C:legendary}M Joker", - "gibt {X:dark_edition,C:white}^#1#{} Mult", - "Erhöhe anzahl um {X:dark_edition,C:white}^#2#{}", - "wenn {C:attention}Lustiger Joker verkauft{} wird", - "{C:inactive,s:0.8}(Tredecim exkludiert)", - }, - }, - j_cry_mstack = { - name = "M Stapel", - text = { - "Führe alle gespielten Karten einmal", - "für alle {C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Lustige Joker{} verkauft", + name = "Monopoly Geld", + text = { + "Chance von {C:green}#1# zu #2#{} gekaufte", + "Gegenstände zu {C:attention}zerstören{}", + "Halbiert Geld wenn {C:attention}Verkauft", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Verdiene {C:money}$#2#{} am Ende der Runde", + "Erhöhe die Auszahlung um {C:money}$#1#{} wenn", + "eine Karte mit {C:attention}Edition{} verkauft wird", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Erstelle einen {C:legendary}M Joker{} am Ende der Runde", + "Jeder {C:attention}Lustige Joker{} oder {C:legendary}M Joker", + "gibt {X:dark_edition,C:white}^#1#{} Mult", + "Erhöhe anzahl um {X:dark_edition,C:white}^#2#{}", + "wenn {C:attention}Lustiger Joker verkauft{} wird", + "{C:inactive,s:0.8}(Tredecim exkludiert)", + }, + }, + j_cry_mstack = { + name = "M Stapel", + text = { + "Führe alle gespielten Karten einmal", + "für alle {C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Lustige Joker{} verkauft", "erneut aus", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Auslösungen){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "Chance von {C:green}#1# zu #2#{} für jede", - "gespielte {C:attention}Mult{} Karte eine", - "{C:spectral}Cryptid{} Karte zu erstellen wenn sie Ausgewertet wird", - "{C:inactive}(Muss Platz haben)", - }, - }, - j_cry_necromancer = { - name = "Totenbeschwörer", - text = { - "Wenn ein Joker für mehr als {C:attention}$0 verkauft{} wird", - "Erhalte einen {C:attention}zufälligen{} Joker der in diesem Durchlauf {C:attention}verkauft{} wurde", - "und setzte seinen {C:attention}Verkaufspreis{} zu {C:attention}$0{}", - }, - }, - j_cry_negative = { - name = "Negativer Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} Slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips wenn gespielte Hand", - "eine {C:attention}6{} und eine {C:attention}9{} enthält", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Nacht", - text = { - "{X:dark_edition,C:white}^#1#{} Mult für die letzte", - "Hand der Runde", - "{E:2,C:red}zerstört sich selbst{} bei", - "der letzten Hand der Runde", - }, - }, - j_cry_nosound = { - name = "Kein Geräuch, keine Errinerung", - text = { - "Löse alle {C:attention}7{}", - "{C:attention:}#1#{} weitere(s) mal(e) aus", - }, - }, - j_cry_notebook = { - name = "Notizbuch", - text = { - "Chance von {C:green} #1# zu #2#{} um {C:dark_edition}+1{} Joker", - "Slot pro {C:attention}Aktualisierung{} im Shop zu erhalten", - "{C:green}Funktioniert immer{} wenn du", - "{C:attention}#5#{} oder mehr {C:attention}Lustige Joker{} hast", - "{C:red}Funktioniert einmal pro Runde{}", - "{C:inactive}(Momentan {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Zahlblöcke", - text = { - "Verdiene {C:money}$#1#{} am Ende der Runde", - "Erhöhe Auszahlung um {C:money}$#2#{}", - "für jede {C:attention}#3#{} in der Hand,", - "Rang ändert sich jede Runde", - }, - }, - j_cry_nuts = { - name = "Die Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_oil_lamp = { - name = "Öl Lampe", - text = { - "Am Ende der Runde", - "werden alle Werte des {C:attention}rechten{} Joker um {C:attention}x#1#{} erhöht", - }, - }, - j_cry_oldblueprint = { - name = "Alter Bauplan", - text = { - "Kopiert Fähigkeit des", - "rechten {C:attention}Jokers{}", - "Chance von {C:green}#1# zu #2#{}, dass diese", - "Karte am Ende der Runde", - "zerstört wird", - }, - }, - j_cry_oldcandy = { - name = "Nostalgische Süßigkeit", - text = { - "Verkaufe diese Karte um", - "permantent {C:attention}+#1#{} Handgröße", - "zu bekommen", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgischer Unsichtbarer Joker", - text = { - "{C:attention}Dupliziere{} einen zufälligen", - "{C:attention}Joker{} für alle {C:attention}4", - "verkauften Joker Karten", - "{s:0.8}Nostalgischer unsichbarer Joker Excludiert{}", - "{C:inactive}(Momentan #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panoptikum", - text = { - "Alle Hände zählen als", - "{C:attention}letzte Hand{} der Runde", -- +$4 - }, - }, + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Auslösungen){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "Chance von {C:green}#1# zu #2#{} für jede", + "gespielte {C:attention}Mult{} Karte eine", + "{C:spectral}Cryptid{} Karte zu erstellen wenn sie Ausgewertet wird", + "{C:inactive}(Muss Platz haben)", + }, + }, + j_cry_necromancer = { + name = "Totenbeschwörer", + text = { + "Wenn ein Joker für mehr als {C:attention}$0 verkauft{} wird", + "Erhalte einen {C:attention}zufälligen{} Joker der in diesem Durchlauf {C:attention}verkauft{} wurde", + "und setzte seinen {C:attention}Verkaufspreis{} zu {C:attention}$0{}", + }, + }, + j_cry_negative = { + name = "Negativer Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} Slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips wenn gespielte Hand", + "eine {C:attention}6{} und eine {C:attention}9{} enthält", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Nacht", + text = { + "{X:dark_edition,C:white}^#1#{} Mult für die letzte", + "Hand der Runde", + "{E:2,C:red}zerstört sich selbst{} bei", + "der letzten Hand der Runde", + }, + }, + j_cry_nosound = { + name = "Kein Geräuch, keine Errinerung", + text = { + "Löse alle {C:attention}7{}", + "{C:attention:}#1#{} weitere(s) mal(e) aus", + }, + }, + j_cry_notebook = { + name = "Notizbuch", + text = { + "Chance von {C:green} #1# zu #2#{} um {C:dark_edition}+1{} Joker", + "Slot pro {C:attention}Aktualisierung{} im Shop zu erhalten", + "{C:green}Funktioniert immer{} wenn du", + "{C:attention}#5#{} oder mehr {C:attention}Lustige Joker{} hast", + "{C:red}Funktioniert einmal pro Runde{}", + "{C:inactive}(Momentan {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Zahlblöcke", + text = { + "Verdiene {C:money}$#1#{} am Ende der Runde", + "Erhöhe Auszahlung um {C:money}$#2#{}", + "für jede {C:attention}#3#{} in der Hand,", + "Rang ändert sich jede Runde", + }, + }, + j_cry_nuts = { + name = "Die Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_oil_lamp = { + name = "Öl Lampe", + text = { + "Am Ende der Runde", + "werden alle Werte des {C:attention}rechten{} Joker um {C:attention}x#1#{} erhöht", + }, + }, + j_cry_oldblueprint = { + name = "Alter Bauplan", + text = { + "Kopiert Fähigkeit des", + "rechten {C:attention}Jokers{}", + "Chance von {C:green}#1# zu #2#{}, dass diese", + "Karte am Ende der Runde", + "zerstört wird", + }, + }, + j_cry_oldcandy = { + name = "Nostalgische Süßigkeit", + text = { + "Verkaufe diese Karte um", + "permantent {C:attention}+#1#{} Handgröße", + "zu bekommen", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgischer Unsichtbarer Joker", + text = { + "{C:attention}Dupliziere{} einen zufälligen", + "{C:attention}Joker{} für alle {C:attention}4", + "verkauften Joker Karten", + "{s:0.8}Nostalgischer unsichbarer Joker Excludiert{}", + "{C:inactive}(Momentan #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panoptikum", + text = { + "Alle Hände zählen als", + "{C:attention}letzte Hand{} der Runde", -- +$4 + }, + }, j_cry_penetrating = { - name = "Durchdringender Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_pickle = { - name = "Saure Gurke", - text = { - "Wenn {C:attention}Blind{} übersprungen wird, erstelle", - "{C:attention}#1#{} Tags, reduziere um", - "{C:red}#2#{} wenn {C:attention}Blind{} ausgewählt wird", - }, - }, - j_cry_pirate_dagger = { - name = "Piratendolch", - text = { - "Wenn {C:attention}Blind{} ausgewählt wird,", - "zerstöre rechten Joker", - "und füge {C:attention}ein Viertel{} seines", - "Verkaufwertes zu seinem {X:chips,C:white} XChips {} hinzugefügt", - "{C:inactive}(Momentan {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - + name = "Durchdringender Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_pickle = { + name = "Saure Gurke", + text = { + "Wenn {C:attention}Blind{} übersprungen wird, erstelle", + "{C:attention}#1#{} Tags, reduziere um", + "{C:red}#2#{} wenn {C:attention}Blind{} ausgewählt wird", + }, + }, + j_cry_pirate_dagger = { + name = "Piratendolch", + text = { + "Wenn {C:attention}Blind{} ausgewählt wird,", + "zerstöre rechten Joker", + "und füge {C:attention}ein Viertel{} seines", + "Verkaufwertes zu seinem {X:chips,C:white} XChips {} hinzugefügt", + "{C:inactive}(Momentan {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pity_prize = { name = "Trostpreis", text = { - "Wenn ein {C:attention}Booster Pack{} übersprungen wird, erhalte einen zufälligen {C:attention}Tag{}" + "Wenn ein {C:attention}Booster Pack{} übersprungen wird, erhalte einen zufälligen {C:attention}Tag{}", + }, + }, + j_cry_pot_of_jokes = { + name = "Topf der Witze", + text = { + "{C:attention}#1#{} Handgröße,", + "Erhöht sich um", + "{C:blue}#2#{} jede Runde", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "Dieser Joker erhält {X:dark_edition,C:white} ^#1# {} Mult", + "Wenn alle Karten in der Hand", + "{C:attention}Asse{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, oder {C:attention}7{} sind", + "{C:inactive}(Momentan {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "Dieser Joker erhält", + "{X:mult,C:white} X#1# {} Mult wenn eine", + "{C:cry_code}Code{} Karte benutzt wird", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "Wenn {C:attention}Pokerhand{} ein", + "{C:attention}Royal Flush{} ist, zerstöre die gewertete", + "{C:attention}Dame{} und erstelle einen", + "{C:dark_edition}Negativen {}{C:red}Seltenen{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "Das Quintett", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_redbloon = { + name = "Roter Ballon", + text = { + "Verdiene {C:money}$#1#{} in {C:attention}#2#{} Runde(n)", + "{C:red,E:2}zerstört sich selbst{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante wenn", + "{C:money}$#2#{} {C:inactive}($#3#){} ausgegeben wurde", + "{s:0.8}Bedingung erhöht sich", + "{C:attention,s:0.8}expotentiel{s:0.8} für jede benutzung", + "{C:money,s:0.8}Nächste erhöhung: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "Wenn ein {C:attention}Joker{} verkauft wird,", + "füge seinen Effekt", + "zu jeden anderen Joker hinzu", + "{C:inactive,s:0.8}Hat keinen effekt auf andere Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fülle alle Joker slots {C:inactive}(Max 100){}", + "mit {C:dark_edition}Holographischen{} {C:attention}Lustigen Jokers{} wenn", + "{C:attention}Abgewurfene Pokerhand{} ein {C:attention}#1#{} ist", + "{C:red,E:2}zerstört sich selbst{}", + "{C:inactive,s:0.8}Das ULTIMATIVE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Zufälliger effekt jede {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Opfer", + text = { + "Erstelle einen {C:green}Ungewönlichen{} Joker", + "und 3 {C:attention}Lustige Jokers{} wenn", + "eine {C:spectral}Geisterkarte{} benutzt wird", + "{C:red}Funktioniert einmal pro Runde{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Setzling", + text = { + "Nachdem {C:attention}#2#{} {C:inactive}[#1#]{} Verstärkte", + "Karten gewertet wurden, verkaufe diese Karte um", + "einen {C:cry_epic}Epischen{} {C:attention}Joker{} zu erstellen", + "{C:inactive,s:0.8}Erstellt einen {C:red,s:0.8}Seltenen{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}wenn {C:cry_epic,s:0.8}Epische{} {C:inactive,s:0.8}Joker deaktiviert sind{}", + }, + }, + j_cry_savvy = { + name = "Versierter Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Steigende {C:attention}Joker{} steigen", + "als ein Grad-{C:attention}#1#{} Polynom", + "erhöhe Grad um {C:attention}#2#{}", + "am Ende der Runde", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} exkludiert)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Kachel", + text = { + "Chance von {C:green}#1# zu #2#{} um einen", + "{C:dark_edition}Lustigen {C:green}Ungewöhnlichen{} Joker", + "zu erstellen wenn eine Hand gespielt wird", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Füge ein {C:attention}zufälliges Siegel{} zu jeder Karte,", + "die in der {C:attention}letzten Hand{} der Runde gewertet wird", + }, + }, + j_cry_shrewd = { + name = "Kluger Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_silly = { + name = "Doofer Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_smallestm = { + name = "Winzig", + text = { + "Erstelle ein {C:cry_jolly}Doppel M", + "Tag wenn {C:attention}Poker Hand{}", + "ein {C:attention}#1#{} ist", + "{C:inactive,s:0.8}ok, also im wesentlichen bin ich richtig klen", + }, + }, + j_cry_soccer = { + name = "Einer für Alle", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker Slot", + "{C:attention}+#1#{} Booster Packer Slot", + "{C:attention}+#1#{} Handgröße", + "{C:attention}+#1#{} Verbrauchsgegenstand Slot", + "{C:attention}+#1#{} Karte im Shop", }, }, - j_cry_pot_of_jokes = { - name = "Topf der Witze", - text = { - "{C:attention}#1#{} Handgröße,", - "Erhöht sich um", - "{C:blue}#2#{} jede Runde", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "Dieser Joker erhält {X:dark_edition,C:white} ^#1# {} Mult", - "Wenn alle Karten in der Hand", - "{C:attention}Asse{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, oder {C:attention}7{} sind", - "{C:inactive}(Momentan {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "Dieser Joker erhält", - "{X:mult,C:white} X#1# {} Mult wenn eine", - "{C:cry_code}Code{} Karte benutzt wird", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "Wenn {C:attention}Pokerhand{} ein", - "{C:attention}Royal Flush{} ist, zerstöre die gewertete", - "{C:attention}Dame{} und erstelle einen", - "{C:dark_edition}Negativen {}{C:red}Seltenen{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "Das Quintett", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält", - }, - }, - j_cry_redbloon = { - name = "Roter Ballon", - text = { - "Verdiene {C:money}$#1#{} in {C:attention}#2#{} Runde(n)", - "{C:red,E:2}zerstört sich selbst{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante wenn", - "{C:money}$#2#{} {C:inactive}($#3#){} ausgegeben wurde", - "{s:0.8}Bedingung erhöht sich", - "{C:attention,s:0.8}expotentiel{s:0.8} für jede benutzung", - "{C:money,s:0.8}Nächste erhöhung: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "Wenn ein {C:attention}Joker{} verkauft wird,", - "füge seinen Effekt", - "zu jeden anderen Joker hinzu", - "{C:inactive,s:0.8}Hat keinen effekt auf andere Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fülle alle Joker slots {C:inactive}(Max 100){}", - "mit {C:dark_edition}Holographischen{} {C:attention}Lustigen Jokers{} wenn", - "{C:attention}Abgewurfene Pokerhand{} ein {C:attention}#1#{} ist", - "{C:red,E:2}zerstört sich selbst{}", - "{C:inactive,s:0.8}Das ULTIMATIVE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Zufälliger effekt jede {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Opfer", - text = { - "Erstelle einen {C:green}Ungewönlichen{} Joker", - "und 3 {C:attention}Lustige Jokers{} wenn", - "eine {C:spectral}Geisterkarte{} benutzt wird", - "{C:red}Funktioniert einmal pro Runde{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Setzling", - text = { - "Nachdem {C:attention}#2#{} {C:inactive}[#1#]{} Verstärkte", - "Karten gewertet wurden, verkaufe diese Karte um", - "einen {C:cry_epic}Epischen{} {C:attention}Joker{} zu erstellen", - "{C:inactive,s:0.8}Erstellt einen {C:red,s:0.8}Seltenen{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}wenn {C:cry_epic,s:0.8}Epische{} {C:inactive,s:0.8}Joker deaktiviert sind{}", - }, - }, - j_cry_savvy = { - name = "Versierter Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Steigende {C:attention}Joker{} steigen", - "als ein Grad-{C:attention}#1#{} Polynom", - "erhöhe Grad um {C:attention}#2#{}", - "am Ende der Runde", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} exkludiert)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Kachel", - text = { - "Chance von {C:green}#1# zu #2#{} um einen", - "{C:dark_edition}Lustigen {C:green}Ungewöhnlichen{} Joker", - "zu erstellen wenn eine Hand gespielt wird", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Füge ein {C:attention}zufälliges Siegel{} zu jeder Karte,", - "die in der {C:attention}letzten Hand{} der Runde gewertet wird", - }, - }, - j_cry_shrewd = { - name = "Kluger Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_silly = { - name = "Doofer Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_smallestm = { - name = "Winzig", - text = { - "Erstelle ein {C:cry_jolly}Doppel M", - "Tag wenn {C:attention}Poker Hand{}", - "ein {C:attention}#1#{} ist", - "{C:inactive,s:0.8}ok, also im wesentlichen bin ich richtig klen", - }, - }, - j_cry_soccer = { - name = "Einer für Alle", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker Slot", - "{C:attention}+#1#{} Booster Packer Slot", - "{C:attention}+#1#{} Handgröße", - "{C:attention}+#1#{} Verbrauchsgegenstand Slot", - "{C:attention}+#1#{} Karte im Shop", - }, - }, j_cry_fleshpanopticon = { - name = "Fleischpanoptikum", - text = { - "{C:red}X#1#{} {C:attention}Boss Blind{} größe", - "Wenn eine {C:attention}Boss Blind{} besiegt wurde,", - "{C:red}zerstört sich selbst{}, und erstellt", - "eine {C:dark_edition}Negative{} {C:spectral}Portal{} Karte", - "{C:inactive,s:0.8}\"Ein Gefängnis... zum halten von... mir?\"" - }, - }, - j_cry_spaceglobe = { - name = "Himmelsglobus", - text = { - "Dieser Joker bekommt {X:chips,C:white}X#2#{} Chips", - "wenn {C:attention}poker hand #3#{} ist,", - "Hand ändert sich jede Runde", - "{C:inactive}(Momentan{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Erstellt eine {C:dark_edition}Negative{} Kopie", - "Eines Zufälligen {C:attention}Jokers{}", - "am Ende des {C:attention}Shops", - "{C:inactive,s:0.8}Kopiert keine anderen Speculo{}", - }, - }, + name = "Fleischpanoptikum", + text = { + "{C:red}X#1#{} {C:attention}Boss Blind{} größe", + "Wenn eine {C:attention}Boss Blind{} besiegt wurde,", + "{C:red}zerstört sich selbst{}, und erstellt", + "eine {C:dark_edition}Negative{} {C:spectral}Portal{} Karte", + '{C:inactive,s:0.8}"Ein Gefängnis... zum halten von... mir?"', + }, + }, + j_cry_spaceglobe = { + name = "Himmelsglobus", + text = { + "Dieser Joker bekommt {X:chips,C:white}X#2#{} Chips", + "wenn {C:attention}poker hand #3#{} ist,", + "Hand ändert sich jede Runde", + "{C:inactive}(Momentan{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Erstellt eine {C:dark_edition}Negative{} Kopie", + "Eines Zufälligen {C:attention}Jokers{}", + "am Ende des {C:attention}Shops", + "{C:inactive,s:0.8}Kopiert keine anderen Speculo{}", + }, + }, j_cry_spy = { - name = "Spion", - text = { - "{X:mult,C:white} X#2# {} Mult, {C:dark_edition}+1{C:attention} Joker{} slot", - "{C:inactive}Dieser #1# ist ein Spion!", - }, - }, - j_cry_stardust = { - name = "Sternstaub", - text = { - "{C:dark_edition}Polychrome{} Karten", - "geben {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "Dieser Joker zerstört eine", - "zufällige {C:planet}Planeten{} Karte", - "und erhält {X:dark_edition,C:white} ^#1# {} Mult", - "am Ende das {C:attention}Shops{}", - "{C:inactive}(Momentan {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, + name = "Spion", + text = { + "{X:mult,C:white} X#2# {} Mult, {C:dark_edition}+1{C:attention} Joker{} slot", + "{C:inactive}Dieser #1# ist ein Spion!", + }, + }, + j_cry_stardust = { + name = "Sternstaub", + text = { + "{C:dark_edition}Polychrome{} Karten", + "geben {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "Dieser Joker zerstört eine", + "zufällige {C:planet}Planeten{} Karte", + "und erhält {X:dark_edition,C:white} ^#1# {} Mult", + "am Ende das {C:attention}Shops{}", + "{C:inactive}(Momentan {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, j_cry_stronghold = { - name = "Die Festung", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - j_cry_subtle = { - name = "Subtiler Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Verdiene {C:money}$#3#{} am", - "Ende der Runde", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "Am Ende der Runde, erstelle", - "eine {C:attention}Kopie{} einer Zufälligen", - "Karte {C:attention}in der Hand{},", - "zerstöre alle anderen", - "{C:attention,s:0.8}Könige{s:0.8} von {C:hearts,s:0.8}Herz{s:0.8} sind priorisiert", - }, - }, - j_cry_swarm = { - name = "Der Schwarm", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Katalysator", - text = { - "Gleicht {C:chips}Chips{} und {C:mult}Mult{} aus", - "{C:inactive,s:0.8}Hey! Das habe ich schonmal gesehen!", - }, - }, + name = "Die Festung", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_subtle = { + name = "Subtiler Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Verdiene {C:money}$#3#{} am", + "Ende der Runde", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "Am Ende der Runde, erstelle", + "eine {C:attention}Kopie{} einer Zufälligen", + "Karte {C:attention}in der Hand{},", + "zerstöre alle anderen", + "{C:attention,s:0.8}Könige{s:0.8} von {C:hearts,s:0.8}Herz{s:0.8} sind priorisiert", + }, + }, + j_cry_swarm = { + name = "Der Schwarm", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Katalysator", + text = { + "Gleicht {C:chips}Chips{} und {C:mult}Mult{} aus", + "{C:inactive,s:0.8}Hey! Das habe ich schonmal gesehen!", + }, + }, j_cry_tax_fraud = { name = "Steuerbetrug", text = { @@ -1942,284 +1942,284 @@ return { "Erhalte {C:attention}$#1#{} für jeden {C:attention}Gemieteten Joker", }, }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} Slots", - "Verdiene {C:money}$#2#{} am Ende der Runde", - }, - }, - j_cry_translucent = { - name = "Durchscheinender Joker", - text = { - "Verkaufe diese Karte um", - "eine {C:attention}Bananen Verderbliche{} Kopie", - "eines zufälligen {C:attention}Jokers{} zu erstellen", - "{s:0.8,C:inactive}(Egal ob der Joker kompatibel ist)", - }, - }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} Slots", + "Verdiene {C:money}$#2#{} am Ende der Runde", + }, + }, + j_cry_translucent = { + name = "Durchscheinender Joker", + text = { + "Verkaufe diese Karte um", + "eine {C:attention}Bananen Verderbliche{} Kopie", + "eines zufälligen {C:attention}Jokers{} zu erstellen", + "{s:0.8,C:inactive}(Egal ob der Joker kompatibel ist)", + }, + }, j_cry_treacherous = { - name = "Tückischer Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, + name = "Tückischer Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, j_cry_trick_or_treat = { - name = "Süßes oder Saures", - text = { - "Wenn {C:attention}verkauft{}:", - "Chance von {C:green}#1# zu #2#{} {C:attention}2{} {C:cry_candy}Süßigkeiten{} zu erstellen", - "Sonst erstelle einen {X:cry_cursed,C:white}Verfluchten{} Joker", - "{C:inactive}(Kann überfießen)" - } - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips wenn", - "gespielte Hand", - "einen {C:attention}#2#{} enthält" - } - }, - j_cry_triplet_rhythm = { - name = "Triolenrhythmus", - text = { - "{X:mult,C:white} X#1# {} Mult wenn gewertete Hand", - "{C:attention}exakt{} drei {C:attention}3{} enthält", - }, - }, - j_cry_unity = { - name = "The Einigkeit", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Pokerhände{} erhalten", - "{X:red,C:white} X#1# {} Mult und {X:blue,C:white} X#1# {} Chips", - "wenn ihr Level erhöht wird", - }, - }, - j_cry_unjust_dagger = { - name = "Ungerechter Dolch", - text = { - "Wenn {C:attention}Blind{} ausgewählt wird,", - "zerstöre linken Joker", - "und füge {C:attention}ein Fünftel{} des", - "Verkaufwertes als {X:mult,C:white} XMult {} hinzu", - "{C:inactive}(Momentan {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "Wenn eine Warscheinlichkeit", - "{C:green}erfolgreich{} auslöst,", - "erhällt dieser Joker {X:red,C:white}XMult{}", - "gleich der {C:attention}Warscheinlichkeit", - "{C:inactive}(Momentan {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "Dieser Joker erhält {C:money}$#1#{} {C:attention}Verkaufswert{}", - "wenn {C:attention}Pokerhand{} ein {C:attention}#2#{} enthält", - "Verkaufe diese Karte um einen", - "{C:dark_edition}Polychrome{} {C:attention}Lustigen Joker{} für", - "alle {C:money}$4{} {C:attention}Verkaufswert{} zu erstellen {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Spinner Joker", - text = { - "{C:red}+#1#{} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "Alle Joker geben", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "Alle Joker geben", - "{C:money}$#1#{} wenn ausgelöst", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "Dieser Joker bekommt", - "{C:mult}+#2#{} Mult wenn ein", - "{C:attention}Ass{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, oder {C:attention}8{}", - "gewertet wird", - "{C:inactive}(Momentan {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Löse jede gespielte {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} weitere(s) mal aus", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Rad der Hoffnung", - text = { - "Dieser Joker erhält", - "{X:mult,C:white} X#1# {} Mult wenn ein", - "{C:attention}Rad des Schicksals{} nicht erfolgreich auslöst", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "Die PEITCHE", - text = { - "Dieser Joker erhält {X:mult,C:white} X#1# {} Mult", - "wenn die {C:attention}Poker hand{} eine", - "{C:attention}2{} und {C:attention}7{} unterschiedlicher Farben enthält", - "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, + name = "Süßes oder Saures", + text = { + "Wenn {C:attention}verkauft{}:", + "Chance von {C:green}#1# zu #2#{} {C:attention}2{} {C:cry_candy}Süßigkeiten{} zu erstellen", + "Sonst erstelle einen {X:cry_cursed,C:white}Verfluchten{} Joker", + "{C:inactive}(Kann überfießen)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips wenn", + "gespielte Hand", + "einen {C:attention}#2#{} enthält", + }, + }, + j_cry_triplet_rhythm = { + name = "Triolenrhythmus", + text = { + "{X:mult,C:white} X#1# {} Mult wenn gewertete Hand", + "{C:attention}exakt{} drei {C:attention}3{} enthält", + }, + }, + j_cry_unity = { + name = "The Einigkeit", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Pokerhände{} erhalten", + "{X:red,C:white} X#1# {} Mult und {X:blue,C:white} X#1# {} Chips", + "wenn ihr Level erhöht wird", + }, + }, + j_cry_unjust_dagger = { + name = "Ungerechter Dolch", + text = { + "Wenn {C:attention}Blind{} ausgewählt wird,", + "zerstöre linken Joker", + "und füge {C:attention}ein Fünftel{} des", + "Verkaufwertes als {X:mult,C:white} XMult {} hinzu", + "{C:inactive}(Momentan {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "Wenn eine Warscheinlichkeit", + "{C:green}erfolgreich{} auslöst,", + "erhällt dieser Joker {X:red,C:white}XMult{}", + "gleich der {C:attention}Warscheinlichkeit", + "{C:inactive}(Momentan {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "Dieser Joker erhält {C:money}$#1#{} {C:attention}Verkaufswert{}", + "wenn {C:attention}Pokerhand{} ein {C:attention}#2#{} enthält", + "Verkaufe diese Karte um einen", + "{C:dark_edition}Polychrome{} {C:attention}Lustigen Joker{} für", + "alle {C:money}$4{} {C:attention}Verkaufswert{} zu erstellen {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Spinner Joker", + text = { + "{C:red}+#1#{} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "Alle Joker geben", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "Alle Joker geben", + "{C:money}$#1#{} wenn ausgelöst", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "Dieser Joker bekommt", + "{C:mult}+#2#{} Mult wenn ein", + "{C:attention}Ass{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, oder {C:attention}8{}", + "gewertet wird", + "{C:inactive}(Momentan {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Löse jede gespielte {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} weitere(s) mal aus", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Rad der Hoffnung", + text = { + "Dieser Joker erhält", + "{X:mult,C:white} X#1# {} Mult wenn ein", + "{C:attention}Rad des Schicksals{} nicht erfolgreich auslöst", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "Die PEITCHE", + text = { + "Dieser Joker erhält {X:mult,C:white} X#1# {} Mult", + "wenn die {C:attention}Poker hand{} eine", + "{C:attention}2{} und {C:attention}7{} unterschiedlicher Farben enthält", + "{C:inactive}(Momentan {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, j_cry_wrapped = { - name = "Eingewickelte Süßigkeit", - text = { - "Erstelle einen zufälligen {C:attention}Essen Joker{}", - "in {C:attention}#1#{} Runde(n)", - "{C:red,E:2}Zerstört sich selbst{}", - }, - }, + name = "Eingewickelte Süßigkeit", + text = { + "Erstelle einen zufälligen {C:attention}Essen Joker{}", + "in {C:attention}#1#{} Runde(n)", + "{C:red,E:2}Zerstört sich selbst{}", + }, + }, j_cry_wtf = { - name = "Die Hölle!?", - text = { - "{X:mult,C:white} X#1# {} Mult wenn", - "gespielte Hand", - "ein {C:attention}#2#{} enthält", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aufwertung für", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "und {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aufwertung für", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "und {C:attention}#3#{}", - }, - }, + name = "Die Hölle!?", + text = { + "{X:mult,C:white} X#1# {} Mult wenn", + "gespielte Hand", + "ein {C:attention}#2#{} enthält", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aufwertung für", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "und {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aufwertung für", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "und {C:attention}#3#{}", + }, + }, c_cry_Kaikki = { - name = "Kaikki", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aufwertung für", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "und {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutronenstern", - text = { - "Verbessere eine zufällige", - "Pokerhand um", - "{C:attention}1{} level für jeden", - "{C:attention}Neutronenstern{}", - "der in diesem Durchlauf", + name = "Kaikki", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aufwertung für", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "und {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutronenstern", + text = { + "Verbessere eine zufällige", + "Pokerhand um", + "{C:attention}1{} level für jeden", + "{C:attention}Neutronenstern{}", + "der in diesem Durchlauf", "genutzt wurde", - "{C:inactive}(Momentan{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "Chance von {C:green}#1# zu #2#{} jede", - "{C:legendary,E:1}Pokerhand{}", - "um {C:attention}1{} Level aufzuwerten", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aufwertung für", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "und {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aufwertung für", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "und {C:attention}#3#{}", - }, - }, - c_cry_marsmoons = { - name = 'Phobos & Deimos', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult und", - "{C:chips}+#4#{} chips", + "{C:inactive}(Momentan{C:attention} #1#{C:inactive}){}", }, - }, - c_cry_void = { - name = 'Leere', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult und", - "{C:chips}+#4#{} chips", + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "Chance von {C:green}#1# zu #2#{} jede", + "{C:legendary,E:1}Pokerhand{}", + "um {C:attention}1{} Level aufzuwerten", }, - }, - c_cry_asteroidbelt = { - name = 'Asteroidengürtel', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult und", - "{C:chips}+#4#{} chips", + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aufwertung für", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "und {C:attention}#3#{}", }, - }, - c_cry_universe = { - name = 'Das Universum in seiner verfickten Gesamtheit.', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult und", - "{C:chips}+#4#{} chips", + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aufwertung für", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "und {C:attention}#3#{}", }, - }, - }, - Sleeve = { + }, + c_cry_marsmoons = { + name = "Phobos & Deimos", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult und", + "{C:chips}+#4#{} chips", + }, + }, + c_cry_void = { + name = "Leere", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult und", + "{C:chips}+#4#{} chips", + }, + }, + c_cry_asteroidbelt = { + name = "Asteroidengürtel", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult und", + "{C:chips}+#4#{} chips", + }, + }, + c_cry_universe = { + name = "Das Universum in seiner verfickten Gesamtheit.", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Aufwertung für", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult und", + "{C:chips}+#4#{} chips", + }, + }, + }, + Sleeve = { sleeve_cry_bountiful_sleeve = { name = "Größzügige Hülle", text = { @@ -2227,1638 +2227,1656 @@ return { "{C:attention}Gespielter Hand{} oder {C:attention}Abwurf{}", }, }, - sleeve_cry_ccd_sleeve = { - name = "CCD Hülle", - text = { - "Jede Karte ist auch", - "ein {C:attention}zufälliger{} Verbrauchsgegenstand", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Fließbandhülle", - text = { - "Joker können {C:attention}nicht{} bewegt werden", - "Am Anfang der Runde,", - "{C:attention}dupliziere{} den rechtesten Joker", - "und {C:attention}zerstöre{} den linkesten Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Kritische Hülle", - text = { - "Nach jeder gespielten Hand,", - "Chance von {C:green}#1# zu 4{} für {X:dark_edition,C:white} ^2 {} Mult", - "Chance von {C:green}#1# zu 8{} für {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Verschlüsselte Hülle", - text = { - "Starte mit einem {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "und einem {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Nur {C:cry_code}Code Karten{} erscheinen im Shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balancierte Hülle", - text = { - "Alle Karten haben die", - "{C:attention}selbe Chance{}", - "im Shop aufzutauchen,", - "beginne den Durchlauf mit", - "{C:attention,T:v_overstock_plus}Überbestand Plus", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unendliche Hülle", - text = { - "Du kannst {C:attention}unendlich{} viele", - "Karten auswählen.", - "{C:attention}+1{} Handgröße", - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Fehlgedruckte Hülle", - text = { - "Werte von Karten", - "und Pokerhänden", - "sind {C:attention}zufällig", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Eingelöste Hülle", - text = { - "Wenn ein {C:attention}Gutschein{} gekauft wird,", - "bekomme seine {C:attention}verbesserten Versionen", - }, - }, + sleeve_cry_ccd_sleeve = { + name = "CCD Hülle", + text = { + "Jede Karte ist auch", + "ein {C:attention}zufälliger{} Verbrauchsgegenstand", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Fließbandhülle", + text = { + "Joker können {C:attention}nicht{} bewegt werden", + "Am Anfang der Runde,", + "{C:attention}dupliziere{} den rechtesten Joker", + "und {C:attention}zerstöre{} den linkesten Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Kritische Hülle", + text = { + "Nach jeder gespielten Hand,", + "Chance von {C:green}#1# zu 4{} für {X:dark_edition,C:white} ^2 {} Mult", + "Chance von {C:green}#1# zu 8{} für {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Verschlüsselte Hülle", + text = { + "Starte mit einem {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "und einem {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Nur {C:cry_code}Code Karten{} erscheinen im Shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balancierte Hülle", + text = { + "Alle Karten haben die", + "{C:attention}selbe Chance{}", + "im Shop aufzutauchen,", + "beginne den Durchlauf mit", + "{C:attention,T:v_overstock_plus}Überbestand Plus", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unendliche Hülle", + text = { + "Du kannst {C:attention}unendlich{} viele", + "Karten auswählen.", + "{C:attention}+1{} Handgröße", + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Fehlgedruckte Hülle", + text = { + "Werte von Karten", + "und Pokerhänden", + "sind {C:attention}zufällig", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Eingelöste Hülle", + text = { + "Wenn ein {C:attention}Gutschein{} gekauft wird,", + "bekomme seine {C:attention}verbesserten Versionen", + }, + }, sleeve_cry_spooky_sleeve = { - name = "Gruselige Hülle", - text = { - "Starte mit einem {C:eternal}Ewigen{} {C:attention,T:j_cry_chocolate_dice}Schokoladenwürfel", - "Nach jeder {C:attention}Ante{}, erstelle eine", - "{C:cry_candy}Süßigkeit{} oder einen {X:cry_cursed,C:white}Verfluchten{} Joker", - } - }, - sleeve_cry_wormhole_sleeve = { - name = "Wurmlochhülle", - text = { - "Beginne mit einem {C:cry_exotic}Exotischen{C:attention} Joker", - "Joker sind {C:attention}20X{} warscheinlicher", - "{C:dark_edition}Negativ{} zu sein", - "{C:attention}-2{} Joker-Slots", - }, - }, + name = "Gruselige Hülle", + text = { + "Starte mit einem {C:eternal}Ewigen{} {C:attention,T:j_cry_chocolate_dice}Schokoladenwürfel", + "Nach jeder {C:attention}Ante{}, erstelle eine", + "{C:cry_candy}Süßigkeit{} oder einen {X:cry_cursed,C:white}Verfluchten{} Joker", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wurmlochhülle", + text = { + "Beginne mit einem {C:cry_exotic}Exotischen{C:attention} Joker", + "Joker sind {C:attention}20X{} warscheinlicher", + "{C:dark_edition}Negativ{} zu sein", + "{C:attention}-2{} Joker-Slots", + }, + }, sleeve_cry_legendary_sleeve = { - name = "Legendäre Hülle", - text = { - "Beginne mit einem {C:legendary}Legendären{C:legendary} Joker", - "Chance von {C:green}1 in 5{} einen weiteren zu erstellen", + name = "Legendäre Hülle", + text = { + "Beginne mit einem {C:legendary}Legendären{C:legendary} Joker", + "Chance von {C:green}1 in 5{} einen weiteren zu erstellen", "wenn Boss Blind besiegt wurde {C:inactive}(Muss Platz haben){}", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Erstelle {C:attention}#1#{} Kopien eines", - "zufälligen {C:attention}Jokers{}, zerstöre", - "alle anderen Joker, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Portal", - text = { - "Erstelle einen zufälligen", - "{C:cry_exotic,E:1}Exotischen{C:attention} Joker{}, zerstöre", - "alle anderen Joker", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Füge einen zufälligen {C:attention}Verbrauchsgegenstand{}", - "als währen sie {C:dark_edition}Verstärkungen{}", - "zu allen Karten in der Hand hinzu", - }, - }, - c_cry_lock = { - name = "Schloss", - text = { - "Entferne {C:red}alle{} Sticker", - "von {C:red}allen{} Jokern,", - "dann füge {C:purple,E:1}Ewig{}", - "zu einem zufälligen {C:attention}Joker{} hinzu", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Erstelle eine Karte", - "{C:cry_code}deiner Wahl", - "{C:inactive,s:0.8}(Exotische Joker exkludiert)", - }, - }, - c_cry_replica = { - name = "Replik", - text = { - "Verwandle alle Karten", - "in der Hand", - "in eine {C:attention}zufällige{}", - "Karte in der Hand", - }, - }, - c_cry_source = { - name = "Quelle", - text = { - "Füge ein {C:cry_code}Grünes Siegel{}", - "zu {C:attention}#1#{} gewählten", - "Karte(n) hinzu", - }, - }, - c_cry_summoning = { - name = "Beschwörung", - text = { - "Erstelle einen zufälligen", - "{C:cry_epic}Epischen{} {C:joker}Joker{}, zerstöre", - "einen zufälligen {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Handel", - text = { - "{C:attention}Verliere{} einen zufälligen Gutschein,", - "bekomme {C:attention}2{} zufällige Gutscheine", - }, - }, - c_cry_typhoon = { - name = "Taifun", - text = { - "Füge ein {C:cry_azure}Azurblaues Siegel{}", - "zu {C:attention}#1#{} gewählten", - "Karte(n) hinzu", - }, - }, - c_cry_vacuum = { - name = "Vakuum", - text = { - "Entferne {C:red}alle {C:green}Modifikationen{}", - "von {C:red}allen{} Karten in der Hand,", - "Verdiene {C:money}$#1#{} pro entfernte {C:green}Modifikation{}", - "{C:inactive,s:0.7}(z.B. Verstärkungen, Siegel, Editionen)", - }, - }, - c_cry_white_hole = { - name = "Weißes Loch", - text = { - "{C:attention}Entferne{} alle Handlevel,", - "verbessere {C:legendary,E:1}meistgespielte{} Pokerhand", - "um {C:attention}3{} für jedes entfernte Level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pinker Einsatz", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Benötigte Punktzahl skaliert", - "schneller für jede {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brauner Einsatz", - colour = "Brown", - text = { - "Alle {C:attention}Sticker{} sind", - "gegenseitig Kompatibel", - }, - }, - stake_cry_yellow = { - name = "Gelber Einsatz", - colour = "Yellow", - text = { - "{C:attention}Sticker{} können auf", - "allen kaufbaren Gegenständen erscheinen", - }, - }, - stake_cry_jade = { - name = "Jade Einsatz", - colour = "Jade", - text = { - "Karten können mit {C:attention}Gesicht unten{} gezogen werden", - }, - }, - stake_cry_cyan = { - name = "Cyan Einsatz", - colour = "Cyan", - text = { - "{C:green}Ungewöhnliche{} und {C:red}Seltene{} Joker sind", - "seltener", - }, - }, - stake_cry_gray = { - name = "Grauer Einsatz", - colour = "Gray", - text = { - "Aktualisierungen erhöhen sich um {C:attention}$2{}", - }, - }, - stake_cry_crimson = { - name = "Karmesin Einsatz", - colour = "Crimson", - text = { - "Gutscheine füllen sich auf allen {C:attention}geraden{} Antes auf", - }, - }, - stake_cry_diamond = { - name = "Diamant Einsatz", - colour = "Diamond", - text = { - "Zum gewinnen must du Ante {C:attention}10{} besiegen", - }, - }, - stake_cry_amber = { - name = "Bernstein Einsatz", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Packet Slots", - }, - }, - stake_cry_bronze = { - name = "Bronze Einsatz", - colour = "Bronze", - text = { - "Gutscheine sind {C:attention}50%{} teurer", - }, - }, - stake_cry_quartz = { - name = "Quartz Einsatz", - colour = "Quartz", - text = { - "Joker können {C:attention}Angeheftet{} sein", - "{s:0.8,C:inactive}(Bleibt an der Position ganz links angeheftet){}", - }, - }, - stake_cry_ruby = { - name = "Rubin Einsatz", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds können", - "{C:attention}Boss{} Blinds werden", - }, - }, - stake_cry_glass = { - name = "Glass Einsatz", - colour = "Glass", - text = { - "Karten können {C:attention}zerbrechen{} wenn sie gewertet werden", - }, - }, - stake_cry_sapphire = { - name = "Saphir Einsatz", - colour = "Sapphire", - text = { - "Verliere {C:attention}25%{} deines momentanen Geldes", - "am Ende der Ante", - "{s:0.8,C:inactive}(Maximal $10){}", - }, - }, - stake_cry_emerald = { - name = "Smaragd Einsatz", - colour = "Emerald", - text = { - "Karten, Packete und Gutscheine", - "können mit {C:attention}Gesicht unten{} sein", - "{s:0.8,C:inactive}(Nicht sichtbar bis gekauft){}", - }, - }, - stake_cry_platinum = { - name = "Platin Einsatz", - colour = "Platinum", - text = { - "Small Blinds sind {C:attention}entfernt{}", - }, - }, - stake_cry_twilight = { - name = "Zwielichtiger Einsatz", - colour = "Twilight", - text = { - "Karten können {C:attention}Banane{} sein", - "{s:0.8,C:inactive}(Chance von 1 zu 10, dass die Karte am Ende der Runde zerstört wird){}", - }, - }, - stake_cry_verdant = { - name = "Grassgrüner Einsatz", - colour = "Verdant", - text = { - "Benötigte Punktzahl skaliert", - "schneller für jede {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Glühender Einsatz", - colour = "Ember", - text = { - "Alle Gegenstände geben beim verkaufen kein Geld", - }, - }, - stake_cry_dawn = { - name = "Dämmernder Einsatz", - colour = "Dawn", - text = { - "Tarot- und Geisterkarten beinflussen {C:attention}1", - "Karte weniger", - "{s:0.8,C:inactive}(Minimal 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizont Einsatz", - colour = "Horizon", - text = { - "Wenn Blind asgewählt ist, füge eine", - "{C:attention}zufällige Karte{} zum Deck hinzu", - }, - }, - stake_cry_blossom = { - name = "Blühender Einsatz", - colour = "Blossom", - text = { - "{C:attention}Letzte{} Boss Blinds können nun", - "in {C:attention}allen{} Antes auftauchen", - }, - }, - stake_cry_azure = { - name = "Azurblauer Einsatz", - colour = "Azure", - text = { - "Werte auf Jokern sind", - "um {C:attention}20%{} reduziert", - }, - }, - stake_cry_ascendant = { - name = "Aufgestiegener Einsatz", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop Slots", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral-Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Bananen-Tag", - text = { - "Erstellt {C:attention}#1#", - "{C:inactive}(Muss Platz haben){}", - }, - }, - tag_cry_bettertop_up = { - name = "Besserer Auffüllungs-Tag", - text = { - "Erstellt bis zu {C:attention}#1#", - "{C:green}Ungewöhnliche{} Joker", - "{C:inactive}(Muss Platz haben){}", - }, - }, - tag_cry_better_voucher = { - name = "Golder Gutschein-Tag", - text = { - "Fügt einen Level {C:attention}#1#{} Gutschein", - "zum Shop hinzu", - }, - }, - tag_cry_blur = { - name = "Verschwommener Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Verschwommen{}", - }, - }, - tag_cry_booster = { - name = "Booster-Tag", - text = { - "Nächstes {C:cry_code}Booster Packet{} hat", - "{C:attention}doppelt so viele{} Karten und", - "{C:attention}doppelt so viele{} Auswahlen", - }, - }, - tag_cry_bundle = { - name = "Bündel-Tag", - text = { - "Erstelle einen {C:attention}Standard-Tag{}, {C:tarot}Charme-Tag{},", - "{C:attention}Clown-Tag{}, und {C:planet}Meteor-Tag", - }, - }, - tag_cry_cat = { - name = "Katzen-Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Konsolen-Tag", - text = { - "Gibt ein kostenloses", - "{C:cry_code}Program Packet", - }, - }, - tag_cry_double_m = { - name = "Doppel M Tag", - text = { - "Shop hat einen", - "{C:dark_edition}Lustigen {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Ermächtigter Tag", - text = { - "Gibt ein kostenloses {C:spectral}Geisterpacket", - "mit {C:legendary,E:1}Die Seele{} und {C:cry_exotic,E:1}Portal{}", - }, - }, - tag_cry_epic = { - name = "Epischer Tag", - text = { - "Shop hat einen", - "{C:cry_epic}Epischen Joker{} mit halben Preis", - }, - }, - tag_cry_gambler = { - name = "Zocker Tag", - text = { - "Chance von {C:green}#1# zu #2#{} einen", - "{C:cry_exotic,E:1}Ermächtigten Tag{} zu erstellen", - }, - }, - tag_cry_glass = { - name = "Zerbrechlicher Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Zerbrechlich{}", - }, - }, - tag_cry_glitched = { - name = "Fehlerhafter Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Fehlerhaft{}", - }, - }, - tag_cry_gold = { - name = "Goldener Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Gold{}", - }, - }, - tag_cry_gourmand = { - name = "Vielfraß Tag", - text = { - "Shop hat einen Kostenlosen", - "{C:attention}Essen Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gibt ein Kostenloses", - "{C:cry_ascendant}Meme Packet", - }, - }, - tag_cry_m = { - name = "Lustiger Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Lustig{}", - }, - }, - tag_cry_memory = { - name = "Erinnerungs Tag", - text = { - "Erstelle {C:attention}#1#{} Kopien des", - "als letztes genutzen {C:attention}Tag{}", - "in diesem Durchlauf", - "{s:0.8,C:inactive}Kopierende Tags exkludiert", - "{s:0.8,C:inactive}Momentan: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaik Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Mosaik{}", - }, - }, - tag_cry_oversat = { - name = "Übersättigter Tag", - text = { - "Nächster Basisedition", - "Joker ist kostenlos und", - "wird {C:dark_edition}Übersättigt{}", - }, - }, - tag_cry_quadruple = { - name = "Vierfach Tag", - text = { - "Gibt {C:attention}#1#{} Kopien des", - "als nächstes erhaltenen {C:attention}Tags", - "{s:0.8,C:inactive}Kopierende Tags exkludiert", - }, - }, - tag_cry_quintuple = { - name = "Fünffach Tag", - text = { - "Gibt {C:attention}#1#{} Kopien des", - "als nächstes erhaltenen {C:attention}Tags", - "{s:0.8,C:inactive}Kopierende Tags exkludiert", - }, - }, - tag_cry_rework = { - name = "Überarbeitungs-Tag", - text = { - "Shop hat einen", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schema-Tag", - text = { - "Shop hat einen", - "{C:attention}Brainstorming", - }, - }, - tag_cry_scope = { - name = "Scope-Tag", - text = { - "{C:attention}+#1# {C:blue}Hände{} und", - "{C:red}Abwürfe{} nächste Runde", - }, - }, - tag_cry_triple = { - name = "Dreifach Tag", - text = { - "Gibt {C:attention}#1#{} Kopien des", - "als nächstes erhaltenen {C:attention}Tags", - "{s:0.8,C:inactive}Kopierende Tags exkludiert", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "Der Automat", - text = { - "Erstelle bis zu {C:attention}#1#", - "zufällige {C:cry_code}Code{} Karte", - "{C:inactive}(Muss Platz haben)", - }, - }, - c_cry_eclipse = { - name = "Die Finsterniss", - text = { - "Verstärkt {C:attention}#1#{} gewählte Karte", - "in eine {C:attention}Echo Karte", - }, - }, - c_cry_meld = { - name = "Verschmelzen", - text = { - "Wähle einen {C:attention}Joker{} oder eine", - "{C:attention}Spielkarte{} welche", - "{C:dark_edition}Doppelseitig{} wird", - }, - }, - c_cry_theblessing = { - name = "Der Segen", - text = { - "Erstellt {C:attention}1{}", - "zufälligen {C:attention}Verbrauchsgegenstand{}", - "{C:inactive}(Muss Platz haben){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Astroglyphe", - text = { - "Setzt Ante zu {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Lehre Leinwand", - text = { - "{C:attention}+#1#{} Handgröße", - }, - }, - v_cry_clone_machine = { - name = "Klonmaschine", - text = { - "Doppeltags werden", - "{C:attention}Fünffach-Tags{} und", - "erscheinen {C:attention}4X{} öfter", - }, - }, - v_cry_command_prompt = { - name = "Eingabeaufforderung", - text = { - "{C:cry_code}Code{} Karten", - "können im", - "{C:attention}shop{} auftauchen", - }, - }, - v_cry_copies = { - name = "Kopien", - text = { - "Doppeltags werden", - "{C:attention}Dreifach-Tags{} und", - "erscheinen {C:attention}2X{} öfter", - }, - }, - v_cry_curate = { - name = "Kurat", - text = { - "Alle Karten", - "erscheinen mit", - "einer {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Geschicklichkeit", - text = { - "Bekomme permanent", - "{C:blue}+#1#{} Hand/Hände", - "pro Runde", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "Nach jeder runde,", - "{X:dark_edition,C:white} X1.5 {} zu allen Werten", - "auf der Rückseite von", - "{C:dark_edition}Doppelseitigen{} Karten" - }, - }, - v_cry_double_slit = { - name = "Doppelschlitz", - text = { - "{C:attention}Verschmelzen{} kann im", - "Shop und in", - "Arkana Packeten auftauchen", - }, - }, - v_cry_double_vision = { - name = "Doppelsicht", - text = { - "{C:dark_edition}Doppelseitige{} Karten erscheinen", - "{C:attention}4X{} öfter", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker Slot(s)", - }, - }, - v_cry_massproduct = { - name = "Massenproduktion", - text = { - "Alle Karten und Parkete", - "im Shop kosten {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Geld Bohnenranke", - text = { - "Erhöhe Obergrenze", - "für Zinsen", - "zu {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multibestand", - text = { - "{C:attention}+#1#{} Karten Slot(s) und", - "{C:attention}+#1#{} Booster Packet Slot(s)", - "im Shop", - }, - }, - v_cry_pacclimator = { - name = "Planetenakklimatisierung", - text = { - "{C:planet}Planet{} Karten erscheinen", - "{C:attention}X#1#{} öfter", - "im Shop.", - "Alle zukünftigen {C:planet}Planeten{}", - "Karten sind {C:green}kostenlos{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Löse{} alle M Joker", - "für jedes Paar in", - "der gespielten Hand", - "{C:attention}erneut aus" - }, - }, - v_cry_pairing = { - name = "Paarung", - text = { - "{C:attention}Löse{} alle M Joker {C:attention}erneut aus", - "wenn gespielte Hand ein {C:attention}Paar{} ist", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computer", - text = { - "{C:cry_code}Code{} Karten können", - "{C:dark_edition}Negativ{} erscheinen", - }, - }, - v_cry_repair_man = { - name = "Reparaturmann", - text = { - "{C:attention}Löse{} alle M Joker {C:attention}erneut aus", - "wenn gespielte Hand ein {C:attention}Paar{} enthält", - }, - }, - v_cry_rerollexchange = { - name = "Aktualisierungsaustausch", - text = { - "Alle Aktualisierungen", - "kosten {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satelitenverbindung", - text = { - "{C:cry_code}Code{} Karten können", - "in allen {C:attention}Himmelpacketen{}", - "erscheinen", - }, - }, - v_cry_scope = { - name = "Galaktischer Umfang", - text = { - "Erstelle die {C:planet}Planeten", - "Karte für die gespielte", - "{C:attention}Pokerhand{}", - "{C:inactive}(Muss Platz haben){}", - }, - }, - v_cry_tacclimator = { - name = "Tarotakklimatisierung", - text = { - "{C:tarot}Tarot{} Karten erscheinen", - "{C:attention}X#1#{} öfter", - "im Shop.", - "Alle zukünftigen {C:tarot}Tarot{}", - "Karten sind {C:green}kostenlos{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Drucker", - text = { - "Doppeltags werden", - "{C:attention}Vierfach-Tags{} und", - "erscheinen {C:attention}3X{} öfter", - }, - }, - v_cry_threers = { - name = "Die 3 Rs", - text = { - "Bekomme permanent", - "{C:red}+#1#{} Abwurf/Abwürfe", - "pro Runde", - }, - }, - v_cry_stickyhand = { - name = "Klebrige Hand", - text = { - "{C:attention}+#1#{} Karten auswahl limit", - }, - }, - v_cry_grapplinghook = { - name = "Enterhaken", - text = { - "{C:attention}+#1#{} Karten auswahl limit", - "{C:inactive,s:0.7}NOTE: Hiermit kannst du mehr{}", - "{C:inactive,s:0.7}machen als du denkst{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperraum-Halteleine", - text = { - "{C:attention}+#1#{} Karten", - "auswahl limit", - "{C:inactive,s:0.7}NOTE: Bekommt später noch{}", - "{C:inactive,s:0.7}mehr funktionen{}", - }, - }, - }, - Other = { - banana = { - name = "Banane", - text = { - "Chance von {C:green}#1# zu #2#{} jede Runde", - "zerstört zu werden", - }, - }, - cry_rigged = { - name = "Manipuliert", - text = { - "Alle {C:cry_code}aufgelisteten{} Warscheinlichkeiten", - "sind {C:cry_code}garantiert", - }, - }, - cry_hooked = { - name = "Verhackt", - text = { - "Wenn dieser Joker {C:cry_code}ausgelöst{} wird,", - "löse {C:cry_code}#1#{} aus", - }, - }, + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Erstelle {C:attention}#1#{} Kopien eines", + "zufälligen {C:attention}Jokers{}, zerstöre", + "alle anderen Joker, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Portal", + text = { + "Erstelle einen zufälligen", + "{C:cry_exotic,E:1}Exotischen{C:attention} Joker{}, zerstöre", + "alle anderen Joker", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Füge einen zufälligen {C:attention}Verbrauchsgegenstand{}", + "als währen sie {C:dark_edition}Verstärkungen{}", + "zu allen Karten in der Hand hinzu", + }, + }, + c_cry_lock = { + name = "Schloss", + text = { + "Entferne {C:red}alle{} Sticker", + "von {C:red}allen{} Jokern,", + "dann füge {C:purple,E:1}Ewig{}", + "zu einem zufälligen {C:attention}Joker{} hinzu", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Erstelle eine Karte", + "{C:cry_code}deiner Wahl", + "{C:inactive,s:0.8}(Exotische Joker exkludiert)", + }, + }, + c_cry_replica = { + name = "Replik", + text = { + "Verwandle alle Karten", + "in der Hand", + "in eine {C:attention}zufällige{}", + "Karte in der Hand", + }, + }, + c_cry_source = { + name = "Quelle", + text = { + "Füge ein {C:cry_code}Grünes Siegel{}", + "zu {C:attention}#1#{} gewählten", + "Karte(n) hinzu", + }, + }, + c_cry_summoning = { + name = "Beschwörung", + text = { + "Erstelle einen zufälligen", + "{C:cry_epic}Epischen{} {C:joker}Joker{}, zerstöre", + "einen zufälligen {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Handel", + text = { + "{C:attention}Verliere{} einen zufälligen Gutschein,", + "bekomme {C:attention}2{} zufällige Gutscheine", + }, + }, + c_cry_typhoon = { + name = "Taifun", + text = { + "Füge ein {C:cry_azure}Azurblaues Siegel{}", + "zu {C:attention}#1#{} gewählten", + "Karte(n) hinzu", + }, + }, + c_cry_vacuum = { + name = "Vakuum", + text = { + "Entferne {C:red}alle {C:green}Modifikationen{}", + "von {C:red}allen{} Karten in der Hand,", + "Verdiene {C:money}$#1#{} pro entfernte {C:green}Modifikation{}", + "{C:inactive,s:0.7}(z.B. Verstärkungen, Siegel, Editionen)", + }, + }, + c_cry_white_hole = { + name = "Weißes Loch", + text = { + "{C:attention}Entferne{} alle Handlevel,", + "verbessere {C:legendary,E:1}meistgespielte{} Pokerhand", + "um {C:attention}3{} für jedes entfernte Level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pinker Einsatz", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Benötigte Punktzahl skaliert", + "schneller für jede {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brauner Einsatz", + colour = "Brown", + text = { + "Alle {C:attention}Sticker{} sind", + "gegenseitig Kompatibel", + }, + }, + stake_cry_yellow = { + name = "Gelber Einsatz", + colour = "Yellow", + text = { + "{C:attention}Sticker{} können auf", + "allen kaufbaren Gegenständen erscheinen", + }, + }, + stake_cry_jade = { + name = "Jade Einsatz", + colour = "Jade", + text = { + "Karten können mit {C:attention}Gesicht unten{} gezogen werden", + }, + }, + stake_cry_cyan = { + name = "Cyan Einsatz", + colour = "Cyan", + text = { + "{C:green}Ungewöhnliche{} und {C:red}Seltene{} Joker sind", + "seltener", + }, + }, + stake_cry_gray = { + name = "Grauer Einsatz", + colour = "Gray", + text = { + "Aktualisierungen erhöhen sich um {C:attention}$2{}", + }, + }, + stake_cry_crimson = { + name = "Karmesin Einsatz", + colour = "Crimson", + text = { + "Gutscheine füllen sich auf allen {C:attention}geraden{} Antes auf", + }, + }, + stake_cry_diamond = { + name = "Diamant Einsatz", + colour = "Diamond", + text = { + "Zum gewinnen must du Ante {C:attention}10{} besiegen", + }, + }, + stake_cry_amber = { + name = "Bernstein Einsatz", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Packet Slots", + }, + }, + stake_cry_bronze = { + name = "Bronze Einsatz", + colour = "Bronze", + text = { + "Gutscheine sind {C:attention}50%{} teurer", + }, + }, + stake_cry_quartz = { + name = "Quartz Einsatz", + colour = "Quartz", + text = { + "Joker können {C:attention}Angeheftet{} sein", + "{s:0.8,C:inactive}(Bleibt an der Position ganz links angeheftet){}", + }, + }, + stake_cry_ruby = { + name = "Rubin Einsatz", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds können", + "{C:attention}Boss{} Blinds werden", + }, + }, + stake_cry_glass = { + name = "Glass Einsatz", + colour = "Glass", + text = { + "Karten können {C:attention}zerbrechen{} wenn sie gewertet werden", + }, + }, + stake_cry_sapphire = { + name = "Saphir Einsatz", + colour = "Sapphire", + text = { + "Verliere {C:attention}25%{} deines momentanen Geldes", + "am Ende der Ante", + "{s:0.8,C:inactive}(Maximal $10){}", + }, + }, + stake_cry_emerald = { + name = "Smaragd Einsatz", + colour = "Emerald", + text = { + "Karten, Packete und Gutscheine", + "können mit {C:attention}Gesicht unten{} sein", + "{s:0.8,C:inactive}(Nicht sichtbar bis gekauft){}", + }, + }, + stake_cry_platinum = { + name = "Platin Einsatz", + colour = "Platinum", + text = { + "Small Blinds sind {C:attention}entfernt{}", + }, + }, + stake_cry_twilight = { + name = "Zwielichtiger Einsatz", + colour = "Twilight", + text = { + "Karten können {C:attention}Banane{} sein", + "{s:0.8,C:inactive}(Chance von 1 zu 10, dass die Karte am Ende der Runde zerstört wird){}", + }, + }, + stake_cry_verdant = { + name = "Grassgrüner Einsatz", + colour = "Verdant", + text = { + "Benötigte Punktzahl skaliert", + "schneller für jede {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Glühender Einsatz", + colour = "Ember", + text = { + "Alle Gegenstände geben beim verkaufen kein Geld", + }, + }, + stake_cry_dawn = { + name = "Dämmernder Einsatz", + colour = "Dawn", + text = { + "Tarot- und Geisterkarten beinflussen {C:attention}1", + "Karte weniger", + "{s:0.8,C:inactive}(Minimal 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizont Einsatz", + colour = "Horizon", + text = { + "Wenn Blind asgewählt ist, füge eine", + "{C:attention}zufällige Karte{} zum Deck hinzu", + }, + }, + stake_cry_blossom = { + name = "Blühender Einsatz", + colour = "Blossom", + text = { + "{C:attention}Letzte{} Boss Blinds können nun", + "in {C:attention}allen{} Antes auftauchen", + }, + }, + stake_cry_azure = { + name = "Azurblauer Einsatz", + colour = "Azure", + text = { + "Werte auf Jokern sind", + "um {C:attention}20%{} reduziert", + }, + }, + stake_cry_ascendant = { + name = "Aufgestiegener Einsatz", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop Slots", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral-Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Bananen-Tag", + text = { + "Erstellt {C:attention}#1#", + "{C:inactive}(Muss Platz haben){}", + }, + }, + tag_cry_bettertop_up = { + name = "Besserer Auffüllungs-Tag", + text = { + "Erstellt bis zu {C:attention}#1#", + "{C:green}Ungewöhnliche{} Joker", + "{C:inactive}(Muss Platz haben){}", + }, + }, + tag_cry_better_voucher = { + name = "Golder Gutschein-Tag", + text = { + "Fügt einen Level {C:attention}#1#{} Gutschein", + "zum Shop hinzu", + }, + }, + tag_cry_blur = { + name = "Verschwommener Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Verschwommen{}", + }, + }, + tag_cry_booster = { + name = "Booster-Tag", + text = { + "Nächstes {C:cry_code}Booster Packet{} hat", + "{C:attention}doppelt so viele{} Karten und", + "{C:attention}doppelt so viele{} Auswahlen", + }, + }, + tag_cry_bundle = { + name = "Bündel-Tag", + text = { + "Erstelle einen {C:attention}Standard-Tag{}, {C:tarot}Charme-Tag{},", + "{C:attention}Clown-Tag{}, und {C:planet}Meteor-Tag", + }, + }, + tag_cry_cat = { + name = "Katzen-Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Konsolen-Tag", + text = { + "Gibt ein kostenloses", + "{C:cry_code}Program Packet", + }, + }, + tag_cry_double_m = { + name = "Doppel M Tag", + text = { + "Shop hat einen", + "{C:dark_edition}Lustigen {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Ermächtigter Tag", + text = { + "Gibt ein kostenloses {C:spectral}Geisterpacket", + "mit {C:legendary,E:1}Die Seele{} und {C:cry_exotic,E:1}Portal{}", + }, + }, + tag_cry_epic = { + name = "Epischer Tag", + text = { + "Shop hat einen", + "{C:cry_epic}Epischen Joker{} mit halben Preis", + }, + }, + tag_cry_gambler = { + name = "Zocker Tag", + text = { + "Chance von {C:green}#1# zu #2#{} einen", + "{C:cry_exotic,E:1}Ermächtigten Tag{} zu erstellen", + }, + }, + tag_cry_glass = { + name = "Zerbrechlicher Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Zerbrechlich{}", + }, + }, + tag_cry_glitched = { + name = "Fehlerhafter Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Fehlerhaft{}", + }, + }, + tag_cry_gold = { + name = "Goldener Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Gold{}", + }, + }, + tag_cry_gourmand = { + name = "Vielfraß Tag", + text = { + "Shop hat einen Kostenlosen", + "{C:attention}Essen Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gibt ein Kostenloses", + "{C:cry_ascendant}Meme Packet", + }, + }, + tag_cry_m = { + name = "Lustiger Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Lustig{}", + }, + }, + tag_cry_memory = { + name = "Erinnerungs Tag", + text = { + "Erstelle {C:attention}#1#{} Kopien des", + "als letztes genutzen {C:attention}Tag{}", + "in diesem Durchlauf", + "{s:0.8,C:inactive}Kopierende Tags exkludiert", + "{s:0.8,C:inactive}Momentan: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaik Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Mosaik{}", + }, + }, + tag_cry_oversat = { + name = "Übersättigter Tag", + text = { + "Nächster Basisedition", + "Joker ist kostenlos und", + "wird {C:dark_edition}Übersättigt{}", + }, + }, + tag_cry_quadruple = { + name = "Vierfach Tag", + text = { + "Gibt {C:attention}#1#{} Kopien des", + "als nächstes erhaltenen {C:attention}Tags", + "{s:0.8,C:inactive}Kopierende Tags exkludiert", + }, + }, + tag_cry_quintuple = { + name = "Fünffach Tag", + text = { + "Gibt {C:attention}#1#{} Kopien des", + "als nächstes erhaltenen {C:attention}Tags", + "{s:0.8,C:inactive}Kopierende Tags exkludiert", + }, + }, + tag_cry_rework = { + name = "Überarbeitungs-Tag", + text = { + "Shop hat einen", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schema-Tag", + text = { + "Shop hat einen", + "{C:attention}Brainstorming", + }, + }, + tag_cry_scope = { + name = "Scope-Tag", + text = { + "{C:attention}+#1# {C:blue}Hände{} und", + "{C:red}Abwürfe{} nächste Runde", + }, + }, + tag_cry_triple = { + name = "Dreifach Tag", + text = { + "Gibt {C:attention}#1#{} Kopien des", + "als nächstes erhaltenen {C:attention}Tags", + "{s:0.8,C:inactive}Kopierende Tags exkludiert", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "Der Automat", + text = { + "Erstelle bis zu {C:attention}#1#", + "zufällige {C:cry_code}Code{} Karte", + "{C:inactive}(Muss Platz haben)", + }, + }, + c_cry_eclipse = { + name = "Die Finsterniss", + text = { + "Verstärkt {C:attention}#1#{} gewählte Karte", + "in eine {C:attention}Echo Karte", + }, + }, + c_cry_meld = { + name = "Verschmelzen", + text = { + "Wähle einen {C:attention}Joker{} oder eine", + "{C:attention}Spielkarte{} welche", + "{C:dark_edition}Doppelseitig{} wird", + }, + }, + c_cry_theblessing = { + name = "Der Segen", + text = { + "Erstellt {C:attention}1{}", + "zufälligen {C:attention}Verbrauchsgegenstand{}", + "{C:inactive}(Muss Platz haben){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Astroglyphe", + text = { + "Setzt Ante zu {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Lehre Leinwand", + text = { + "{C:attention}+#1#{} Handgröße", + }, + }, + v_cry_clone_machine = { + name = "Klonmaschine", + text = { + "Doppeltags werden", + "{C:attention}Fünffach-Tags{} und", + "erscheinen {C:attention}4X{} öfter", + }, + }, + v_cry_command_prompt = { + name = "Eingabeaufforderung", + text = { + "{C:cry_code}Code{} Karten", + "können im", + "{C:attention}shop{} auftauchen", + }, + }, + v_cry_copies = { + name = "Kopien", + text = { + "Doppeltags werden", + "{C:attention}Dreifach-Tags{} und", + "erscheinen {C:attention}2X{} öfter", + }, + }, + v_cry_curate = { + name = "Kurat", + text = { + "Alle Karten", + "erscheinen mit", + "einer {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Geschicklichkeit", + text = { + "Bekomme permanent", + "{C:blue}+#1#{} Hand/Hände", + "pro Runde", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "Nach jeder runde,", + "{X:dark_edition,C:white} X1.5 {} zu allen Werten", + "auf der Rückseite von", + "{C:dark_edition}Doppelseitigen{} Karten", + }, + }, + v_cry_double_slit = { + name = "Doppelschlitz", + text = { + "{C:attention}Verschmelzen{} kann im", + "Shop und in", + "Arkana Packeten auftauchen", + }, + }, + v_cry_double_vision = { + name = "Doppelsicht", + text = { + "{C:dark_edition}Doppelseitige{} Karten erscheinen", + "{C:attention}4X{} öfter", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker Slot(s)", + }, + }, + v_cry_massproduct = { + name = "Massenproduktion", + text = { + "Alle Karten und Parkete", + "im Shop kosten {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Geld Bohnenranke", + text = { + "Erhöhe Obergrenze", + "für Zinsen", + "zu {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multibestand", + text = { + "{C:attention}+#1#{} Karten Slot(s) und", + "{C:attention}+#1#{} Booster Packet Slot(s)", + "im Shop", + }, + }, + v_cry_pacclimator = { + name = "Planetenakklimatisierung", + text = { + "{C:planet}Planet{} Karten erscheinen", + "{C:attention}X#1#{} öfter", + "im Shop.", + "Alle zukünftigen {C:planet}Planeten{}", + "Karten sind {C:green}kostenlos{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Löse{} alle M Joker", + "für jedes Paar in", + "der gespielten Hand", + "{C:attention}erneut aus", + }, + }, + v_cry_pairing = { + name = "Paarung", + text = { + "{C:attention}Löse{} alle M Joker {C:attention}erneut aus", + "wenn gespielte Hand ein {C:attention}Paar{} ist", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computer", + text = { + "{C:cry_code}Code{} Karten können", + "{C:dark_edition}Negativ{} erscheinen", + }, + }, + v_cry_repair_man = { + name = "Reparaturmann", + text = { + "{C:attention}Löse{} alle M Joker {C:attention}erneut aus", + "wenn gespielte Hand ein {C:attention}Paar{} enthält", + }, + }, + v_cry_rerollexchange = { + name = "Aktualisierungsaustausch", + text = { + "Alle Aktualisierungen", + "kosten {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satelitenverbindung", + text = { + "{C:cry_code}Code{} Karten können", + "in allen {C:attention}Himmelpacketen{}", + "erscheinen", + }, + }, + v_cry_scope = { + name = "Galaktischer Umfang", + text = { + "Erstelle die {C:planet}Planeten", + "Karte für die gespielte", + "{C:attention}Pokerhand{}", + "{C:inactive}(Muss Platz haben){}", + }, + }, + v_cry_tacclimator = { + name = "Tarotakklimatisierung", + text = { + "{C:tarot}Tarot{} Karten erscheinen", + "{C:attention}X#1#{} öfter", + "im Shop.", + "Alle zukünftigen {C:tarot}Tarot{}", + "Karten sind {C:green}kostenlos{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Drucker", + text = { + "Doppeltags werden", + "{C:attention}Vierfach-Tags{} und", + "erscheinen {C:attention}3X{} öfter", + }, + }, + v_cry_threers = { + name = "Die 3 Rs", + text = { + "Bekomme permanent", + "{C:red}+#1#{} Abwurf/Abwürfe", + "pro Runde", + }, + }, + v_cry_stickyhand = { + name = "Klebrige Hand", + text = { + "{C:attention}+#1#{} Karten auswahl limit", + }, + }, + v_cry_grapplinghook = { + name = "Enterhaken", + text = { + "{C:attention}+#1#{} Karten auswahl limit", + "{C:inactive,s:0.7}NOTE: Hiermit kannst du mehr{}", + "{C:inactive,s:0.7}machen als du denkst{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperraum-Halteleine", + text = { + "{C:attention}+#1#{} Karten", + "auswahl limit", + "{C:inactive,s:0.7}NOTE: Bekommt später noch{}", + "{C:inactive,s:0.7}mehr funktionen{}", + }, + }, + }, + Other = { + banana = { + name = "Banane", + text = { + "Chance von {C:green}#1# zu #2#{} jede Runde", + "zerstört zu werden", + }, + }, + cry_rigged = { + name = "Manipuliert", + text = { + "Alle {C:cry_code}aufgelisteten{} Warscheinlichkeiten", + "sind {C:cry_code}garantiert", + }, + }, + cry_hooked = { + name = "Verhackt", + text = { + "Wenn dieser Joker {C:cry_code}ausgelöst{} wird,", + "löse {C:cry_code}#1#{} aus", + }, + }, cry_flickering = { - name = "Flackernd", - text = { - "Zerstört nach", - "{C:attention}#1#{} Auslösungen", - "{C:inactive}({C:attention}#2#{C:inactive} übrig)" - }, - }, - cry_flickering_desc = { --von Schokowürfel genutzt - name = "Flackernd", - text = { - "Zerstört nach", - "{C:attention}#1#{} Auslösungen", - }, - }, - cry_possessed = { - name = "Besessen", - text = { - "{C:attention}Deaktiviert{} Effekte und", - "{C:attention}kehrt sie um{} wenn möglich", - "Zerstört sich mit {C:attention}Geist" - }, - }, - --todo? add candy jokers to list - food_jokers = { - name = "Essen Joker", - text = { - "{s:0.8}Gros Michel, Ei, Eiscreme, Cavendish,", - "{s:0.8}Schwarze Bohne, Diät-Cola, Popcorn, Ramen,", - "{s:0.8}Selters, Saure Gurke, Chilischote, Karamel,", - "{s:0.8}Nostalgische Süßigkeit, Fast Food M, etc.", - }, - }, + name = "Flackernd", + text = { + "Zerstört nach", + "{C:attention}#1#{} Auslösungen", + "{C:inactive}({C:attention}#2#{C:inactive} übrig)", + }, + }, + cry_flickering_desc = { --von Schokowürfel genutzt + name = "Flackernd", + text = { + "Zerstört nach", + "{C:attention}#1#{} Auslösungen", + }, + }, + cry_possessed = { + name = "Besessen", + text = { + "{C:attention}Deaktiviert{} Effekte und", + "{C:attention}kehrt sie um{} wenn möglich", + "Zerstört sich mit {C:attention}Geist", + }, + }, + --todo? add candy jokers to list + food_jokers = { + name = "Essen Joker", + text = { + "{s:0.8}Gros Michel, Ei, Eiscreme, Cavendish,", + "{s:0.8}Schwarze Bohne, Diät-Cola, Popcorn, Ramen,", + "{s:0.8}Selters, Saure Gurke, Chilischote, Karamel,", + "{s:0.8}Nostalgische Süßigkeit, Fast Food M, etc.", + }, + }, v_cry_choco0 = { - name = "", - text = { - "Details eines aktiven", - "{C:cry_ascendant,E:1}Events{} werden hier erscheinen" - } - }, - ev_cry_choco1 = { - name = "1: Bessetzung", - text = { - "{C:attention}Joker{} und Spielkarten haben eine", - "Chance von {C:green}1 zu 3{} Flackernd zu bekommen", - "Erstelle einen {C:attention}Geist", - "{C:inactive,s:0.7}Du wurdest von einem Geist besessen und dein", - "{C:inactive,s:0.7}Bewustsein flackert ein und aus." - } - }, - ev_cry_choco2 = { - name = "2: Geisterhaus", - text = { - "Eine {C:attention}Blind{} überspringen bringt nichts", - "Eine {C:attention}Aktualisierung{} pro Shop erlaubt", - "{C:attention}Gutschein{} Preise sind verdoppelt", - "{C:inactive,s:0.7}Gruselige Geister haben Kontrolle übernommen! Berühre nichts", - "{C:inactive,s:0.7}und fliehe so schnell du kannst!", - } - }, - ev_cry_choco3 = { - name = "3: Hexengebräu", - text = { - "Erstelle 3 {C:attention}Tränke", - "Benutze einen am Ende der {C:attention}Small Blind{},", - "oder {C:attention}alle{} werden diese {C:attention}Ante{} angewendet", - "{C:inactive,s:0.7}Du wurderst von einer Hexe entführt!", - "{C:inactive,s:0.7}Sie bietet dir drei Tränke an und beobachtet dich genau.", - "{C:inactive,s:0.7}Wähle einen oder sie macht die Entscheidung für dich.", - } - }, - ev_cry_choco4 = { - name = "4: Mondabgrund", - text = { - "Gespielte Karten haben eine Chance von {C:green}1 zu 4{}", - "sich in eine zufällige {C:club}Kreuz{} Bildkarte zu verwandeln", - "Dividiere {C:attention}Mult{} durch die Ankahl gespielter Bildkarten", - "{C:inactive,s:0.7}Selbst ein Mann reines Herzes", - "{C:inactive,s:0.7}der Nachts immer betet..." - } - }, - ev_cry_choco5 = { - name = "5: Blutsauger", - text = { - "Entferne {C:attention}Verbesserungen{} von allen gespielten Karten", - "Chance von {C:green}1 zu 3{} {C:heart}Herz{} und", - "{C:diamond}Karo{} Karten zu zerstören", - "{C:inactive,s:0.7}Achte dich in der Nacht, denn", - "{C:inactive,s:0.7,E:1}die in den Schatten{C:inactive,s:0.7} suchen eine Stillung für ihren Durst..." - } - }, - ev_cry_choco6 = { - name = "6: Bitte nimm eins", - text = { - "Am {C:attention}Ende der Runde{}, öffne ein", - "zufälliges {C:attention}Booster{} Packet", - "{C:inactive,s:0.7}Als du die Straße hinunter läufst, siehst du eine", - "{C:inactive,s:0.7}Box mit vielen Booster Packeten. Warum nicht eins nehmen?" - } - }, - ev_cry_choco7 = { - name = "7: Festliche Atmosphäre", - text = { - "Erstelle 3 {C:attention}Süßes oder Saures{} und 1 {C:attention}Süßigkeitenkorb", - "Shops haben jede Runde ein {C:attention}Süßes oder Saures{}", - "{C:cry_candy}Süßigkeiten{} geben {C:money}$3{} wenn erhalten", - "{C:inactive,s:0.7}Die ganze Nachbarschaft ist gruselig dekoriert,", - "{C:inactive,s:0.7}komm und hab Spaß in der Festlichen Atmosphäre!" - } - }, - ev_cry_choco8 = { - name = "8: Candy Rain", - text = { - "When {C:attention}Blind{} defeated, obtain 1 {C:cry_candy}Candy{}", - "per hand remaining; Obtain a {C:attention}Food Joker{}", - "when a {C:cry_candy}Candy{} is generated", - "{C:inactive,s:0.7}Candies rain from the sky! Quick,", - "{C:inactive,s:0.7,E:1}grab as much as you can!" - } - }, - ev_cry_choco9 = { - name = "9: Süßigkeitenregen", - text = { - "Erhalte {C:money}$20", - "Alles verdiente {C:money}Geld{} ist {C:attention}verdoppelt", - "{C:inactive,s:0.7}Der Geist eines lang verstörbenen Verwanten", - "{C:inactive,s:0.7}besucht dich in der Mitte der Nacht!", - "{C:inactive,s:0.7}Ohne ein Wort gibt er dir ein einen Sack voll Geld,", - "{C:inactive,s:0.7}gibt dir ein freundliches Lächeln, und winkt als er wieder verschwindet.", - } - }, - ev_cry_choco10 = { - name = "10: Verehrte Antiquität", - text = { - "Ein {C:legendary}Legendärer{} {C:attention}Joker{} erscheint", - "in dem {C:attention}Gutschein{} slot für {C:money}$50", - "Nur kaufbar als {C:attention}letzter{} Gegenstand im Shop", - "{C:inactive,s:0.7}Du hast die Aufmerksamkeit des Geistes eines Relikts,", - "{C:inactive,s:0.7}bekommen, aber er wird nicht leicht zu bändigen sein.", - } - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} ist von den standard ({C:attention,s:0.7}HTTPS Modul{s:0.7} deaktiviert)", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Ewig", - text = { - "Alle Karten im Packet", - "sind {C:attention}Ewig{}", - }, - }, - cry_perishable_booster = { - name = "Verderblich", - text = { - "Alle Karten im Packet", - "sind {C:attention}Verderblich{}", - }, - }, - cry_rental_booster = { - name = "Gemietet", - text = { - "Alle Karten im Packet", - "sind {C:attention}Gemietet{}", - }, - }, - cry_pinned_booster = { - name = "Angeheftet", - text = { - "Alle Karten im Packet", - "sind {C:attention}Angeheftet{}", - }, - }, - cry_banana_booster = { - name = "Banane", - text = { - "Alle Karten im Packet", - "sind {C:attention}Banane{}", - }, - }, - cry_eternal_voucher = { - name = "Ewig", - text = { - "Can nicht gehandelt werden", - }, - }, - cry_perishable_voucher = { - name = "Verderblich", - text = { - "Geschwächt nach", - "{C:attention}#1#{} Runden", - "{C:inactive}({C:attention}#2#{C:inactive} übrig)", - }, - }, - cry_rental_voucher = { - name = "Gemietet", - text = { - "Verliere {C:money}$#1#{} am", - "Ende der Runde", - }, - }, - cry_pinned_voucher = { - name = "Angeheftet", - text = { - "Bleibt im Shop", - "bis eingelöst", - }, - }, - cry_banana_voucher = { - name = "Banane", - text = { - "Chance von {C:green}#1# zu #2#{} die", - "Einlösung am Ende der Runde aufzuheben", - }, - }, - cry_perishable_consumeable = { - name = "Verderblich", - text = { - "Geschwächt am", - "Ende der Runde", - }, - }, - cry_rental_consumeable = { - name = "Gemietet", - text = { - "Verliere {C:money}$#1#{} am Ende der", - "Runde und bei Nutzung", - }, - }, - cry_pinned_consumeable = { - name = "Angeheftet", - text = { - "Du kannst keine", - "nicht-{C:attention}Angeheftetn{} Verbrauchsgegenstände nutzen", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "Chance von {C:green}#1# zu #2#{} beim nutzen", - "nichts zu tuhen", - }, - }, - p_cry_code_normal_1 = { - name = "Program Packet", - text = { - "Wähle {C:attention}#1#{} aus bis zu", - "{C:attention}#2#{C:cry_code} Code{} Karten", - }, - }, - p_cry_code_normal_2 = { - name = "Program Packet", - text = { - "Wähle {C:attention}#1#{} aus bis zu", - "{C:attention}#2#{C:cry_code} Code{} Karten", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Packet", - text = { - "Wähle {C:attention}#1#{} aus bis zu", - "{C:attention}#2#{C:cry_code} Code{} Karten", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Packet", - text = { - "Wähle {C:attention}#1#{} aus bis zu", - "{C:attention}#2#{C:cry_code} Code{} Karten", - }, - }, - p_cry_empowered = { - name = "Geister Packet [Ermächtigter Tag]", - text = { - "Wähle {C:attention}#1#{} von bis zu", - "{C:attention}#2#{C:spectral} Geister{} Karten", - "{s:0.8,C:inactive}(Erstellt von Ermächtigten Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Packet", - text = { - "Wähle {C:attention}#1#{} von bis zu", - "{C:attention}#2# Meme Jokern{}", - }, - }, - p_cry_meme_two = { - name = "Meme Packet", - text = { - "Wähle {C:attention}#1#{} von bis zu", - "{C:attention}#2# Meme Jokern{}", - }, - }, - p_cry_meme_three = { - name = "Meme Packet", - text = { - "Wähle {C:attention}#1#{} von bis zu", - "{C:attention}#2# Meme Jokern{}", - }, - }, - undiscovered_code = { - name = "Nicht entdeckt", - text = { - "Kaufe oder nutze", - "diese Karte in einem", - "Durchlauf ohne Code", - "um zu lernen was es tuht" - } - }, + name = "", + text = { + "Details eines aktiven", + "{C:cry_ascendant,E:1}Events{} werden hier erscheinen", + }, + }, + ev_cry_choco1 = { + name = "1: Bessetzung", + text = { + "{C:attention}Joker{} und Spielkarten haben eine", + "Chance von {C:green}1 zu 3{} Flackernd zu bekommen", + "Erstelle einen {C:attention}Geist", + "{C:inactive,s:0.7}Du wurdest von einem Geist besessen und dein", + "{C:inactive,s:0.7}Bewustsein flackert ein und aus.", + }, + }, + ev_cry_choco2 = { + name = "2: Geisterhaus", + text = { + "Eine {C:attention}Blind{} überspringen bringt nichts", + "Eine {C:attention}Aktualisierung{} pro Shop erlaubt", + "{C:attention}Gutschein{} Preise sind verdoppelt", + "{C:inactive,s:0.7}Gruselige Geister haben Kontrolle übernommen! Berühre nichts", + "{C:inactive,s:0.7}und fliehe so schnell du kannst!", + }, + }, + ev_cry_choco3 = { + name = "3: Hexengebräu", + text = { + "Erstelle 3 {C:attention}Tränke", + "Benutze einen am Ende der {C:attention}Small Blind{},", + "oder {C:attention}alle{} werden diese {C:attention}Ante{} angewendet", + "{C:inactive,s:0.7}Du wurderst von einer Hexe entführt!", + "{C:inactive,s:0.7}Sie bietet dir drei Tränke an und beobachtet dich genau.", + "{C:inactive,s:0.7}Wähle einen oder sie macht die Entscheidung für dich.", + }, + }, + ev_cry_choco4 = { + name = "4: Mondabgrund", + text = { + "Gespielte Karten haben eine Chance von {C:green}1 zu 4{}", + "sich in eine zufällige {C:club}Kreuz{} Bildkarte zu verwandeln", + "Dividiere {C:attention}Mult{} durch die Ankahl gespielter Bildkarten", + "{C:inactive,s:0.7}Selbst ein Mann reines Herzes", + "{C:inactive,s:0.7}der Nachts immer betet...", + }, + }, + ev_cry_choco5 = { + name = "5: Blutsauger", + text = { + "Entferne {C:attention}Verbesserungen{} von allen gespielten Karten", + "Chance von {C:green}1 zu 3{} {C:heart}Herz{} und", + "{C:diamond}Karo{} Karten zu zerstören", + "{C:inactive,s:0.7}Achte dich in der Nacht, denn", + "{C:inactive,s:0.7,E:1}die in den Schatten{C:inactive,s:0.7} suchen eine Stillung für ihren Durst...", + }, + }, + ev_cry_choco6 = { + name = "6: Bitte nimm eins", + text = { + "Am {C:attention}Ende der Runde{}, öffne ein", + "zufälliges {C:attention}Booster{} Packet", + "{C:inactive,s:0.7}Als du die Straße hinunter läufst, siehst du eine", + "{C:inactive,s:0.7}Box mit vielen Booster Packeten. Warum nicht eins nehmen?", + }, + }, + ev_cry_choco7 = { + name = "7: Festliche Atmosphäre", + text = { + "Erstelle 3 {C:attention}Süßes oder Saures{} und 1 {C:attention}Süßigkeitenkorb", + "Shops haben jede Runde ein {C:attention}Süßes oder Saures{}", + "{C:cry_candy}Süßigkeiten{} geben {C:money}$3{} wenn erhalten", + "{C:inactive,s:0.7}Die ganze Nachbarschaft ist gruselig dekoriert,", + "{C:inactive,s:0.7}komm und hab Spaß in der Festlichen Atmosphäre!", + }, + }, + ev_cry_choco8 = { + name = "8: Candy Rain", + text = { + "When {C:attention}Blind{} defeated, obtain 1 {C:cry_candy}Candy{}", + "per hand remaining; Obtain a {C:attention}Food Joker{}", + "when a {C:cry_candy}Candy{} is generated", + "{C:inactive,s:0.7}Candies rain from the sky! Quick,", + "{C:inactive,s:0.7,E:1}grab as much as you can!", + }, + }, + ev_cry_choco9 = { + name = "9: Süßigkeitenregen", + text = { + "Erhalte {C:money}$20", + "Alles verdiente {C:money}Geld{} ist {C:attention}verdoppelt", + "{C:inactive,s:0.7}Der Geist eines lang verstörbenen Verwanten", + "{C:inactive,s:0.7}besucht dich in der Mitte der Nacht!", + "{C:inactive,s:0.7}Ohne ein Wort gibt er dir ein einen Sack voll Geld,", + "{C:inactive,s:0.7}gibt dir ein freundliches Lächeln, und winkt als er wieder verschwindet.", + }, + }, + ev_cry_choco10 = { + name = "10: Verehrte Antiquität", + text = { + "Ein {C:legendary}Legendärer{} {C:attention}Joker{} erscheint", + "in dem {C:attention}Gutschein{} slot für {C:money}$50", + "Nur kaufbar als {C:attention}letzter{} Gegenstand im Shop", + "{C:inactive,s:0.7}Du hast die Aufmerksamkeit des Geistes eines Relikts,", + "{C:inactive,s:0.7}bekommen, aber er wird nicht leicht zu bändigen sein.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} ist von den standard ({C:attention,s:0.7}HTTPS Modul{s:0.7} deaktiviert)", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Ewig", + text = { + "Alle Karten im Packet", + "sind {C:attention}Ewig{}", + }, + }, + cry_perishable_booster = { + name = "Verderblich", + text = { + "Alle Karten im Packet", + "sind {C:attention}Verderblich{}", + }, + }, + cry_rental_booster = { + name = "Gemietet", + text = { + "Alle Karten im Packet", + "sind {C:attention}Gemietet{}", + }, + }, + cry_pinned_booster = { + name = "Angeheftet", + text = { + "Alle Karten im Packet", + "sind {C:attention}Angeheftet{}", + }, + }, + cry_banana_booster = { + name = "Banane", + text = { + "Alle Karten im Packet", + "sind {C:attention}Banane{}", + }, + }, + cry_eternal_voucher = { + name = "Ewig", + text = { + "Can nicht gehandelt werden", + }, + }, + cry_perishable_voucher = { + name = "Verderblich", + text = { + "Geschwächt nach", + "{C:attention}#1#{} Runden", + "{C:inactive}({C:attention}#2#{C:inactive} übrig)", + }, + }, + cry_rental_voucher = { + name = "Gemietet", + text = { + "Verliere {C:money}$#1#{} am", + "Ende der Runde", + }, + }, + cry_pinned_voucher = { + name = "Angeheftet", + text = { + "Bleibt im Shop", + "bis eingelöst", + }, + }, + cry_banana_voucher = { + name = "Banane", + text = { + "Chance von {C:green}#1# zu #2#{} die", + "Einlösung am Ende der Runde aufzuheben", + }, + }, + cry_perishable_consumeable = { + name = "Verderblich", + text = { + "Geschwächt am", + "Ende der Runde", + }, + }, + cry_rental_consumeable = { + name = "Gemietet", + text = { + "Verliere {C:money}$#1#{} am Ende der", + "Runde und bei Nutzung", + }, + }, + cry_pinned_consumeable = { + name = "Angeheftet", + text = { + "Du kannst keine", + "nicht-{C:attention}Angeheftetn{} Verbrauchsgegenstände nutzen", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "Chance von {C:green}#1# zu #2#{} beim nutzen", + "nichts zu tuhen", + }, + }, + p_cry_code_normal_1 = { + name = "Program Packet", + text = { + "Wähle {C:attention}#1#{} aus bis zu", + "{C:attention}#2#{C:cry_code} Code{} Karten", + }, + }, + p_cry_code_normal_2 = { + name = "Program Packet", + text = { + "Wähle {C:attention}#1#{} aus bis zu", + "{C:attention}#2#{C:cry_code} Code{} Karten", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Packet", + text = { + "Wähle {C:attention}#1#{} aus bis zu", + "{C:attention}#2#{C:cry_code} Code{} Karten", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Packet", + text = { + "Wähle {C:attention}#1#{} aus bis zu", + "{C:attention}#2#{C:cry_code} Code{} Karten", + }, + }, + p_cry_empowered = { + name = "Geister Packet [Ermächtigter Tag]", + text = { + "Wähle {C:attention}#1#{} von bis zu", + "{C:attention}#2#{C:spectral} Geister{} Karten", + "{s:0.8,C:inactive}(Erstellt von Ermächtigten Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Packet", + text = { + "Wähle {C:attention}#1#{} von bis zu", + "{C:attention}#2# Meme Jokern{}", + }, + }, + p_cry_meme_two = { + name = "Meme Packet", + text = { + "Wähle {C:attention}#1#{} von bis zu", + "{C:attention}#2# Meme Jokern{}", + }, + }, + p_cry_meme_three = { + name = "Meme Packet", + text = { + "Wähle {C:attention}#1#{} von bis zu", + "{C:attention}#2# Meme Jokern{}", + }, + }, + undiscovered_code = { + name = "Nicht entdeckt", + text = { + "Kaufe oder nutze", + "diese Karte in einem", + "Durchlauf ohne Code", + "um zu lernen was es tuht", + }, + }, undiscovered_unique = { - name = "Nicht entdeckt", - text = { - "Kaufe oder nutze", - "diese Karte in einem", - "Durchlauf ohne Code", - "um zu lernen was es tuht" - } - }, - cry_green_seal = { - name = "Grünen Siegel", - text = { - "Erstellt eine {C:cry_code}Code{} Karte", - "wenn gespielt aber nicht gewertet", - "{C:inactive}(Muss Platz haben)", - }, - }, - cry_azure_seal = { - name = "Azurblaues Siegel", - text = { - "Erstelle {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planeten{} für gespielte", - "{C:attention}Pokerhand{}, dann", - "{C:red}zerstöre{} diese Karte", - }, - }, + name = "Nicht entdeckt", + text = { + "Kaufe oder nutze", + "diese Karte in einem", + "Durchlauf ohne Code", + "um zu lernen was es tuht", + }, + }, + cry_green_seal = { + name = "Grünen Siegel", + text = { + "Erstellt eine {C:cry_code}Code{} Karte", + "wenn gespielt aber nicht gewertet", + "{C:inactive}(Muss Platz haben)", + }, + }, + cry_azure_seal = { + name = "Azurblaues Siegel", + text = { + "Erstelle {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planeten{} für gespielte", + "{C:attention}Pokerhand{}, dann", + "{C:red}zerstöre{} diese Karte", + }, + }, Unique = { - c_cry_potion = { - name = "Trank", - text = { - "Gibt einen unbekannten", - "{C:attention}Fluch{} wenn genutz", - "{C:inactive,s:0.7}Von Schokoladenwürfel erhalten" - } - } - } - }, - }, - misc = { - poker_hands = { - ['cry_Bulwark'] = "Bollwerk", - ['cry_Clusterfuck'] = "Clusterfuck", - ['cry_UltPair'] = "Ultimatives Paar", - ['cry_WholeDeck'] = "Das ganze verfickte Deck", - }, - poker_hand_descriptions = { - ['cry_Bulwark'] = { - '5 ranglose, farbenlose Karten zusammen gespielt', - }, - ['cry_Clusterfuck'] = { - 'Mindestens 8 Karten, welche nicht', - 'Paar, Flush oder Straße enthalten' - }, - ['cry_UltPair'] = { - 'Zwei zwei Paare, bei denen jedes', - 'von ihnen von einer Farbe ist,', - 'was insgesammt 2 Farben ergibt.' - }, - ['cry_WholeDeck'] = { - 'Eine Hand, die jede Karte in', - 'in einem 52-Karten Deck enthält.', - 'Bist du verrückt?', - }, - }, - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Gesetzlich blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Durchbreche Unendlichkeit", - ach_cry_cryptid_the_cryptid = "Cryptid das Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Immobilienmakler", - ach_cry_jokes_on_you = "Der Witz geht auf dich, Kumpel!", - ach_cry_niw_uoy = "!nennoweg tsah uD", - ach_cry_now_the_fun_begins = "Hier fängt der Spaß erst richtig an.", - ach_cry_patience_virtue = "Geduld ist eine Tugend", - ach_cry_perfectly_balanced = "Perfekt ausgeglichen", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Stau", - ach_cry_ult_full_skip = "Ultimativer Full Skip", - ach_cry_used_crash = "Wir haben dich gewarnt", - ach_cry_what_have_you_done = "WAS HAST DU GETAHN?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Bekomme einen verschwommen Verschwommen Joker", - ach_cry_bullet_hell = "Habe 15 AP Joker", - ach_cry_break_infinity = "Bekomme 1.79e308 Chips in einer einzigen Hand", - ach_cry_cryptid_the_cryptid = "Benutze Cryptid auf Cryptid", - ach_cry_exodia = "Habe 5 Exotische Joker", - ach_cry_freak_house = "Spiele ein Flush House aus 6 und 9 von Herz während du Nice hast", - ach_cry_googol_play_pass = "Manipuliere eine Googol Play Karte", - ach_cry_haxxor = "Benutze einen cheat code", - ach_cry_home_realtor = "Aktiviere Fröhliches Haus vor Ante 8 (ohne DoE/Antimaterie)", - ach_cry_jokes_on_you = "Löse den Effect von dem Witz in Ante 1 aus und gewinne den Durchlauf trotzdem.", - ach_cry_niw_uoy = "Erreiche Ante -8", - ach_cry_now_the_fun_begins = "Bekomme Leinwand", - ach_cry_patience_virtue = "Warte bei der Lavendelschleife für 2 minuten bevor du sie besiegst", - ach_cry_perfectly_balanced = "Besiege das Sehr Faire Deck auf Aufgestiegenen Einsatz", - ach_cry_pull_request = "Lass ://COMMIT den Joker erstellen den es zerstört hat.", - ach_cry_traffic_jam = "Besiege alle Rush Hour Herausforderungen", - ach_cry_ult_full_skip = "Gewinne in einer Runde", - ach_cry_used_crash = "Benutze ://CRASH", - ach_cry_what_have_you_done = "Lösche oder opfere einen Exotischen Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dolchkrieg", - c_cry_onlycard = "Solo Karte", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Stickerbogen", - c_cry_sticker_sheet_plus = "Stickerbogen+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Musik", - cry_set_enable_features = "Wähle features zum Aktivieren (wird beim Neustart angewendet):", - cry_feat_achievements = "Erfolge", - ["cry_feat_antimatter deck"] = "Antimaterie Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Herausforderungen", - ["cry_feat_code cards"] = "Code Karten", - ["cry_feat_misc. decks"] = "Verschiedene Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechaniken", - ["cry_feat_enhanced decks"] = "Verstärkte Karten", - ["cry_feat_epic jokers"] = "Epische Joker", - ["cry_feat_exotic jokers"] = "Exotische Joker", - ["cry_feat_m jokers"] = "M Joker", - cry_feat_menu = "Eigene Main Menu", - ["cry_feat_misc."] = "Verschiedenes", - ["cry_feat_misc. jokers"] = "Verschiedene Joker", - cry_feat_planets = "Planeten", - cry_feat_jokerdisplay = "JokerDisplay (Macht nichts)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Hüllen", - cry_feat_spectrals = "Geisterkarten", + c_cry_potion = { + name = "Trank", + text = { + "Gibt einen unbekannten", + "{C:attention}Fluch{} wenn genutz", + "{C:inactive,s:0.7}Von Schokoladenwürfel erhalten", + }, + }, + }, + }, + }, + misc = { + poker_hands = { + ["cry_Bulwark"] = "Bollwerk", + ["cry_Clusterfuck"] = "Clusterfuck", + ["cry_UltPair"] = "Ultimatives Paar", + ["cry_WholeDeck"] = "Das ganze verfickte Deck", + }, + poker_hand_descriptions = { + ["cry_Bulwark"] = { + "5 ranglose, farbenlose Karten zusammen gespielt", + }, + ["cry_Clusterfuck"] = { + "Mindestens 8 Karten, welche nicht", + "Paar, Flush oder Straße enthalten", + }, + ["cry_UltPair"] = { + "Zwei zwei Paare, bei denen jedes", + "von ihnen von einer Farbe ist,", + "was insgesammt 2 Farben ergibt.", + }, + ["cry_WholeDeck"] = { + "Eine Hand, die jede Karte in", + "in einem 52-Karten Deck enthält.", + "Bist du verrückt?", + }, + }, + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Gesetzlich blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Durchbreche Unendlichkeit", + ach_cry_cryptid_the_cryptid = "Cryptid das Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Immobilienmakler", + ach_cry_jokes_on_you = "Der Witz geht auf dich, Kumpel!", + ach_cry_niw_uoy = "!nennoweg tsah uD", + ach_cry_now_the_fun_begins = "Hier fängt der Spaß erst richtig an.", + ach_cry_patience_virtue = "Geduld ist eine Tugend", + ach_cry_perfectly_balanced = "Perfekt ausgeglichen", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Stau", + ach_cry_ult_full_skip = "Ultimativer Full Skip", + ach_cry_used_crash = "Wir haben dich gewarnt", + ach_cry_what_have_you_done = "WAS HAST DU GETAHN?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Bekomme einen verschwommen Verschwommen Joker", + ach_cry_bullet_hell = "Habe 15 AP Joker", + ach_cry_break_infinity = "Bekomme 1.79e308 Chips in einer einzigen Hand", + ach_cry_cryptid_the_cryptid = "Benutze Cryptid auf Cryptid", + ach_cry_exodia = "Habe 5 Exotische Joker", + ach_cry_freak_house = "Spiele ein Flush House aus 6 und 9 von Herz während du Nice hast", + ach_cry_googol_play_pass = "Manipuliere eine Googol Play Karte", + ach_cry_haxxor = "Benutze einen cheat code", + ach_cry_home_realtor = "Aktiviere Fröhliches Haus vor Ante 8 (ohne DoE/Antimaterie)", + ach_cry_jokes_on_you = "Löse den Effect von dem Witz in Ante 1 aus und gewinne den Durchlauf trotzdem.", + ach_cry_niw_uoy = "Erreiche Ante -8", + ach_cry_now_the_fun_begins = "Bekomme Leinwand", + ach_cry_patience_virtue = "Warte bei der Lavendelschleife für 2 minuten bevor du sie besiegst", + ach_cry_perfectly_balanced = "Besiege das Sehr Faire Deck auf Aufgestiegenen Einsatz", + ach_cry_pull_request = "Lass ://COMMIT den Joker erstellen den es zerstört hat.", + ach_cry_traffic_jam = "Besiege alle Rush Hour Herausforderungen", + ach_cry_ult_full_skip = "Gewinne in einer Runde", + ach_cry_used_crash = "Benutze ://CRASH", + ach_cry_what_have_you_done = "Lösche oder opfere einen Exotischen Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dolchkrieg", + c_cry_onlycard = "Solo Karte", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Stickerbogen", + c_cry_sticker_sheet_plus = "Stickerbogen+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Musik", + cry_set_enable_features = "Wähle features zum Aktivieren (wird beim Neustart angewendet):", + cry_feat_achievements = "Erfolge", + ["cry_feat_antimatter deck"] = "Antimaterie Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Herausforderungen", + ["cry_feat_code cards"] = "Code Karten", + ["cry_feat_misc. decks"] = "Verschiedene Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechaniken", + ["cry_feat_enhanced decks"] = "Verstärkte Karten", + ["cry_feat_epic jokers"] = "Epische Joker", + ["cry_feat_exotic jokers"] = "Exotische Joker", + ["cry_feat_m jokers"] = "M Joker", + cry_feat_menu = "Eigene Main Menu", + ["cry_feat_misc."] = "Verschiedenes", + ["cry_feat_misc. jokers"] = "Verschiedene Joker", + cry_feat_planets = "Planeten", + cry_feat_jokerdisplay = "JokerDisplay (Macht nichts)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Hüllen", + cry_feat_spectrals = "Geisterkarten", cry_feat_spooky = "Gruseliges Update", - ["cry_feat_more stakes"] = "Einsätze", - cry_feat_vouchers = "Gutscheine", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + ["cry_feat_more stakes"] = "Einsätze", + cry_feat_vouchers = "Gutscheine", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Packet", - k_cry_meme_pack = "Meme Packet", + k_cry_program_pack = "Program Packet", + k_cry_meme_pack = "Meme Packet", + + cry_critical_hit_ex = "Kritischer Treffer!", + cry_critical_miss_ex = "Kritisch verfehlt!", - cry_critical_hit_ex = "Kritischer Treffer!", - cry_critical_miss_ex = "Kritisch verfehlt!", - cry_potion1 = "-1 zu allen Handleveln", - cry_potion2 = "X1.15 Blindgröße", - cry_potion3 = "-1 Hand und Abwurf", + cry_potion2 = "X1.15 Blindgröße", + cry_potion3 = "-1 Hand und Abwurf", - cry_debuff_oldhouse = "Keine Full Houses", - cry_debuff_oldarm = "Must 4 oder weniger Karten spielen", - cry_debuff_oldpillar = "Keine Straßen", - cry_debuff_oldflint = "Keine Flushes", - cry_debuff_oldmark = "Keine Hände die ein Paar enthalten", - cry_debuff_obsidian_orb = "Hat die Fähigkeiten aller besiegten Bosse", + cry_debuff_oldhouse = "Keine Full Houses", + cry_debuff_oldarm = "Must 4 oder weniger Karten spielen", + cry_debuff_oldpillar = "Keine Straßen", + cry_debuff_oldflint = "Keine Flushes", + cry_debuff_oldmark = "Keine Hände die ein Paar enthalten", + cry_debuff_obsidian_orb = "Hat die Fähigkeiten aller besiegten Bosse", - k_code = "Code", + k_code = "Code", k_unique = "Einzigartig", - b_code_cards = "Code Karten", + b_code_cards = "Code Karten", b_unique_cards = "Einzigartige Karten", - b_pull = "PULL", - cry_hooked_ex = "Verhackt!", - k_end_blind = "Beende Blind", + b_pull = "PULL", + cry_hooked_ex = "Verhackt!", + k_end_blind = "Beende Blind", - cry_code_rank = "RANG EINGEBEN", - cry_code_enh = "VERSTÄRKUNG EINGEBEN", - cry_code_hand = "POKERHAND EINGEBEN", - cry_code_enter_card = "KARTE EINGEBEN", - cry_code_apply = "ANWENDEN", - cry_code_apply_previous = "VORHERIGES ANWENDEN", - cry_code_exploit = "HACKEN", - cry_code_exploit_previous = "VORHERIGES HACKEN", - cry_code_create = "ERSTELLEN", - cry_code_create_previous = "VERHERIGES ERSTELLEN", - cry_code_execute = "AUSFÜHREN", - cry_code_cancel = "ABBRECHEN", + cry_code_rank = "RANG EINGEBEN", + cry_code_enh = "VERSTÄRKUNG EINGEBEN", + cry_code_hand = "POKERHAND EINGEBEN", + cry_code_enter_card = "KARTE EINGEBEN", + cry_code_apply = "ANWENDEN", + cry_code_apply_previous = "VORHERIGES ANWENDEN", + cry_code_exploit = "HACKEN", + cry_code_exploit_previous = "VORHERIGES HACKEN", + cry_code_create = "ERSTELLEN", + cry_code_create_previous = "VERHERIGES ERSTELLEN", + cry_code_execute = "AUSFÜHREN", + cry_code_cancel = "ABBRECHEN", + + b_flip = "UMDREHEN", + b_merge = "KOMBINIEREN", - b_flip = "UMDREHEN", - b_merge = "KOMBINIEREN", - cry_hand_bulwark = "Bollwerk", - cry_hand_clusterfuck = "Clusterfuck", - cry_hand_ultpair = "Ultimatives Paar", + cry_hand_clusterfuck = "Clusterfuck", + cry_hand_ultpair = "Ultimatives Paar", - cry_again_q = "Nochmal?", - cry_curse = "Verflucht", - cry_curse_ex = "Verflucht!", - cry_sobbing = "Hilf mir...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", + cry_again_q = "Nochmal?", + cry_curse = "Verflucht", + cry_curse_ex = "Verflucht!", + cry_sobbing = "Hilf mir...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", cry_good_luck_ex = "Viel Glück!", - cry_sus_ex = "Verräter!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Runde", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "Keine Auslösungen übrig!", - cry_unredeemed = "Einlöung aufgehoben...", - cry_active = "Aktiv", - cry_inactive = "Inaktiv", + cry_sus_ex = "Verräter!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Runde", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "Keine Auslösungen übrig!", + cry_unredeemed = "Einlöung aufgehoben...", + cry_active = "Aktiv", + cry_inactive = "Inaktiv", - k_disable_music = "Musik deaktivieren", + k_disable_music = "Musik deaktivieren", - cry_epic = "Episch", - cry_exotic = "Exotisch", + cry_epic = "Episch", + cry_exotic = "Exotisch", cry_candy = "Süßigkeit", - cry_cursed = "Verflucht", + cry_cursed = "Verflucht", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Anmerkung", - cry_notif_jimball_d1 = "Jimball spielt den Song \"Funkytown\",", - cry_notif_jimball_d2 = "welcher urheberrechtlich geschützt ist und nicht", - cry_notif_jimball_d3 = "für Streams und Videos genutzt werden kann.", - }, - labels = { - food_jokers = "Essen Joker", - banana = "Banane", - code = "Code", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Anmerkung", + cry_notif_jimball_d1 = 'Jimball spielt den Song "Funkytown",', + cry_notif_jimball_d2 = "welcher urheberrechtlich geschützt ist und nicht", + cry_notif_jimball_d3 = "für Streams und Videos genutzt werden kann.", + }, + labels = { + food_jokers = "Essen Joker", + banana = "Banane", + code = "Code", unique = "Einzigartig", - cry_rigged = "Manipuliert", - cry_hooked = "Verhackt", + cry_rigged = "Manipuliert", + cry_hooked = "Verhackt", cry_flickering = "Flackernd", - cry_possessed = "Besezt", + cry_possessed = "Besezt", - cry_green_seal = "Grünes Siegel", - cry_azure_seal = "Azurblaues Siegel", + cry_green_seal = "Grünes Siegel", + cry_azure_seal = "Azurblaues Siegel", - cry_astral = "Astral", - cry_blur = "Verschwommen", - cry_double_sided = "Doppelseitig", - cry_glass = "Zerbrechlich", - cry_glitched = "Fehlerhaft", - cry_gold = "Golden", - cry_m = "Lustig", - cry_mosaic = "Mosaik", - cry_noisy = "Geräuchvoll", - cry_oversat = "Übersättigt", + cry_astral = "Astral", + cry_blur = "Verschwommen", + cry_double_sided = "Doppelseitig", + cry_glass = "Zerbrechlich", + cry_glitched = "Fehlerhaft", + cry_gold = "Golden", + cry_m = "Lustig", + cry_mosaic = "Mosaik", + cry_noisy = "Geräuchvoll", + cry_oversat = "Übersättigt", - cry_epic = "Episch", - cry_exotic = "Exotisch", + cry_epic = "Episch", + cry_exotic = "Exotisch", cry_candy = "Süßigkeit", - cry_cursed = "Verflucht", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Momentan {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Momentan {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Momentan {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Momentan {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Momentan {C:attention}+#1#{C:inactive} Handgröße)" }, - money = { "{C:inactive}(Momentan {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Erstelle {C:attention}#2# Joker{}" }, - make_tarot = { "Erstelle {C:attention}#2#{C:tarot} Tarot{} Karte" }, - make_planet = { "Erstelle {C:attention}#2#{C:planet} Planet{} Karte" }, - make_spectral = { "Erstelle {C:attention}#2#{C:spectral} Spectral{} Karte" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "wenn ein {C:attention}Booster{} geöffnet wird" }, - buying_card = { "wenn eine Karte gekauft wird" }, - selling_self = { "wenn diese Karte verkauft wird" }, - selling_card = { "wenn eine Karte verkauft wird" }, - reroll_shop = { "beim Aktualisieren" }, - ending_shop = { "am Ende des {C:attention}Shops{}" }, - skip_blind = { "wenn ein {C:attention}Blind{} übersprungen wird" }, - skipping_booster = { "wenn ein {C:attention}Booster Packet{} übersprungen wird" }, - playing_card_added = { "wenn eine {C:attention}Spielkarte{} zum Deck hinzugefügt wird" }, - first_hand_drawn = { "wenn die Runde beginnt" }, - setting_blind = { "wenn {C:attention}Blind{} ausgewählt wird" }, - remove_playing_cards = { "wenn eine Karte zerstört wird" }, - using_consumeable = { "wenn ein {C:attention}Verbrauchsgegenstand{} genutzt wird" }, - debuffed_hand = { "wenn gespielte {C:attention}Hand{} nicht erlaubt ist" }, - pre_discard = { "vor jedem Abwurf" }, - discard = { "für jede Abgewurfene Karte" }, - end_of_round = { "am Ende der {C:attention}Runde{}" }, - individual_play = { "für jede gewertete Karte" }, - individual_hand_score = { "für jede Karte in der Hand während der Auswertung" }, - individual_hand_end = { "für jede Karte in der Hand am Ende der {C:attention}Runde{}" }, - repetition_play = { "Löse gespielte Karten erneut aus" }, - repetition_hand = { "Löse alle Karten in der Hand erneut aus" }, - other_joker = { "für jeden {C:attention}Joker{}" }, - before = { "vor jeder {C:attention}Hand{}" }, - after = { "nach jeder {C:attention}Hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "wenn dies ein {C:blue}Gewöhnlicher{} {C:attention}Joker{} ist" }, - buy_uncommon = { "wenn dies ein {C:green}Ungewöhnlicher{} {C:attention}Joker{} ist" }, - tarot = { "wenn die Karte eine {C:tarot}Tarot{} Karte ist" }, - planet = { "wenn die Karte eine {C:planet}Planeten{} Karte" }, - spectral = { "wenn die Karte eine {C:spectral}Geisterkarte{} ist" }, - joker = { "wenn die Karte ein {C:attention}Joker{} ist" }, - suit = { "wenn die Karte ein {V:1}#3#{} ist" }, - rank = { "wenn die Karte ein {C:attention}#3#{} ist" }, - face = { "wenn die Karte eine {C:attention}Bildkarte{} ist" }, - boss = { "wenn {C:attention}Blind{} eine {C:attention}Boss {C:attention}Blind{} ist" }, - non_boss = { "wenn {C:attention}Blind{} eine {C:attention}Nicht-Boss {C:attention}Blind{} ist" }, - small = { "wenn {C:attention}Blind{} eine {C:attention}Small {C:attention}Blind{} ist" }, - big = { "wenn {C:attention}Blind{} eine {C:attention}Big {C:attention}Blind{} ist" }, - first = { "wenn dies die {C:attention}erste {C:attention}Hand{} ist" }, - last = { "wenn dies die {C:attention}letzte {C:attention}Hand{} ist" }, - common = { "wenn es ein {C:blue}Gewöhnicher{} {C:attention}Joker{} ist" }, - uncommon = { "wenn es ein {C:green}Ungewöhnlicher{} {C:attention}Joker{} ist" }, - rare = { "wenn es ein {C:red}Seltener{} {C:attention}Joker{} ist" }, - poker_hand = { "wenn Hand ein {C:attention}#3#{} is" }, - or_more = { "wenn Hand {C:attention}#3#{} oder mehr Karten enthält" }, - or_less = { "wenn Hand {C:attention}#3#{} oder weniger Karten enthält" }, - hands_left = { "wenn am Ende der Runde #3# {C:blue}Hände{} übrig sind" }, - discards_left = { "wenn am Ende der Runde #3# {C:red}Abwürfe{} übrig sind" }, - first_discard = { "wenn es der {C:attention}erste {C:attention}Abwurf{} ist" }, - last_discard = { "wenn es der {C:attention}letzte {C:attention}Abwurf{} ist" }, - odds = { "mit einer Chance von {C:green}#4# {C:green}zu {C:green}#3#{}" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Runde"}, - a_candy = {"+#1# Süßigkeit"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Runde"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + cry_cursed = "Verflucht", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Momentan {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Momentan {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Momentan {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Momentan {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Momentan {C:attention}+#1#{C:inactive} Handgröße)" }, + money = { "{C:inactive}(Momentan {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Erstelle {C:attention}#2# Joker{}" }, + make_tarot = { "Erstelle {C:attention}#2#{C:tarot} Tarot{} Karte" }, + make_planet = { "Erstelle {C:attention}#2#{C:planet} Planet{} Karte" }, + make_spectral = { "Erstelle {C:attention}#2#{C:spectral} Spectral{} Karte" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "wenn ein {C:attention}Booster{} geöffnet wird" }, + buying_card = { "wenn eine Karte gekauft wird" }, + selling_self = { "wenn diese Karte verkauft wird" }, + selling_card = { "wenn eine Karte verkauft wird" }, + reroll_shop = { "beim Aktualisieren" }, + ending_shop = { "am Ende des {C:attention}Shops{}" }, + skip_blind = { "wenn ein {C:attention}Blind{} übersprungen wird" }, + skipping_booster = { "wenn ein {C:attention}Booster Packet{} übersprungen wird" }, + playing_card_added = { "wenn eine {C:attention}Spielkarte{} zum Deck hinzugefügt wird" }, + first_hand_drawn = { "wenn die Runde beginnt" }, + setting_blind = { "wenn {C:attention}Blind{} ausgewählt wird" }, + remove_playing_cards = { "wenn eine Karte zerstört wird" }, + using_consumeable = { "wenn ein {C:attention}Verbrauchsgegenstand{} genutzt wird" }, + debuffed_hand = { "wenn gespielte {C:attention}Hand{} nicht erlaubt ist" }, + pre_discard = { "vor jedem Abwurf" }, + discard = { "für jede Abgewurfene Karte" }, + end_of_round = { "am Ende der {C:attention}Runde{}" }, + individual_play = { "für jede gewertete Karte" }, + individual_hand_score = { "für jede Karte in der Hand während der Auswertung" }, + individual_hand_end = { "für jede Karte in der Hand am Ende der {C:attention}Runde{}" }, + repetition_play = { "Löse gespielte Karten erneut aus" }, + repetition_hand = { "Löse alle Karten in der Hand erneut aus" }, + other_joker = { "für jeden {C:attention}Joker{}" }, + before = { "vor jeder {C:attention}Hand{}" }, + after = { "nach jeder {C:attention}Hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "wenn dies ein {C:blue}Gewöhnlicher{} {C:attention}Joker{} ist" }, + buy_uncommon = { "wenn dies ein {C:green}Ungewöhnlicher{} {C:attention}Joker{} ist" }, + tarot = { "wenn die Karte eine {C:tarot}Tarot{} Karte ist" }, + planet = { "wenn die Karte eine {C:planet}Planeten{} Karte" }, + spectral = { "wenn die Karte eine {C:spectral}Geisterkarte{} ist" }, + joker = { "wenn die Karte ein {C:attention}Joker{} ist" }, + suit = { "wenn die Karte ein {V:1}#3#{} ist" }, + rank = { "wenn die Karte ein {C:attention}#3#{} ist" }, + face = { "wenn die Karte eine {C:attention}Bildkarte{} ist" }, + boss = { "wenn {C:attention}Blind{} eine {C:attention}Boss {C:attention}Blind{} ist" }, + non_boss = { "wenn {C:attention}Blind{} eine {C:attention}Nicht-Boss {C:attention}Blind{} ist" }, + small = { "wenn {C:attention}Blind{} eine {C:attention}Small {C:attention}Blind{} ist" }, + big = { "wenn {C:attention}Blind{} eine {C:attention}Big {C:attention}Blind{} ist" }, + first = { "wenn dies die {C:attention}erste {C:attention}Hand{} ist" }, + last = { "wenn dies die {C:attention}letzte {C:attention}Hand{} ist" }, + common = { "wenn es ein {C:blue}Gewöhnicher{} {C:attention}Joker{} ist" }, + uncommon = { "wenn es ein {C:green}Ungewöhnlicher{} {C:attention}Joker{} ist" }, + rare = { "wenn es ein {C:red}Seltener{} {C:attention}Joker{} ist" }, + poker_hand = { "wenn Hand ein {C:attention}#3#{} is" }, + or_more = { "wenn Hand {C:attention}#3#{} oder mehr Karten enthält" }, + or_less = { "wenn Hand {C:attention}#3#{} oder weniger Karten enthält" }, + hands_left = { "wenn am Ende der Runde #3# {C:blue}Hände{} übrig sind" }, + discards_left = { "wenn am Ende der Runde #3# {C:red}Abwürfe{} übrig sind" }, + first_discard = { "wenn es der {C:attention}erste {C:attention}Abwurf{} ist" }, + last_discard = { "wenn es der {C:attention}letzte {C:attention}Abwurf{} ist" }, + odds = { "mit einer Chance von {C:green}#4# {C:green}zu {C:green}#3#{}" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Runde" }, + a_candy = { "+#1# Süßigkeit" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Runde" }, + a_tag_minus = { "-#1# Tag" }, + a_tags_minus = { "-#1# Tags" }, + a_tag = { "+#1# Tag" }, + a_tags = { "+#1# Tags" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Nutze diesen Joker", - "um auf #2##1#", - "#2#Einsatz#3# Schwieringkeit tu gewinnen" - }, - + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Nutze diesen Joker", + "um auf #2##1#", + "#2#Einsatz#3# Schwieringkeit tu gewinnen", + }, - cry_art = {"Bild: #1#"}, - cry_code = {"Code: #1#"}, - cry_idea = {"Idee: #1#"}, - }, - v_text = { - ch_c_cry_all_perishable = {"Alle Joker sind {C:eternal}Verderblich{}"}, - ch_c_cry_all_rental = {"Alle Joker sind {C:eternal}Gemietet{}"}, - ch_c_cry_all_pinned = {"Alle Joker sind {C:eternal}Angeheftet{}"}, - ch_c_cry_all_banana = {"Alle Joker sind {C:eternal}Banane{}"}, - ch_c_all_rnj = {"Alle Joker sind {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"Alle kaufbaren Gegenstände haben alle Sticker"}, - ch_c_cry_rush_hour = {"Alle Boss Blinds sind {C:attention}Die Uhr{} oder {C:attention}Lavendelschleife"}, - ch_c_cry_rush_hour_ii = {"Alle Blinds sind {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}Die Uhr{} und {C:attention}Lavendelschleife{} steigen {C:attention}doppelt{} so schnell"}, - ch_c_cry_no_tags = {"Überspringen ist {C:attention}deaktiviert{}"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "KEINE GUTSCHEINE", "FÜR DICH" }, - { "LAPPEN", "DACHTEST DU ICH WÜRDE", "DIR GUTSCHEINE GEBEN?" }, - { "NÖ!", "KEINE GUTSCHEINE HIER!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE GUT GENUG FÜR", "EINEN GUTSCHEIN ZU SEIN" }, - { "JIMBO", "VON DER VERWALTUNG", "HAT VERGESSEN NACHZUFÜLLEN" }, - { "OOPS!", "KEINE GUTSCHEINE", "" }, - { "DU NARR,", "WARUM GUCKST ÜBERHAUPT", "HIER HER? LOL" }, - { "DER GUTSCHEIN", "IST IN EINEM", "ANDEREN SCHLOSS" }, - { "$0", "LEER", "(HASTE GECHEKT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "ALLE GUTSCHEINE", "100% REDUZIERT", "(JEMAND HAT SIE SCHON GEKAUFT)" }, - { "VERSUCHST SPÄTER NOCHMAL", "HINWEIS: DU WIRST NICHT", "GENUG GELD HABEN" }, - { "HÄ?", '"GUTSCHEINE"?', "DAS IST NICHTMAL EIN WORT..." }, - { 'HALTE "R"', "UM ALLE GUTSCHEINE", "NACHZUFÜLLEN" }, - { "WÜSSTEST DU?", "ALT+F4 DRÜCKEN", "GIBT KOSTENLOSE GUTSCHEINE!" }, - { "TUHT MIR LEID,", "ES GIBT KEINE GUTSCHEINE", "WEGEN BUDGETVERKÜRZUNGEN" }, - { "RUFE 1-600-JIMBO AN", "UM DEINE ERFAHRUNG MIR", "GUTSCHEINEN ZU BEWERTEN" }, - { "BESIEGE", "ANTE 39 BOSS BLIND", "ZUM NACHFÜLLEN" }, - { "ZAUBERTRICK", "ICH HABE DIESEN GUTSCHEIN", "VERSCHWINDEN LASSEN" }, - { "WARUM IST EIN", "GUTSCHEIN WIE EIN", "SCHREIBTISCH?" }, - { "WIR HABEN DEINE GUTSCHEINE ZURÜCKGEZOGEN", "DEINE GUTSCHEINE WÄHREN IN", "ANDEREN DURCHLAUFEN BESSER" }, - { "WARUM NENNEN SIE ES GUTSCHEIN", "WENN ER NICHTMAL GUT GENUG IT", "ZU ERSCHEINEN" }, - { "LEIDER WURDE", "DAS GUTSCHEIN NACHFÜLL", "UPDATE ABGEBROCHEN" }, - { "BESIEGE DIE", "BOSS BLIND", "UM NICHTS ZU ÄNDERN" }, - { "DIE VÖGEL ZWITCHERN", "DIE BLUMEN BLÜHEN", "KINDER WIE DU..." }, - { "ES TUHT UNS LEID ZU SAGEN", "ALLE GUTSCHEINE WURDEN ZURÜCKGEZOGEN", "WEGEN EINEN SALMONELLENBEFALL" }, - { "GUTSCHEINE KONNTEN NICHT ANKOMMEN", "WEIL DER SHOP", "200% ÜBER DEM BUDGET IST" }, - { "DU MAGST", "GUTSCHEINE KAUFEN, NICHT WAHR?", "DU BIST EIN GUTSCHEINKÄUFER" }, - { "GUTSCHEINE", "!E", "GUTSCHEIN POOL" }, - { "ES", "GIBT KEINE", "GUTSCHEINE" }, - { "ES GIBT KEINEN", "WEINACHTSMANN", "UND AUCH KEINE GUTSCHEINE" }, - { "", "GUTNEIN", "" }, - { "DU", "HAST GERADE", "DAS SPIEL VERLOREN" }, - { "CAN ICH DIR IN DIESEN", "IN DIESEN SCHWEREN ZEITEN", "EIN SCHÖNES EI ANBIETEN?" }, - { "BERÜHRE ETWAS GRASS", "ANSTATT DIESES", "DECK ZU BENUZEN" }, - { "DU KÖNNTEST JETZT", "GERADE MIT DEM BLAUEN", "DECK SPEILEN" }, - { "KOSTENLOSE EXOTISCHE JOKER", "HOHLE SIE BEVOR", "ES ZU SPÄT IST (ausverkauft)" }, - { "DU KANNST BEWEISEN, DASS", "ICH FALSCH LIEGE INDEM", "DU DEN UNSICHBAREN GUTSCHEIN KAUFST" }, - { "", "keine gutscheine?", "" }, - { "siehst du diese werbung?", "wenn ja, dann funkioniert sie", "und du könntest sie nun für dich selbst haben" }, - { "DU VERPASST HIER", "MINDESTENS 5 GUTSCHEINE", "tonktonktonktonktonk" }, - { "10", "20 KEINE GUTSCHEINE XD", "30 GOTO 10" }, - { "GUTSCHEINE", "DIE SIND EIN PREMIUM FEATURE", "$199.99 JOLLARS ZUM FREISCHALTEN" }, - { "WAHRES GUTSCHEINLOS!?!?", "NUR AUFGESTIEGENER EINSATZ", "SEHR FAIRES DECK" }, - { "GEFÄLLT DIR DEINE", "GUTSCHEIN ERFAHRUNG? BEWERTE UNS MIT", "FÜNF STERNEN AUF JESTELP" }, - { "KOSTENLOSE GUTSCHEINE", "HEISSE GUTSCHEINE IN DEINER GEGEND!", "BEKOMME SCHNELL GUTSCHEINE MIT DIESEM LEICHTEN TRICK" }, - { "JETZT STELLE ICH DIE", "ERSTEN LEVEL 0 GUTSCHEINE VOR!", "(kommt bald in Crypid 1.0)" }, - { "EIN GUTSCHEIN!", "ES IST NUT EINE VORSTELLUNG", "WIR HABEN UNS VORGESTELLT, DASS DU IHN WILLST" }, - { "MACH DEINEN ADBLOCKER AUS!", "WIE SOLLEN WIR OHNE WERBUNG", "GUTSCHEINE VERKAUFEN" }, - { "WENN DU EIN", "PROBLEM HIERMIT HAST", "SIND WIR UNTER NORESPONSE@JMAIL.COM ERREICHBAR" }, - { "NICHT GENUG GELD", "FÜR DIESEN GUTSCHEIN", "ALSO WARUM SOLLTEN WIR IHN HIER HINTUN?" }, - { "WILLST DU EINEN GUTSCHEIN?", "HALT DIE FRESSE", "DU KRIEGST KEINE LOL" }, - { "^$%& KEINE", "GUTSCHEINE ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "EIN GUTSCHEIN (VERTRAU MIR)", "|\\/|", "|/\\|" }, - { - "... --- ...", - "... .--. .. . .-.. . .-. / . -. - ... -.-. .... .-.. ..-- ... ... . .-.. - / -- --- .-. ... . / -.-. --- -.. .", - "..-. ..-- .-. / . .. -. . -. / --. ..- - ... -.-. .... . .. -.", - }, - { "DURCHLAUF > NEU", "STARRE INS NICHTS", "FÜR EINE ODER ZWEI STUNDEN" }, - { "TUHT UNS LEID", "DER LETZTE TYP HAT", "IN DER PANIK ALLE GUTSCHEINE GEKAUFT" }, - { "WIE FÜHLT ES SICH AN", "KEINE GUTSCHEINE", "ZU KAUFEN" }, - { "JIMBO WAR WÜTEND", "UND HAT ALLE GUTSCHEINE", "WEGGEWORFEN" }, - { "VERSUCHE INDEX IN", "FELD 'GUTSCHEIN' ZU FINDEN", "(EIN NIL WERT)" }, - { - "HAST DU WIRKLICH ERWARTET, DASS ALL DIESE TEXT ZU LESEN DIR MÖGLICHERWEISE GUTSCHEINE BRINGEN KÖNNTE", - "TUHT MIR LEID DIR DAS MITTEILEN ZU MÜSSEN, ABER IN DIESEM DECK EXISTIEREN GUTSCHEINE NUNMAL NICHT", - "AUSSERDEM IST DIESER ABNORMAL LANGE TEXT NOCH EXTRA DAFÜR DA DEINE ZEIT BEIM LESEN ZU VERSCHWENDEN", - }, - { "GEH ZU", "https://youtu.be/p7YXXieghto", "FÜR KOSTENLOSE GUTSCHEINE" }, - { "BEDANK DICH BEI FOEGRO", "DASS ER DAS MOD AUF DEUTSCH ÜBERSETZT HAT", "STATT NUTZLOS NACH GUTSCHEINEN ZU SUCHEN" }, - } - } + cry_art = { "Bild: #1#" }, + cry_code = { "Code: #1#" }, + cry_idea = { "Idee: #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "Alle Joker sind {C:eternal}Verderblich{}" }, + ch_c_cry_all_rental = { "Alle Joker sind {C:eternal}Gemietet{}" }, + ch_c_cry_all_pinned = { "Alle Joker sind {C:eternal}Angeheftet{}" }, + ch_c_cry_all_banana = { "Alle Joker sind {C:eternal}Banane{}" }, + ch_c_all_rnj = { "Alle Joker sind {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "Alle kaufbaren Gegenstände haben alle Sticker" }, + ch_c_cry_rush_hour = { "Alle Boss Blinds sind {C:attention}Die Uhr{} oder {C:attention}Lavendelschleife" }, + ch_c_cry_rush_hour_ii = { "Alle Blinds sind {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}Die Uhr{} und {C:attention}Lavendelschleife{} steigen {C:attention}doppelt{} so schnell", + }, + ch_c_cry_no_tags = { "Überspringen ist {C:attention}deaktiviert{}" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "KEINE GUTSCHEINE", "FÜR DICH" }, + { "LAPPEN", "DACHTEST DU ICH WÜRDE", "DIR GUTSCHEINE GEBEN?" }, + { "NÖ!", "KEINE GUTSCHEINE HIER!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE GUT GENUG FÜR", "EINEN GUTSCHEIN ZU SEIN" }, + { "JIMBO", "VON DER VERWALTUNG", "HAT VERGESSEN NACHZUFÜLLEN" }, + { "OOPS!", "KEINE GUTSCHEINE", "" }, + { "DU NARR,", "WARUM GUCKST ÜBERHAUPT", "HIER HER? LOL" }, + { "DER GUTSCHEIN", "IST IN EINEM", "ANDEREN SCHLOSS" }, + { "$0", "LEER", "(HASTE GECHEKT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "ALLE GUTSCHEINE", "100% REDUZIERT", "(JEMAND HAT SIE SCHON GEKAUFT)" }, + { "VERSUCHST SPÄTER NOCHMAL", "HINWEIS: DU WIRST NICHT", "GENUG GELD HABEN" }, + { "HÄ?", '"GUTSCHEINE"?', "DAS IST NICHTMAL EIN WORT..." }, + { 'HALTE "R"', "UM ALLE GUTSCHEINE", "NACHZUFÜLLEN" }, + { "WÜSSTEST DU?", "ALT+F4 DRÜCKEN", "GIBT KOSTENLOSE GUTSCHEINE!" }, + { "TUHT MIR LEID,", "ES GIBT KEINE GUTSCHEINE", "WEGEN BUDGETVERKÜRZUNGEN" }, + { "RUFE 1-600-JIMBO AN", "UM DEINE ERFAHRUNG MIR", "GUTSCHEINEN ZU BEWERTEN" }, + { "BESIEGE", "ANTE 39 BOSS BLIND", "ZUM NACHFÜLLEN" }, + { "ZAUBERTRICK", "ICH HABE DIESEN GUTSCHEIN", "VERSCHWINDEN LASSEN" }, + { "WARUM IST EIN", "GUTSCHEIN WIE EIN", "SCHREIBTISCH?" }, + { + "WIR HABEN DEINE GUTSCHEINE ZURÜCKGEZOGEN", + "DEINE GUTSCHEINE WÄHREN IN", + "ANDEREN DURCHLAUFEN BESSER", + }, + { "WARUM NENNEN SIE ES GUTSCHEIN", "WENN ER NICHTMAL GUT GENUG IT", "ZU ERSCHEINEN" }, + { "LEIDER WURDE", "DAS GUTSCHEIN NACHFÜLL", "UPDATE ABGEBROCHEN" }, + { "BESIEGE DIE", "BOSS BLIND", "UM NICHTS ZU ÄNDERN" }, + { "DIE VÖGEL ZWITCHERN", "DIE BLUMEN BLÜHEN", "KINDER WIE DU..." }, + { "ES TUHT UNS LEID ZU SAGEN", "ALLE GUTSCHEINE WURDEN ZURÜCKGEZOGEN", "WEGEN EINEN SALMONELLENBEFALL" }, + { "GUTSCHEINE KONNTEN NICHT ANKOMMEN", "WEIL DER SHOP", "200% ÜBER DEM BUDGET IST" }, + { "DU MAGST", "GUTSCHEINE KAUFEN, NICHT WAHR?", "DU BIST EIN GUTSCHEINKÄUFER" }, + { "GUTSCHEINE", "!E", "GUTSCHEIN POOL" }, + { "ES", "GIBT KEINE", "GUTSCHEINE" }, + { "ES GIBT KEINEN", "WEINACHTSMANN", "UND AUCH KEINE GUTSCHEINE" }, + { "", "GUTNEIN", "" }, + { "DU", "HAST GERADE", "DAS SPIEL VERLOREN" }, + { "CAN ICH DIR IN DIESEN", "IN DIESEN SCHWEREN ZEITEN", "EIN SCHÖNES EI ANBIETEN?" }, + { "BERÜHRE ETWAS GRASS", "ANSTATT DIESES", "DECK ZU BENUZEN" }, + { "DU KÖNNTEST JETZT", "GERADE MIT DEM BLAUEN", "DECK SPEILEN" }, + { "KOSTENLOSE EXOTISCHE JOKER", "HOHLE SIE BEVOR", "ES ZU SPÄT IST (ausverkauft)" }, + { "DU KANNST BEWEISEN, DASS", "ICH FALSCH LIEGE INDEM", "DU DEN UNSICHBAREN GUTSCHEIN KAUFST" }, + { "", "keine gutscheine?", "" }, + { + "siehst du diese werbung?", + "wenn ja, dann funkioniert sie", + "und du könntest sie nun für dich selbst haben", + }, + { "DU VERPASST HIER", "MINDESTENS 5 GUTSCHEINE", "tonktonktonktonktonk" }, + { "10", "20 KEINE GUTSCHEINE XD", "30 GOTO 10" }, + { "GUTSCHEINE", "DIE SIND EIN PREMIUM FEATURE", "$199.99 JOLLARS ZUM FREISCHALTEN" }, + { "WAHRES GUTSCHEINLOS!?!?", "NUR AUFGESTIEGENER EINSATZ", "SEHR FAIRES DECK" }, + { "GEFÄLLT DIR DEINE", "GUTSCHEIN ERFAHRUNG? BEWERTE UNS MIT", "FÜNF STERNEN AUF JESTELP" }, + { + "KOSTENLOSE GUTSCHEINE", + "HEISSE GUTSCHEINE IN DEINER GEGEND!", + "BEKOMME SCHNELL GUTSCHEINE MIT DIESEM LEICHTEN TRICK", + }, + { "JETZT STELLE ICH DIE", "ERSTEN LEVEL 0 GUTSCHEINE VOR!", "(kommt bald in Crypid 1.0)" }, + { "EIN GUTSCHEIN!", "ES IST NUT EINE VORSTELLUNG", "WIR HABEN UNS VORGESTELLT, DASS DU IHN WILLST" }, + { "MACH DEINEN ADBLOCKER AUS!", "WIE SOLLEN WIR OHNE WERBUNG", "GUTSCHEINE VERKAUFEN" }, + { "WENN DU EIN", "PROBLEM HIERMIT HAST", "SIND WIR UNTER NORESPONSE@JMAIL.COM ERREICHBAR" }, + { "NICHT GENUG GELD", "FÜR DIESEN GUTSCHEIN", "ALSO WARUM SOLLTEN WIR IHN HIER HINTUN?" }, + { "WILLST DU EINEN GUTSCHEIN?", "HALT DIE FRESSE", "DU KRIEGST KEINE LOL" }, + { "^$%& KEINE", "GUTSCHEINE ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "EIN GUTSCHEIN (VERTRAU MIR)", "|\\/|", "|/\\|" }, + { + "... --- ...", + "... .--. .. . .-.. . .-. / . -. - ... -.-. .... .-.. ..-- ... ... . .-.. - / -- --- .-. ... . / -.-. --- -.. .", + "..-. ..-- .-. / . .. -. . -. / --. ..- - ... -.-. .... . .. -.", + }, + { "DURCHLAUF > NEU", "STARRE INS NICHTS", "FÜR EINE ODER ZWEI STUNDEN" }, + { "TUHT UNS LEID", "DER LETZTE TYP HAT", "IN DER PANIK ALLE GUTSCHEINE GEKAUFT" }, + { "WIE FÜHLT ES SICH AN", "KEINE GUTSCHEINE", "ZU KAUFEN" }, + { "JIMBO WAR WÜTEND", "UND HAT ALLE GUTSCHEINE", "WEGGEWORFEN" }, + { "VERSUCHE INDEX IN", "FELD 'GUTSCHEIN' ZU FINDEN", "(EIN NIL WERT)" }, + { + "HAST DU WIRKLICH ERWARTET, DASS ALL DIESE TEXT ZU LESEN DIR MÖGLICHERWEISE GUTSCHEINE BRINGEN KÖNNTE", + "TUHT MIR LEID DIR DAS MITTEILEN ZU MÜSSEN, ABER IN DIESEM DECK EXISTIEREN GUTSCHEINE NUNMAL NICHT", + "AUSSERDEM IST DIESER ABNORMAL LANGE TEXT NOCH EXTRA DAFÜR DA DEINE ZEIT BEIM LESEN ZU VERSCHWENDEN", + }, + { "GEH ZU", "https://youtu.be/p7YXXieghto", "FÜR KOSTENLOSE GUTSCHEINE" }, + { + "BEDANK DICH BEI FOEGRO", + "DASS ER DAS MOD AUF DEUTSCH ÜBERSETZT HAT", + "STATT NUTZLOS NACH GUTSCHEINEN ZU SUCHEN", + }, + }, + }, } diff --git a/Cryptid/localization/en-us.lua b/Cryptid/localization/en-us.lua index d416d3f..50aaae8 100644 --- a/Cryptid/localization/en-us.lua +++ b/Cryptid/localization/en-us.lua @@ -1,2150 +1,2361 @@ ---I couldn't get Meme Packs to work without crashing ---yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_beige = { - name = "Beige Deck", - text = { - "{C:attention}Common{} Jokers have", - "{C:attention}quadrupled{} values", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_beige = { + name = "Beige Deck", + text = { + "{C:attention}Common{} Jokers have", + "{C:attention}quadrupled{} values", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, b_cry_bountiful = { name = "Bountiful Deck", text = { - "After {C:blue}Play{} or {C:red}Discard{},", - "always draw {C:attention}5{} cards" + "After {C:blue}Play{} or {C:red}Discard{},", + "always draw {C:attention}5{} cards", }, }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_spooky = { - name = "Spooky Deck", - text = { - "Start with an {C:eternal}Eternal{} {C:attention,T:j_cry_chocolate_dice}Chocolate Die", - "After each {C:attention}Ante{}, create a", - "{C:cry_candy}Candy{} or {X:cry_cursed,C:white}Cursed{} Joker", - } - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - b_cry_legendary = { - name = "Legendary Deck", - text = { - "Start with a {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_e_deck = { + name = "Edition Deck", + text = { + "All cards are {C:dark_edition}#1#{}", + "Cards cannot change editions", + "{C:inactive}(Click to edit)", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_et_deck = { + name = "Enhancement Deck", + text = { + "All {C:attention}playing cards{}", + "are {C:attention}#1#{}(s)", + "{C:inactive}(Click to edit)", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_sk_deck = { + name = "Sticker Deck", + text = { + "All cards are {C:attention}#1#{}", + "{C:inactive}(Click to edit)", + }, + }, + b_cry_sl_deck = { + name = "Seal Deck", + text = { + "All playing cards have a {C:dark_edition}#1#{}", + "Cards cannot change seals", + "{C:inactive}(Click to edit)", + }, + }, + b_cry_spooky = { + name = "Spooky Deck", + text = { + "Start with an {C:eternal}Eternal{} {C:attention,T:j_cry_chocolate_dice}Chocolate Die", + "After each {C:attention}Ante{}, create a", + "{C:cry_candy}Candy{} or {X:cry_cursed,C:white}Cursed{} Joker", + }, + }, + b_cry_st_deck = { + name = "Suit Deck", + text = { + "All playing cards are {C:dark_edition}#1#", + "and cannot change suits", + "{C:inactive}(Click to edit)", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + b_cry_legendary = { + name = "Legendary Deck", + text = { + "Start with a {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to #2#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped", - "at #1#", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_alttab = { - name = "://ALTTAB", - text = { - "Create the {C:cry_code}current{}", - "blind's skip tag", - "{C:inactive}(Current: {C:cry_code}#1#{C:inactive})", - }, - }, - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_ctrl_v = { - name = "://CTRL+V", - text = { - "Create a {C:cry_code}copy{} of a selected", - "playing card or consumable" - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "Any played hand is considered", - "to {C:cry_code}contain{} a {C:cry_code}chosen{} poker hand,", - "resets at end of round", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers to become {C:cry_code}Hooked", - "{C:inactive,s:0.8}Only works properly if Jokers trigger in the same context,", - "{C:inactive,s:0.8}such as Joker and The Duo (both post-scoring)", - }, - }, - c_cry_inst = { - name = "://INSTANTIATE", - text = { - "Draw a card with selected card's {C:cry_code}rank{}", - "and one with selected card's {C:cry_code}suit{}", - "{C:inactive}(if possible){}", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_patch = { - name = "://PATCH", - text = { - "Remove all debuffs and stickers", - "from currently visible items", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - "{C:inactive}(Blank side can be merged", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to #2#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped", + "at #1#", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_trophy = { + name = "Lemon Trophy", + text = { + "Mult cannot", + "exceed Chips", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_alttab = { + name = "://ALTTAB", + text = { + "Create the {C:cry_code}current{}", + "blind's skip tag", + "{C:inactive}(Current: {C:cry_code}#1#{C:inactive})", + }, + }, + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card#s1#", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Create a {C:cry_code}copy{} of a selected", + "playing card or consumable", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Banish{} any {C:cry_code}selected{}", + "shop item, it will no longer", + "appear normally this run", + "{C:inactive}Multiuse: ({C:cry_code}#1#{C:inactive} remaining)", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "{C:cry_code}Choose{} a {C:cry_code}currently visible{} poker hand,", + "next hand is {C:cry_code}calculated{} as that hand,", + "and gains {C:cry_code}one{} temp {C:cry_code}Ascension Power{}", + "{C:inactive}Multiuse: ({C:cry_code}#1#{C:inactive} remaining)", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers to become {C:cry_code}Hooked", + "{C:inactive,s:0.8}Only works properly if Jokers trigger in the same context,", + "{C:inactive,s:0.8}such as Joker and The Duo (both post-scoring)", + }, + }, + c_cry_inst = { + name = "://INSTANTIATE", + text = { + "Draw a card with selected card's {C:cry_code}rank{}", + "and one with selected card's {C:cry_code}suit{}", + "{C:inactive}(if possible){}", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Remove all debuffs and stickers", + "from currently visible items", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card#s1# and", + "{C:cry_code}#1#{} extra choice#s1#", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected card#s1#", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + ["Content Set"] = { + set_cry_blind = { + name = "Blinds", + text = { + "{C:attention}Boss Blinds{} added", + "by Cryptid", + }, + }, + set_cry_code = { + name = "Code Cards", + text = { + "{C:cry_code}Code Cards{} and", + "related content", + }, + }, + set_cry_cursed = { + name = "Cursed Jokers", + text = { + "Harmful Jokers with", + "{X:cry_cursed,C:white}Cursed{} rarity", + }, + }, + set_cry_deck = { + name = "Decks", + text = { + "{C:attention}Decks{} added", + "by Cryptid", + }, + }, + set_cry_epic = { + name = "Epic Jokers", + text = { + "Jokers with", + "{C:cry_epic}Epic{} rarity", + "{C:inactive,s:0.8}(Between Rare and Legendary)", + }, + }, + set_cry_exotic = { + name = "Exotic Jokers", + text = { + "Powerful Jokers with", + "{C:cry_exotic}Exotic{} rarity", + }, + }, + set_cry_m = { + name = "M Jokers", + text = { + "Jokers related to", + "the letter {C:attention}M{}", + "and {C:attention}Jolly Joker", + }, + }, + set_cry_misc = { + name = "Misc.", + text = { + "Things that don't", + "fit in any other", + "{C:cry_ascendant}Thematic Set", + }, + }, + set_cry_misc_joker = { + name = "Misc. Jokers", + text = { + "{C:attention}Jokers{} that don't", + "fit in any other", + "{C:cry_ascendant}Thematic Set", + }, + }, + set_cry_planet = { + name = "Planet Cards", + text = { + "Miscellaneous {C:planet}Planet{} Cards", + "added by Cryptid", + }, + }, + set_cry_poker_hand_stuff = { + name = "Poker Hand Stuff", + text = { + "Add 4 new {C:attention}poker hands", + "and enable {C:attention}Ascended hands", + }, + }, + set_cry_spectral = { + name = "Spectral Cards", + text = { + "{C:spectral}Spectral{} Cards added", + "by Cryptid", + }, + }, + set_cry_spooky = { + name = "Spooky Update", + text = { + "Spooky Update content,", + "including {C:cry_candy}Candy{} Jokers", + }, + }, + set_cry_tag = { + name = "Tags", + text = { + "{C:attention}Tags{} added", + "by Cryptid", + }, + }, + set_cry_tier3 = { + name = "Tier 3 Vouchers", + text = { + "An extra {C:attention}tier{}", + "of Vouchers", + }, + }, + set_cry_timer = { + name = "Timer Mechanics", + text = { + "Items with {C:attention}time-based", + "effects and mechanics", + }, + }, + set_cry_voucher = { + name = "Misc. Vouchers", + text = { + "Tier 1 and 2 {C:attention}Vouchers{}", + "added by Cryptid", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time#s3#", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + "{C:inactive}(Blank side can be merged", "{C:inactive}with another card)", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - m_cry_light = { - name = "Light Card", - text = { - "When played with {C:attention}#4#{} {C:inactive}(#3#){} other", - "scoring cards, gain {X:mult,C:white}X#1#{} Mult and", - "increase requirement by {C:attention}5{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)" - }, - }, - }, - Joker = { - j_cry_adroit = { - name = "Adroit Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}#1#{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_arsonist = { - name = "Arsonist", - text = { - "If played hand", - "contains a {C:attention}Full House{},", - "{C:red}destroy{} all cards", - "after scoring", - } - }, - j_cry_astral_bottle = { - name = "Astral in a Bottle", - text = { - "When sold, apply {C:dark_edition}Astral{}", - "and {C:attention}Perishable{} to", - "a random {C:attention}Joker{}", - } - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blacklist = { - name = "Blacklist", - text = { - "If a {C:attention}#1#{} is held in hand or played,", - "set {C:chips}Chips{} and {C:mult}Mult{} to 0", - "{C:red,E:2}self destructs{} if no {C:attention}#1#{} in deck", - "{C:inactive,s:0.8}Rank does not change" - } - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonkers = { - name = "Bonkers Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}#3#{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - unlock = { - "AFK in the title", - 'screen for', - '{C:attention}10 minutes' - }, - }, - j_cry_brittle = { - name = "Brittle Candy", - text = { - "For the next {C:attention}#1#{} hands,", - "add {C:attention}Stone{}, {C:attention}Gold{}, or {C:attention}Steel{} to", - "the rightmost scoring card" - } - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}#4# in #3#{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_candy_basket = { - name = "Candy Basket", - text = { - "Sell this card to create {C:attention}#1#{} {C:cry_candy}Candies", - "{C:attention}+#2#{} {C:cry_candy}Candy{} every {C:attention}2{} Blinds defeated", - "{C:attention}+#3#{} {C:cry_candy}Candies{} when {C:attention}Boss Blind{} defeated" - } - }, - j_cry_candy_buttons = { - name = "Candy Buttons", - text = { - "The next {C:attention}#1#{} rerolls", - "cost {C:money}$1{}", - } - }, - j_cry_candy_cane = { - name = "Candy Cane", - text = { - "For the next {C:attention}#1#{} rounds,", - "playing cards give {C:money}$#2#", - "when {C:attention}retriggered" - } - }, - j_cry_candy_dagger = { - name = "Candy Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "to create a {C:cry_candy}Candy{}", - } - }, - j_cry_candy_sticks = { - name = "Candy Sticks", - text = { - "Next boss blind's effect isn't active", - "until you've played {C:attention}#1#{} hand", - } - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - unlock = { - "Retrigger a {C:attention}Joker", - '{C:attention}114{} times', - 'in one hand' - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_chocolate_dice = { - name = "Chocolate Die", - text = { - "Roll a {C:green}d10{} when", - "{C:attention}Boss Blind{} defeated", - "to start an {C:cry_ascendant,E:1}event", - "{C:inactive}(Currently: #1#)" - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - unlock = { - 'Obtain a {C:red}Rare{},', - '{C:cry_epic}Epic{} and {C:legendary}Legendary{}', - 'Joker before {C:attention}Ante 9' - } - }, - j_cry_clash = { - name = "The Clash", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "an {C:attention}#2#", - }, - unlock = { - "Win a run with", - "your final hand being", - "an {E:1,C:attention}Ultimate Pair" - }, - }, - j_cry_clicked_cookie = { - name = "Clicked Cookie", - text = { - "{C:chips}+#1#{} Chips", - "{C:chips}-#2#{} Chips when", - "you {C:attention}click", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - unlock = { - "Discover {C:attention}every", - '{C:cry_code}Code Card' - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_cotton_candy = { - name = "Cotton Candy", - text = { - "When sold, adjacent", - "{C:attention}Jokers{} become {C:dark_edition}Negative{}" - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - unlock = { - "Obtain an {C:purple}Eternal{}", - "{C:attention}Obelisk" - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_digitalhallucinations = { - name = "Digital Hallucinations", - text = { - "When a {C:attention}Booster Pack{} is opened,", - "{C:green}#1# in #2#{} chance to create", - "a random {C:dark_edition}Negative{} card", - "corresponding to its {C:attention}type{}", - }, - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create #2# {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create #1# more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { -- ????????????? - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - unlock = { - "Play a {C:attention}High Card{}", - 'with {C:attention}4{} cards', - 'of the {C:attention}same suit' - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run", - "without playing", - "a {E:1,C:attention}Two Pair" - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "when a {C:attention}Joker{} or", - "playing card is scored", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_exposed = { - name = "Exposed", - text = { - "Retrigger all non-{C:attention}face{} cards", - "{C:attention}#1#{} additional time(s)", - "All {C:attention}face{} cards are debuffed", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run", - "without playing", - "a {E:1,C:attention}High Card" - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - unlock = { - "Play a {C:attention}Straight Flush{}", - 'without the {C:attention}Straight', - 'being a {C:attention}Flush' - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "instead of the front side", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foolhardy = { - name = "Foolhardy Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "an {C:attention}#2#" - } - }, - j_cry_formidiulosus = { - name = "Formidiulosus", - text = { - "When a {X:cry_cursed,C:white}Cursed{} Joker is obtained, destroy it", - "Creates {C:attention}#1#{} {C:dark_edition}Negative {C:cry_candy}Candies{} at end of shop", - "Gains {X:dark_edition,C:white}^#2#{} Mult for each {C:cry_candy}Candy{} in possession", - "{C:inactive}(Currently {X:dark_edition,C:white}^#3#{C:inactive} Mult)", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_fuckedup = { - name = "Fucked-Up Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_ghost = { - name = "Ghost", - text = { - "At end of round:", - "{C:green}#1# in #2#{} chance to", - "{C:attention}possess{} a random {C:attention}Joker", - "{C:green}#1# in #3#{} chance to", - "{E:2,C:red}self destruct" - } - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - unlock = { - "Score {C:attention}1.0e100{} Chips", - "in a single hand" - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run", - "without playing", - "a {E:1,C:attention}Full House" - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jawbreaker = { - name = "Jawbreaker", - text = { - "When {C:attention}Boss Blind{} defeated,", - "{C:attention}double{} values of adjacent Jokers", - "{E:2,C:red}self destructs{}", - } - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - unlock = { - "Win a run", - "while playing a", - " {C:attention}single type of{}", - '{C:attention}poker hand' - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - unlock = { - "Defeat a {C:attention}Boss Blind", - 'with {C:attention}5{} or more', - '{C:attention}Editioned Cards{} or', - '{C:attention}Jokers' - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", - "and create #1# {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_mask = { - name = "Mask", - text = { - "Retrigger all {C:attention}face{} cards", - "{C:attention}#1#{} additional time(s)", - "All non-{C:attention}face{} cards are debuffed", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - unlock = { - "Play a {C:attention}Flush Five{}", - 'of {C:attention}Kings' - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_mellowcreme = { - name = "Mellowcreme", - text = { - "Sell this card to {C:attention}multiply", - "the sell value of all", - "{C:attention}consumables{} by {C:attention}X#1#" - } - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker{} at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_monopoly_money = { - name = "Monopoly Money", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}destroy{} purchased items", - "Halves money when {C:attention}sold", - } - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_necromancer = { - name = "Necromancer", - text = { - "When a Joker is {C:attention}sold{} for more than {C:attention}$0{},", - "gain a {C:attention}random{} Joker {C:attention}sold{} this run", - "with {C:money}$0{} sell value", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+#6#{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run", - "without playing", - "a {E:1,C:attention}Straight Flush" - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oil_lamp = { - name = "Oil Lamp", - text = { - "Increase values of {C:attention}Joker{} to the right", - "by {C:attention}X#1#{} at end of round", + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "time#s1# when scored", + }, + }, + m_cry_light = { + name = "Light Card", + text = { + "When triggered with {C:attention}#4#{} {C:inactive}(#3#){} other", + "scoring card#s4#, gain {X:mult,C:white}X#1#{} Mult and", + "increase requirement by {C:attention}5{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + }, + }, }, - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_penetrating = { - name = "Penetrating Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pity_prize = { - name = "Pity Prize", - text = { - "On skipping a {C:attention}Booster Pack{},", - "gain a random {C:attention}Tag{}", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - unlock = { - 'Increase your {C:attention}handsize', - 'to {C:attention}12' - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_pumpkin = { - name = "Pumpkin", - text = { - "Prevents Death if chips scored", - "are atleast {C:attention}50%{} of required chips", - "{C:attention}Turns into Carved Pumpkin", - "{C:attention}when{} {C:red}destroyed" - }, - }, - j_cry_carved_pumpkin = { - name = "Carved Pumpkin", - text = { - "The next {C:attention}#1#{} Boss Blinds", - 'will have their abilities', - '{C:attention}disabled' - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run with", - "your final hand being", - "a {E:1,C:attention}Five of a Kind" - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - unlock = { - "{C:green}1 in 20{} chance", - 'to unlock this card', - 'on {C:attention}Game Over' - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create #3# {C:green}Uncommon{} Joker", - "and #2# {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - "{C:attention}+#1#{} voucher slot", - }, - unlock = { - 'Win a run with', - 'only {C:attention}High Card' - }, - }, - j_cry_fleshpanopticon = { - name = "Flesh Panopticon", - text = { - "{C:red}X#1#{} {C:attention}Boss Blind{} size", - "When {C:attention}Boss Blind{} is defeated,", - "{C:red}self destructs{}, and creates", - "a {C:dark_edition}Negative{} {C:spectral}Gateway{} card", - "{C:inactive,s:0.8}\"This prison... to hold... me?\"" - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_spectrogram = { - name = "Spectrogram", - text = { - "{C:attention}Retriggers{} rightmost Joker", - "once for every {C:attention}Echo Card", - "that is played and scored", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_spy = { - name = "Spy", - text = { - "{X:mult,C:white} X#2# {} Mult, {C:dark_edition}+1{C:attention} Joker{} slot", - "{C:inactive}That #1# is a spy!", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_stronghold = { - name = "The Stronghold", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run with", - "your final hand being", - "a {E:1,C:attention}Bulwark" - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run with", - "your final hand being", - "a {E:1,C:attention}Flush Five" - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, + Joker = { + j_cry_test_modest = { + name = "Test Joker", + text = { + "{C:chips}+#1#{} Chip#s1#", + }, + }, + j_cry_test_mainline = { + name = "Test Joker", + text = { + "{C:chips}+#1#{} Chip#s1#", + "{C:money}+$44{} at start of {C:attention}Blind{}", + }, + }, + j_cry_test_madness = { + name = "Test Joker", + text = { + "{C:chips}+#1#{} Chip#s1#", + "{C:money}+$44444{} at start of {C:attention}Blind{}", + }, + }, + j_cry_test_cryptid_in_2025 = { + name = "Test Joker", + text = { + "{C:chips}+#1#{} Chip#s1#", + "{C:money}+$44444{} at start of {C:attention}Blind{}", + }, + }, + j_cry_adroit = { + name = "Adroit Joker", + text = { + "{C:chips}+#1#{} Chip#s1# if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}#1#{} cop#y1# of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_arsonist = { + name = "Arsonist", + text = { + "If played hand", + "contains a {C:attention}Full House{},", + "{C:red}destroy{} all cards", + "after scoring", + }, + }, + j_cry_astral_bottle = { + name = "Astral in a Bottle", + text = { + "When sold, apply {C:dark_edition}Astral{}", + "and {C:attention}Perishable{} to", + "a random {C:attention}Joker{}", + }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blacklist = { + name = "Blacklist", + text = { + "If a {C:attention}#1#{} is held in hand or played,", + "set {C:chips}Chips{} and {C:mult}Mult{} to 0", + "{C:red,E:2}self destructs{} if no {C:attention}#1#{} in deck", + "{C:inactive,s:0.8}Rank does not change", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand#s1# when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chip#s1#", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chip#s4# instead{}", + }, + }, + j_cry_bonkers = { + name = "Bonkers Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}#3#{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot#s1#", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + unlock = { + "AFK in the title", + "screen for", + "{C:attention}10 minutes", + }, + }, + j_cry_brittle = { + name = "Brittle Candy", + text = { + "For the next {C:attention}#1#{} hand#s1#,", + "add {C:attention}Stone{}, {C:attention}Gold{}, or {C:attention}Steel{} to", + "the rightmost scoring card", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}#4# in #3#{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_candy_basket = { + name = "Candy Basket", + text = { + "Sell this card to create {C:attention}#1#{} {C:cry_candy}Cand#y1#", + "{C:attention}+#2#{} {C:cry_candy}Cand#y2#{} every {C:attention}2{} Blinds defeated", + "{C:attention}+#3#{} {C:cry_candy}Cand#y3#{} when {C:attention}Boss Blind{} defeated", + }, + }, + j_cry_candy_buttons = { + name = "Candy Buttons", + text = { + "The next {C:attention}#1#{} reroll#s1#", + "cost {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Candy Cane", + text = { + "For the next {C:attention}#1#{} round#s1#,", + "playing cards give {C:money}$#2#", + "when {C:attention}retriggered", + }, + }, + j_cry_candy_dagger = { + name = "Candy Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "to create a {C:cry_candy}Candy{}", + }, + }, + j_cry_candy_sticks = { + name = "Candy Sticks", + text = { + "Next boss blind's effect isn't active", + "until you've played {C:attention}#1#{} hand#s1#", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + unlock = { + "Retrigger a {C:attention}Joker", + "{C:attention}114{} times", + "in one hand", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} round#s2#", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time#s1#", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} round#s3#", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_chocolate_dice = { + name = "Chocolate Die", + text = { + "Roll a {C:green}d10{} when", + "{C:attention}Boss Blind{} defeated", + "to start an {C:cry_ascendant,E:1}event", + "{C:inactive}(Currently: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hand#s2# remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + unlock = { + "Obtain a {C:red}Rare{},", + "{C:cry_epic}Epic{} and {C:legendary}Legendary{}", + "Joker before {C:attention}Ante 9", + }, + }, + j_cry_clash = { + name = "The Clash", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "an {C:attention}#2#", + }, + unlock = { + "Win a run with", + "your final hand being", + "an {E:1,C:attention}Ultimate Pair", + }, + }, + j_cry_clicked_cookie = { + name = "Clicked Cookie", + text = { + "{C:chips}+#1#{} Chip#s1#", + "{C:chips}-#2#{} Chip#s2# when", + "you {C:attention}click", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + unlock = { + "Discover {C:attention}every", + "{C:cry_code}Code Card", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "{C:green}#1# in #2#{} chance to duplicate", + "used {C:cry_code}Code{} cards", + "{C:red}Works once per round{}", + "{C:inactive}(Must have room)", + }, + }, + j_cry_copypaste2 = { + name = "Copy/Paste", + text = { + "{C:green}#1# in #2#{} chance to duplicate", + "used {C:cry_code}Code{} cards", + "{C:inactive}(Must have room)", + }, + }, + j_cry_cotton_candy = { + name = "Cotton Candy", + text = { + "When sold, adjacent", + "{C:attention}Jokers{} become {C:dark_edition}Negative{}", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chip#s1#", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chip#s1#)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chip#s1#", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + unlock = { + "Obtain an {C:purple}Eternal{}", + "{C:attention}Obelisk", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chip#s2#", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chip#s1#)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_digitalhallucinations = { + name = "Digital Hallucinations", + text = { + "When a {C:attention}Booster Pack{} is opened,", + "{C:green}#1# in #2#{} chance to create", + "a random {C:dark_edition}Negative{} card", + "corresponding to its {C:attention}type{}", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create #2# {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create #1# more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { -- ????????????? + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + unlock = { + "Play a {C:attention}High Card{}", + "with {C:attention}4{} cards", + "of the {C:attention}same suit", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run", + "without playing", + "a {E:1,C:attention}Two Pair", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "when a {C:attention}Joker{} or", + "playing card is scored", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create up to {C:attention}#1#{} cop#y1# of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker#s1#", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{} with", + "at least {C:money}$3{} of {C:attention}sell value", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_eternalflame2 = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_exposed = { + name = "Exposed", + text = { + "Retrigger all non-{C:attention}face{} cards", + "{C:attention}#1#{} additional time#s1#", + "All {C:attention}face{} cards are debuffed", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run", + "without playing", + "a {E:1,C:attention}High Card", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + unlock = { + "Play a {C:attention}Straight Flush{}", + "without the {C:attention}Straight", + "being a {C:attention}Flush", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "instead of the front side", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round#s2#", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foolhardy = { + name = "Foolhardy Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "an {C:attention}#2#", + }, + }, + j_cry_formidiulosus = { + name = "Formidiulosus", + text = { + "When a {X:cry_cursed,C:white}Cursed{} Joker is obtained, destroy it", + "Creates {C:attention}#1#{} {C:dark_edition}Negative {C:cry_candy}Cand#y1#{} at end of shop", + "Gains {X:dark_edition,C:white}^#2#{} Mult for each {C:cry_candy}Candy{} in possession", + "{C:inactive}(Currently {X:dark_edition,C:white}^#3#{C:inactive} Mult)", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chip#s1# if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chip#s2#", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chip#s1#)", + }, + }, + j_cry_fuckedup = { + name = Cryptid_config.family_mode and "Tidy Joker" or "Fucked-Up Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_ghost = { + name = "Ghost", + text = { + "At end of round:", + "{C:green}#1# in #2#{} chance to", + "{C:attention}possess{} a random {C:attention}Joker", + "{C:green}#1# in #3#{} chance to", + "{E:2,C:red}self destruct", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + unlock = { + "Score {C:attention}1.0e100{} Chips", + "in a single hand", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run", + "without playing", + "a {E:1,C:attention}Full House", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time#s2#,", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jawbreaker = { + name = "Jawbreaker", + text = { + "When {C:attention}Boss Blind{} defeated,", + "{C:attention}double{} values of adjacent Jokers", + "{E:2,C:red}self destructs{}", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + unlock = { + "Win a run", + "while playing a", + " {C:attention}single type of{}", + "{C:attention}poker hand", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + unlock = { + "Defeat a {C:attention}Boss Blind", + "with {C:attention}5{} or more", + "{C:attention}Editioned Cards{} or", + "{C:attention}Jokers", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retrigger#s1#){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", + "and create #1# {C:attention}Jolly Joker#s1#{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time#s1#", + }, + }, + j_cry_mask = { + name = "Mask", + text = { + "Retrigger all {C:attention}face{} cards", + "{C:attention}#1#{} additional time#s1#", + "All non-{C:attention}face{} cards are debuffed", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + unlock = { + "Play a {C:attention}Flush Five{}", + "of {C:attention}Kings", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", -- huh + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_mellowcreme = { + name = "Mellowcreme", + text = { + "Sell this card to {C:attention}multiply", + "the sell value of all", + "{C:attention}consumables{} by {C:attention}X#1#", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chip#s1# for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chip#s2#)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chip#s1#", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker{} at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chip#s1#)", + }, + }, + j_cry_monopoly_money = { + name = "Monopoly Money", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}destroy{} purchased items", + "Halves money when {C:attention}sold", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Joker#s2#{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_necromancer = { + name = "Necromancer", + text = { + "When a Joker is {C:attention}sold{} for more than {C:attention}$0{},", + "gain a {C:attention}random{} Joker {C:attention}sold{} this run", + "with {C:money}$0{} sell value", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slot#s1#", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chip#s1# if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time#s1#", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+#6#{} Joker", + "slot#s6# per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run", + "without playing", + "a {E:1,C:attention}Straight Flush", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oil_lamp = { + name = "Oil Lamp", + text = { + "Increase values of {C:attention}Joker{} to the right", + "by {C:attention}X#1#{} at end of round", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_penetrating = { + name = "Penetrating Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pity_prize = { + name = "Pity Prize", + text = { + "On skipping a {C:attention}Booster Pack{},", + "gain a random {C:attention}Tag{}", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + unlock = { + "Increase your {C:attention}handsize", + "to {C:attention}12", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_pumpkin = { + name = "Pumpkin", + text = { + "Prevents Death if chips scored", + "are atleast {C:attention}50%{} of required chips", + "{C:attention}Turns into Carved Pumpkin", + "{C:attention}when{} {C:red}destroyed", + }, + }, + j_cry_carved_pumpkin = { + name = "Carved Pumpkin", + text = { + "The next {C:attention}#1#{} Boss Blinds", + "will have their abilities", + "{C:attention}disabled", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run with", + "your final hand being", + "a {E:1,C:attention}Five of a Kind", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round#s2#", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + unlock = { + "{C:green}1 in 20{} chance", + "to unlock this card", + "on {C:attention}Game Over", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create #3# {C:green}Uncommon{} Joker#s3#", + "and #2# {C:attention}Jolly Joker#s2#{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create a(n) {V:1}#3#{} {C:attention}Joker{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chip#s1# if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chip#s1# if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot#s1#", + "{C:attention}+#1#{} Booster Pack slot#s1#", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot#s1#", + "{C:attention}+#1#{} card#s1# in shop", + "{C:attention}+#1#{} voucher slot#s1#", + }, + unlock = { + "Win a run with", + "only {C:attention}High Card", + }, + }, + j_cry_fleshpanopticon = { + name = "Flesh Panopticon", + text = { + "{C:red}X#1#{} {C:attention}Boss Blind{} size", + "When {C:attention}Boss Blind{} is defeated,", + "{C:red}self destructs{}, and creates", + "a {C:dark_edition}Negative{} {C:spectral}Gateway{} card", + '{C:inactive,s:0.8}"This prison... to hold... me?"', + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_spectrogram = { + name = "Spectrogram", + text = { + "{C:attention}Retriggers{} rightmost Joker", + "once for every {C:attention}Echo Card", + "that is played and scored", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_spy = { + name = "Spy", + text = { + "{X:mult,C:white} X#2# {} Mult, {C:dark_edition}+1{C:attention} Joker{} slot", + "{C:inactive}That #1# is a spy!", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_stronghold = { + name = "The Stronghold", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run with", + "your final hand being", + "a {E:1,C:attention}Bulwark", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chip#s1#, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run with", + "your final hand being", + "a {E:1,C:attention}Flush Five", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, j_cry_tax_fraud = { name = "Tax Fraud", text = { @@ -2152,2096 +2363,2231 @@ return { "at end of round", }, }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_treacherous = { - name = "Treacherous Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "an {C:attention}#2#" - } - }, - j_cry_trick_or_treat = { - name = "Trick-or-Treat", - text = { - "When {C:attention}sold{}:", - "{C:green}#1# in #2#{} chance to create {C:attention}2{} {C:cry_candy}Candies", - "Otherwise, create a {X:cry_cursed,C:white}Cursed{} Joker", - "{C:inactive}(Can overflow)" - } - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_tropical_smoothie = { - name = "Tropical Smoothie", - text = { - "Sell this card", - "to {C:attention}multiply{} values", - "of owned jokers by {C:attention}X#1#{}", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run with", - "your final hand being", - "a {E:1,C:attention}Flush House" - }, - }, - j_cry_universe = { - name = "Universe", - text = { - "{C:dark_edition}Astral{} cards", - "each give {X:dark_edition,C:white}^#1#{} Mult", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_wrapped = { - name = "Wrapped Candy", - text = { - "Create a random {C:attention}Food Joker{}", - "in {C:attention}#1#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_wtf = { - name = "The Fuck!?", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - unlock = { - "Win a run with", - "your final hand being", - "a {E:1,C:attention}Clusterfuck" - }, - }, - j_cry_zooble = { - name = "Zooble", - text = { - "If played hand does", - "{C:attention}not{} contain a {C:attention}Straight{},", - "this Joker gains {C:mult}+#2#{} Mult for every", - "{C:attention}unique rank{} in scoring hand", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Risti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Pata", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Kaikki = { - name = "Kaikki", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Hertta", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Ruutu", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_marsmoons = { - name = 'Phobos & Deimos', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult and", - "{C:chips}+#4#{} chips" - } - }, - c_cry_void = { - name = 'Void', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult and", - "{C:chips}+#4#{} chips" - } - }, - c_cry_asteroidbelt = { - name = 'Asteroid Belt', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult and", - "{C:chips}+#4#{} chips" - } - }, - c_cry_universe = { - name = 'The Universe In Its Fucking Entirety', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", - "{C:attention}#2#", - "{C:mult}+#3#{} Mult and", - "{C:chips}+#4#{} chips" - } - }, - c_cry_sunplanet = { - name = 'Sol', - text = { - "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){}", - "Increase power of", - "{C:attention}Ascended{} hands by {X:gold,C:white}0.05{}", - "{C:inactive}(Currently {X:gold,C:white}X(#2#^asc){C:inactive})" - } - }, - }, - Sleeve = { + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slot#s1#", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_treacherous = { + name = "Treacherous Joker", + text = { + "{C:chips}+#1#{} Chip#s1# if played", + "hand contains", + "an {C:attention}#2#", + }, + }, + j_cry_trick_or_treat = { + name = "Trick-or-Treat", + text = { + "When {C:attention}sold{}:", + "{C:green}#1# in #2#{} chance to create {C:attention}2{} {C:cry_candy}Candies", + "Otherwise, create a {X:cry_cursed,C:white}Cursed{} Joker", + "{C:inactive}(Can overflow)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chip#s1# if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_tropical_smoothie = { + name = "Tropical Smoothie", + text = { + "Sell this card", + "to {C:attention}multiply{} values", + "of owned jokers by {C:attention}X#1#{}", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run with", + "your final hand being", + "a {E:1,C:attention}Flush House", + }, + }, + j_cry_universe = { + name = "Universe", + text = { + "{C:dark_edition}Astral{} cards", + "each give {X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time#s1#", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_wrapped = { + name = "Wrapped Candy", + text = { + "Create a random {C:attention}Food Joker{}", + "in {C:attention}#1#{} round#s1#", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_wtf = { + name = Cryptid_config.family_mode and "The Cluster" or "The Fuck!?", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + unlock = { + "Win a run with", + "your final hand being", + "a {E:1,C:attention}Clusterfuck", + }, + }, + j_cry_zooble = { + name = "Zooble", + text = { + "If played hand does", + "{C:attention}not{} contain a {C:attention}Straight{},", + "this Joker gains {C:mult}+#2#{} Mult for every", + "{C:attention}unique rank{} in scoring hand", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Risti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Pata", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Kaikki = { + name = "Kaikki", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Hertta", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Ruutu", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_marsmoons = { + name = "Phobos & Deimos", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult and", + "{C:chips}+#4#{} chip#s4#", + }, + }, + c_cry_void = { + name = "Void", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult and", + "{C:chips}+#4#{} chip#s4#", + }, + }, + c_cry_asteroidbelt = { + name = "Asteroid Belt", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult and", + "{C:chips}+#4#{} chip#s4#", + }, + }, + c_cry_universe = { + name = Cryptid_config.family_mode and "Universe" or "The Universe In Its Fucking Entirety", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up", + "{C:attention}#2#", + "{C:mult}+#3#{} Mult and", + "{C:chips}+#4#{} chip#s4#", + }, + }, + c_cry_sunplanet = { + name = "Sol", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){}", + "Increase power of", + "{C:attention}Ascended{} hands by {X:gold,C:white}0.05{}", + "{C:inactive}(Currently {X:gold,C:white}X(#2#^asc){C:inactive})", + }, + }, + }, + Sleeve = { sleeve_cry_bountiful_sleeve = { name = "Bountiful Sleeve", text = { - "After {C:blue}Play{} or {C:red}Discard{},", - "always draw {C:attention}5{} cards" + "After {C:blue}Play{} or {C:red}Discard{},", + "always draw {C:attention}5{} cards", + }, + }, + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", }, }, - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, sleeve_cry_spooky_sleeve = { - name = "Spooky Sleeve", - text = { - "Start with an {C:eternal}Eternal{} {C:attention,T:j_cry_chocolate_dice}Chocolate Die", - "After each {C:attention}Ante{}, create a", - "{C:cry_candy}Candy{} or {X:cry_cursed,C:white}Cursed{} Joker", - } - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, + name = "Spooky Sleeve", + text = { + "Start with an {C:eternal}Eternal{} {C:attention,T:j_cry_chocolate_dice}Chocolate Die", + "After each {C:attention}Ante{}, create a", + "{C:cry_candy}Candy{} or {X:cry_cursed,C:white}Cursed{} Joker", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, sleeve_cry_legendary_sleeve = { - name = "Legendary Sleeve", - text = { - "Start with an {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + name = "Legendary Sleeve", + text = { + "Start with an {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Spectral = { - c_cry_adversary = { - name = "Adversary", - text = { - "{C:red}All{} of your {C:attention}Jokers{} become {C:dark_edition}Negative{},", - "{C:red}all{} {C:attention}Jokers{} in the shop cost", - "{C:red}double{} for the rest of the run", - }, - }, - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_chambered = { - name = "Chambered", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "copies of a", - "{C:attention}random{} consumable", - "in your possession", - "{C:inactive,s:0.8}Does not copy Chambered{}" - }, - }, - c_cry_conduit = { - name = "Conduit", - text = { - "Swap the {C:attention}editions{} of", - "{C:attention}2{} selected cards or {C:attention}Jokers{}", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_ritual = { - name = "Ritual", - text = { - "Apply {C:dark_edition}Negative{}, {C:dark_edition}Mosaic{},", - "or {C:dark_edition}Astral{} to {C:attention}#1#{}", - "selected card in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Oversaturated Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - c_cry_seraph = { - name = "The Seraph", - text = { - "Enhances {C:attention}#1#{} selected card", - "into a {C:attention}Light Card", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - unlock = { - 'Reach Ante {C:attention}36' - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - unlock = { - 'Reduce your {C:attention}handsize', - 'to {C:attention}0' - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - unlock = { - "Discover", - 'all {C:attention}Editions' - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - unlock = { - "Play {C:attention}5000{}", - '{C:attention}Playing Cards{}', - 'in total', - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - unlock = { - 'Redeem {C:dark_edition}Antimatter', - '{C:attention}10{} times' - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - unlock = { - "Redeem {C:attention}25", - '{C:attention}Vouchers', - 'in one run' - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - unlock = { - "Max out the", - '{C:attention}interest earnings{}', - 'for the {C:attention}whole run', - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s),", - "{C:attention}+#1#{} booster pack slot(s),", - "and {C:attention}+#1#{} voucher slot(s),", - "available in shop", - }, - unlock = { - "Spend {C:attention}1000$", - 'in shop', - 'in one run' - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - unlock = { - "Buy {C:attention}100{} {C:planet}Planet", - 'cards total in', - 'the shop', - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - unlock = { - "{C:attention}Reroll{} the shop", - 'a total of', - '{C:attention}250 times{}', - 'in one run' - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - unlock = { - "Use {C:attention}50{} {C:planet}Planet", - 'cards from', - '{C:attention}Booster Packs{}', - 'in one run' - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - unlock = { - "Buy {C:attention}100{} {C:tarot}Tarot", - 'cards total in', - 'the shop', - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - unlock = { - "Discard {C:attention}5000{}", - '{C:attention}Playing Cards{}', - 'in total', - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card selection limit", - "{C:inactive,s:0.7}You can do a lot more with this than you think.{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card selection limit", - "All selected cards contribute power", - "to {C:attention}Ascended Hands{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_absolute = { - name = "Absolute", - text = { - "Can't be sold", - "or destroyed", - "{C:attention}Unremovable{}", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - cry_flickering = { - name = "Flickering", - text = { - "Destroyed after", - "{C:attention}#1#{} triggers", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)" - }, - }, - cry_flickering_desc = { --used by choco dice - name = "Flickering", - text = { - "Destroyed after", - "{C:attention}#1#{} triggers", - }, - }, - cry_possessed = { - name = "Possessed", - text = { - "{C:attention}Disables{} and {C:attention}reverses{}", - "effects, if possible", - "Destroyed along with {C:attention}Ghost" - }, - }, - --todo? add candy jokers to list - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - ev_cry_choco0 = { - name = "", - text = { - "Details of an active", - "{C:cry_ascendant,E:1}event{} will appear here" - } - }, - ev_cry_choco1 = { - name = "1: Possession", - text = { - "{C:attention}Jokers{} and playing cards have a", - "{C:green}1 in 3{} chance of gaining Flickering", - "Create a {C:attention}Ghost", - "{C:inactive,s:0.7}You've been possessed by a ghost, and your", - "{C:inactive,s:0.7}consciousness is flickering in and out." - } - }, - ev_cry_choco2 = { - name = "2: Haunted House", - text = { - "Prevents skipping {C:attention}Blind{}", - "One {C:attention}reroll{} allowed per shop", - "{C:attention}Voucher{} prices are doubled", - "{C:inactive,s:0.7}Spooky spirits have taken over! Don't touch", - "{C:inactive,s:0.7}anything and get out as soon as possible!", - } - }, - ev_cry_choco3 = { - name = "3: Witch's Brews", - text = { - "Create 3 {C:attention}Potions", - "Use one by the end of the {C:attention}Small Blind{},", - "or {C:attention}all{} maluses will be applied this {C:attention}Ante", - "{C:inactive,s:0.7}You have been kidnapped by a witch!", - "{C:inactive,s:0.7}She offers you three potions, watching you closely.", - "{C:inactive,s:0.7}Pick one, lest she makes the decision for you.", - } - }, - ev_cry_choco4 = { - name = "4: Lunar Abyss", - text = { - "Played cards have a {C:green}1 in 4{} chance", - "to turn into a random {C:club}Club{} face card", - "Divide {C:attention}Mult{} by number of played face cards", - "{C:inactive,s:0.7}Even a man who's pure at heart", - "{C:inactive,s:0.7}and says his prayers by night..." - } - }, - ev_cry_choco5 = { - name = "5: Bloodsucker", - text = { - "Remove {C:attention}Enhancements{} from all played cards", - "{C:green}1 in 3{} chance to destroy", - "{C:heart}Heart{} and {C:diamond}Diamond{} cards", - "{C:inactive,s:0.7}Be wary in the dead of night, for", - "{C:inactive,s:0.7,E:1}they in the shadows{C:inactive,s:0.7} seek to quench their thirst..." - } - }, - ev_cry_choco6 = { - name = "6: Please Take One", - text = { - "At {C:attention}end of round{}, open a", - "random {C:attention}Booster{} Pack", - "{C:inactive,s:0.7}As you stroll down the streets, you spot a", - "{C:inactive,s:0.7}box of various Booster Packs. Might as well grab one!" - } - }, - ev_cry_choco7 = { - name = "7: Festive Atmosphere", - text = { - "Create 3 {C:attention}Trick-or-Treat{} and 1 {C:attention}Candy Basket", - "Shops have a {C:attention}Trick-or-Treat{} each round", - "{C:cry_candy}Candies{} give {C:money}$3{} when obtained", - "{C:inactive,s:0.7}The entire neighbourhood is decorated for spooky endeavours,", - "{C:inactive,s:0.7}come indulge in the festive atmosphere!" - } - }, - ev_cry_choco8 = { - name = "8: Candy Rain", - text = { - "When {C:attention}Blind{} defeated, obtain 1 {C:cry_candy}Candy{}", - "per hand remaining; Obtain a {C:attention}Food Joker{}", - "when a {C:cry_candy}Candy{} is generated", - "{C:inactive,s:0.7}Candies rain from the sky! Quick,", - "{C:inactive,s:0.7,E:1}grab as much as you can!" - } - }, - ev_cry_choco9 = { - name = "9: Ghostly Riches", - text = { - "Gain {C:money}$20", - "All {C:money}money{} earned is {C:attention}doubled", - "{C:inactive,s:0.7}The spectre of a long-gone relative of yours", - "{C:inactive,s:0.7}visits you in the middle of the night!", - "{C:inactive,s:0.7}Without a word, they place a bag of money in your hands,", - "{C:inactive,s:0.7}smile warmly, and wave as they fade into the air.", - } - }, - ev_cry_choco10 = { - name = "10: Revered Antique", - text = { - "A {C:legendary}Legendary{} {C:attention}Joker{} appears", - "in the {C:attention}Voucher{} slot for {C:money}$50", - "Only buyable as {C:attention}last{} item in shop", - "{C:inactive,s:0.7}You've attracted the attention of a relic's spirit,", - "{C:inactive,s:0.7}but it won't be easy to quell.", - } - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - undiscovered_unique = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - blurred_sdm0 = { - name = "a", - text = { - "{C:inactive,s:0.8}\"I hate this card\" - SDM_0, 2024{}", - }, - }, - }, - Unique = { - c_cry_potion = { - name = "Potion", - text = { - "Applies an unknown", - "{C:attention}malus{} when used", - "{C:inactive,s:0.7}Obtained from Chocolate Die" - } - } - } - }, - misc = { - poker_hands = { - ['cry_Bulwark'] = "Bulwark", - ['cry_Clusterfuck'] = "Clusterfuck", - ['cry_UltPair'] = "Ultimate Pair", - ['cry_WholeDeck'] = "The Entire Fucking Deck", - }, - poker_hand_descriptions = { - ['cry_Bulwark'] = { - '5 rankless, suitless cards', - }, - ['cry_Clusterfuck'] = { - 'At least 8 cards that do not', - 'contain a Pair, Flush, or Straight', - }, - ['cry_UltPair'] = { - 'Two Two Pairs, where each', - 'Two Pair is a single suit, for a', - 'total of two suits between them', - }, - ['cry_WholeDeck'] = { - 'A hand that contains every single', - 'card found in a 52-card deck.', - 'Are you insane?', - }, - }, - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - cry_feat_spooky = "Spooky Update", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + }, + }, + }, + Spectral = { + c_cry_adversary = { + name = "Adversary", + text = { + "{C:red}All{} of your {C:attention}Jokers{} become {C:dark_edition}Negative{},", + "{C:red}all{} {C:attention}Jokers{} in the shop cost", + "{C:red}double{} for the rest of the run", + }, + }, + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} cop#y1# of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_chambered = { + name = "Chambered", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "cop#y1# of a", + "{C:attention}random{} consumable", + "in your possession", + "{C:inactive,s:0.8}Does not copy Chambered{}", + }, + }, + c_cry_conduit = { + name = "Conduit", + text = { + "Swap the {C:attention}editions{} of", + "{C:attention}2{} selected cards or {C:attention}Jokers{}", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_ritual = { + name = "Ritual", + text = { + "Apply {C:dark_edition}Negative{}, {C:dark_edition}Mosaic{},", + "or {C:dark_edition}Astral{} to {C:attention}#1#{}", + "selected card#s1# in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card#s1# in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{V:1}#1#{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card#s1# in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "Upgrade {C:legendary,E:1}most played{}", + "poker hand by {C:attention}4{}", + "{C:attention}Remove{} all other hand levels", + }, + }, + c_cry_white_hole2 = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Joker#s1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} cop#y1# of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Oversaturated Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} cop#y1# of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} cop#y1# of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a#3#", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hand#s1#{} and", + "{C:red}discard#s1#{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} cop#y1# of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card#s1#", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card#s1#", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + c_cry_seraph = { + name = "The Seraph", + text = { + "Enhances {C:attention}#1#{} selected card#s1#", + "into a {C:attention}Light Card", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + unlock = { + "Reach Ante {C:attention}36", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + unlock = { + "Reduce your {C:attention}handsize", + "to {C:attention}0", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + unlock = { + "Discover", + "all {C:attention}Editions", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand#s1#", + "each round", + }, + unlock = { + "Play {C:attention}5000{}", + "{C:attention}Playing Cards{}", + "in total", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot#s1#", + }, + unlock = { + "Redeem {C:dark_edition}Antimatter", + "{C:attention}10{} times", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + unlock = { + "Redeem {C:attention}25", + "{C:attention}Vouchers", + "in one run", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + unlock = { + "Max out the", + "{C:attention}interest earnings{}", + "for the {C:attention}whole run", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot#s1#,", + "{C:attention}+#1#{} booster pack slot#s1#,", + "and {C:attention}+#1#{} voucher slot#s1#,", + "available in shop", + }, + unlock = { + "Spend {C:attention}1000$", + "in shop", + "in one run", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "Allows control of the", + "shop's {C:planet}Planet Rate{}", + "{C:inactive}(Check {C:attention}Run Info{C:inactive})", + }, + unlock = { + "Buy {C:attention}100{} {C:planet}Planet", + "cards total in", + "the shop", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + unlock = { + "{C:attention}Reroll{} the shop", + "a total of", + "{C:attention}250 times{}", + "in one run", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + unlock = { + "Use {C:attention}50{} {C:planet}Planet", + "cards from", + "{C:attention}Booster Packs{}", + "in one run", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "Allows control of the", + "shop's {C:tarot}Tarot Rate{}", + "{C:inactive}(Check {C:attention}Run Info{C:inactive})", + }, + unlock = { + "Buy {C:attention}100{} {C:tarot}Tarot", + "cards total in", + "the shop", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard#s1#", + "each round", + }, + unlock = { + "Discard {C:attention}5000{}", + "{C:attention}Playing Cards{}", + "in total", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card selection limit", + "{C:inactive,s:0.7}You can do a lot more with this than you think.{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card selection limit", + "All selected cards contribute power", + "to {C:attention}Ascended Hands{}", + }, + }, + }, + Other = { + disabled = { + name = "Disabled", + text = { + "No longer appears", + "during a run", + }, + }, + disabled_card_dependency = { + name = "Disabled", + text = { + "Requires {C:attention}#1#", + }, + }, + disabled_mod_dependency = { + name = "Disabled", + text = { + "Requires mod:", + "{C:attention}#1#", + }, + }, + disabled_mod_conflict = { + name = "Disabled", + text = { + "Incompatible with mod:", + "{C:attention}#1#", + }, + }, + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_absolute = { + name = "Absolute", + text = { + "Can't be sold", + "or destroyed", + "{C:attention}Unremovable{}", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + cry_flickering = { + name = "Flickering", + text = { + "Destroyed after", + "{C:attention}#1#{} triggers", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_flickering_desc = { --used by choco dice + name = "Flickering", + text = { + "Destroyed after", + "{C:attention}#1#{} trigger#s1#", + }, + }, + cry_possessed = { + name = "Possessed", + text = { + "{C:attention}Disables{} and {C:attention}reverses{}", + "effects, if possible", + "Destroyed along with {C:attention}Ghost", + }, + }, + --todo? add candy jokers to list + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + ev_cry_choco0 = { + name = "", + text = { + "Details of an active", + "{C:cry_ascendant,E:1}event{} will appear here", + }, + }, + ev_cry_choco1 = { + name = "1: Possession", + text = { + "{C:attention}Jokers{} and playing cards have a", + "{C:green}1 in 3{} chance of gaining Flickering", + "Create a {C:attention}Ghost", + "{C:inactive,s:0.7}You've been possessed by a ghost, and your", + "{C:inactive,s:0.7}consciousness is flickering in and out.", + }, + }, + ev_cry_choco2 = { + name = "2: Haunted House", + text = { + "Prevents skipping {C:attention}Blind{}", + "One {C:attention}reroll{} allowed per shop", + "{C:attention}Voucher{} prices are doubled", + "{C:inactive,s:0.7}Spooky spirits have taken over! Don't touch", + "{C:inactive,s:0.7}anything and get out as soon as possible!", + }, + }, + ev_cry_choco3 = { + name = "3: Witch's Brews", + text = { + "Create 3 {C:attention}Potions", + "Use one by the end of the {C:attention}Small Blind{},", + "or {C:attention}all{} maluses will be applied this {C:attention}Ante", + "{C:inactive,s:0.7}You have been kidnapped by a witch!", + "{C:inactive,s:0.7}She offers you three potions, watching you closely.", + "{C:inactive,s:0.7}Pick one, lest she makes the decision for you.", + }, + }, + ev_cry_choco4 = { + name = "4: Lunar Abyss", + text = { + "Played cards have a {C:green}1 in 4{} chance", + "to turn into a random {C:club}Club{} face card", + "Divide {C:attention}Mult{} by number of played face cards", + "{C:inactive,s:0.7}Even a man who's pure at heart", + "{C:inactive,s:0.7}and says his prayers by night...", + }, + }, + ev_cry_choco5 = { + name = "5: Bloodsucker", + text = { + "Remove {C:attention}Enhancements{} from all played cards", + "{C:green}1 in 3{} chance to destroy", + "{C:heart}Heart{} and {C:diamond}Diamond{} cards", + "{C:inactive,s:0.7}Be wary in the dead of night, for", + "{C:inactive,s:0.7,E:1}they in the shadows{C:inactive,s:0.7} seek to quench their thirst...", + }, + }, + ev_cry_choco6 = { + name = "6: Please Take One", + text = { + "At {C:attention}end of round{}, open a", + "random {C:attention}Booster{} Pack", + "{C:inactive,s:0.7}As you stroll down the streets, you spot a", + "{C:inactive,s:0.7}box of various Booster Packs. Might as well grab one!", + }, + }, + ev_cry_choco7 = { + name = "7: Festive Atmosphere", + text = { + "Create 3 {C:attention}Trick-or-Treat{} and 1 {C:attention}Candy Basket", + "Shops have a {C:attention}Trick-or-Treat{} each round", + "{C:cry_candy}Candies{} give {C:money}$3{} when obtained", + "{C:inactive,s:0.7}The entire neighbourhood is decorated for spooky endeavours,", + "{C:inactive,s:0.7}come indulge in the festive atmosphere!", + }, + }, + ev_cry_choco8 = { + name = "8: Candy Rain", + text = { + "When {C:attention}Blind{} defeated, obtain 1 {C:cry_candy}Candy{}", + "per hand remaining; Obtain a {C:attention}Food Joker{}", + "when a {C:cry_candy}Candy{} is generated", + "{C:inactive,s:0.7}Candies rain from the sky! Quick,", + "{C:inactive,s:0.7,E:1}grab as much as you can!", + }, + }, + ev_cry_choco9 = { + name = "9: Ghostly Riches", + text = { + "Gain {C:money}$20", + "All {C:money}money{} earned is {C:attention}doubled", + "{C:inactive,s:0.7}The spectre of a long-gone relative of yours", + "{C:inactive,s:0.7}visits you in the middle of the night!", + "{C:inactive,s:0.7}Without a word, they place a bag of money in your hands,", + "{C:inactive,s:0.7}smile warmly, and wave as they fade into the air.", + }, + }, + ev_cry_choco10 = { + name = "10: Revered Antique", + text = { + "A {C:legendary}Legendary{} {C:attention}Joker{} appears", + "in the {C:attention}Voucher{} slot for {C:money}$50", + "Only buyable as {C:attention}last{} item in shop", + "{C:inactive,s:0.7}You've attracted the attention of a relic's spirit,", + "{C:inactive,s:0.7}but it won't be easy to quell.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "{C:inactive}Does nothing...", + "{C:inactive}for now", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} card#s2#", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} card#s2#", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} card#s2#", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} card#s2#", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} card#s2#", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Joker#s2#{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Joker#s2#{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Joker#s2#{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + undiscovered_unique = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planet#s1#{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + blurred_sdm0 = { + name = "a", + text = { + '{C:inactive,s:0.8}"I hate this card" - SDM_0, 2024{}', + }, + }, + }, + Unique = { + c_cry_potion = { + name = "Potion", + text = { + "Applies an unknown", + "{C:attention}malus{} when used", + "{C:inactive,s:0.7}Obtained from Chocolate Die", + }, + }, + }, + }, + misc = { + tutorial = { + cry_intro_1 = { + "Hello, I'm {C:attention}Joseph J. Joker{}!", + "Welcome to {C:cry_exotic,E:1}Cryptid{}!", + }, + cry_intro_2 = { + "It looks like you've never", + "played {C:cry_exotic,E:1}Cryptid{} on this profile before.", + "Let me show you how things work!", + }, + cry_intro_3 = { + "*grows hands*", + }, + cry_intro_4 = { + "It's hard to summarize this mod in", + "a few sentences, but what I will say", + "is that you're in for a {C:cry_exotic,E:1}wild{} ride!", + "This isn't the same {C:attention}Joker Poker{} you know...", + }, + cry_intro_5 = { + "As you might be able to tell by these", + "{C:cry_ascendant}gamesets{}, I like the letter {C:attention}M{}.", + "Select a gameset for me to explain...", + "{s:0.8}Note: Gameset balancing is a heavy work in progress.", + "{s:0.8}Expect things to change frequently!", + }, + cry_modest_1 = { + "Seeking an experience close to vanilla?", + "Then the {C:cry_ascendant}Modest{} gameset is for you!", + }, + cry_modest_2 = { + "Still, be careful of the gimmicks hiding", + "throughout Cryptid! You never know", + "what you'll find on the next round...", + }, + cry_mainline_1 = { + "Wanna {E:1,C:attention}break{} the game? Good news, you can", + "do it without going off the deep end!", + }, + cry_mainline_2 = { + "Things are still nuts here, but you'll have", + "the chance to experience the {C:cry_ascendant}progression{}", + "system. Just don't get too comfortable...", + }, + cry_mainline_3 = { + "Because you'll definitely be stronger, but", + "I've crafted some {E:1,C:dark_edition}bosses{} that", + "might make you regret selecting this {C:cry_ascendant}gameset{}...", + }, + cry_madness_1 = { + "You lookin' to completely {C:red,E:1}annihilate{} your hard drive?", + "Oh, how fun! The {C:cry_ascendant}Madness{} gameset says", + "'Balance? {E:1,C:red}WHAT'S THAT!?{}'", + }, + cry_madness_2 = { + "I've spent weeks of sleepless, {C:green}Mountain Dew{}-fueled", + "nights working to ensure this gameset is", + "{C:cry_ascendant}PERFECTLY BALANCED{}, just for you!", + }, + cry_madness_3 = { + "You'll start with everything unlocked, so you", + "can unleash the {C:red,E:1}full power{} of Cryptid!", + "Just be careful not to {C:attention,E:1}crash{} the game,", + "as that'll probably happen before you lose...", + }, + }, + poker_hands = { + ["cry_Bulwark"] = "Bulwark", + ["cry_Clusterfuck"] = Cryptid_config.family_mode and "Cluster" or "Clusterfuck", + ["cry_UltPair"] = "Ultimate Pair", + ["cry_WholeDeck"] = Cryptid_config.family_mode and "Fifty Two" or "The Entire Fucking Deck", + }, + poker_hand_descriptions = { + ["cry_Bulwark"] = { + "5 rankless, suitless cards", + }, + ["cry_Clusterfuck"] = { + "At least 8 cards that do not", + "contain a Pair, Flush, or Straight", + }, + ["cry_UltPair"] = { + "Two Two Pairs, where each", + "Two Pair is a single suit, for a", + "total of two suits between them", + }, + ["cry_WholeDeck"] = { + "A hand that contains every single", + "card found in a 52-card deck.", + "Are you insane?", + }, + }, + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Use this section to enable or disable entire Thematic Sets.", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + cry_feat_spooky = "Spooky Update", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + cry_mus_alt_bg = "Background Music (by MathIsFun_)", + cry_family = "Family Friendly Mode", + cry_experimental = "Experimental Mode", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_potion1 = "-1 to all Hand Levels", - cry_potion2 = "X1.15 Blind size", - cry_potion3 = "-1 Hand and Discard", + cry_potion1 = "-1 to all Hand Levels", + cry_potion2 = "X1.15 Blind size", + cry_potion3 = "-1 Hand and Discard", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - cry_tax_placeholder = "(X0.4 blind requirement)", - cry_joke_placeholder = "(multiple of 8)", + cry_tax_placeholder = "(X0.4 blind requirement)", + cry_joke_placeholder = "(multiple of 8)", - k_code = "Code", - k_unique = "Unique", - b_code_cards = "Code Cards", - b_unique_cards = "Unique Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + k_content_set = "Thematic Set", + b_content_sets = "Thematic Sets", + --Why aren't these in vanilla? + b_tag = "Tag", + b_blind = "Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + b_tarot_rate = "Tarot Rate", + b_planet_rate = "Planet Rate", - b_flip = "FLIP", - b_merge = "MERGE", + k_unique = "Unique", + b_code_cards = "Code Cards", + b_unique_cards = "Unique Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_hand_bulwark = "Bulwark", - cry_hand_clusterfuck = "Clusterfuck", - cry_hand_ultpair = "Ultimate Pair", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - cry_asc_hands = "Asc. Hands", - cry_p_star = "Star", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_good_luck_ex = "Good luck!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_plus_card = "+1 Card", - cry_plus_code = "+1 Code", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_asc_hands = "Asc. Hands", + cry_p_star = "Star", - k_disable_music = "Disable Music", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_good_luck_ex = "Good luck!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_plus_card = "+1 Card", + cry_plus_code = "+1 Code", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_cry_epic = "Epic", - k_cry_exotic = "Exotic", - k_cry_candy = "Candy", - k_cry_cursed = "Cursed", - k_planet_disc = "Circumstellar Disc", - k_planet_satellite = "Natural Satellites", - k_planet_universe = "The Actual Fucking Universe", + k_disable_music = "Disable Music", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Notice", - cry_notif_jimball_d1 = "Jimball plays the song \"Funkytown\",", - cry_notif_jimball_d2 = "which is copyrighted and can't be", - cry_notif_jimball_d3 = "used for streams and videos.", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - cry_absolute = "Absolute", - code = "Code", - unique = "Unique", - cry_rigged = "Rigged", - cry_hooked = "Hooked", - cry_flickering = "Flickering", - cry_possessed = "Possessed", + k_cry_epic = "Epic", + k_cry_exotic = "Exotic", + k_cry_candy = "Candy", + k_cry_cursed = "Cursed", + k_planet_disc = "Circumstellar Disc", + k_planet_satellite = "Natural Satellites", + k_planet_universe = Cryptid_config.family_mode and "Universe" or "The Actual Fucking Universe", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Notice", + cry_notif_jimball_d1 = 'Jimball plays the song "Funkytown",', + cry_notif_jimball_d2 = "which is copyrighted and can't be", + cry_notif_jimball_d3 = "used for streams and videos.", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_gameset_explanation = { + "Select a gameset config option", + "to apply to this card.", + }, + cry_gameset_disabled = "Disabled", + cry_gameset_modest = "Modest", + cry_gameset_mainline = "Mainline", + cry_gameset_madness = "Madness", + cry_gameset_custom = "Modified", + cry_gameset_experimental = "Experimental", + cry_gameset_experimental_modest = "Experimental (Modest)", + cry_gameset_experimental_mainline = "Experimental (Mainline)", + cry_gameset_experimental_madness = "Experimental (Madness)", - k_cry_epic = "Epic", - k_cry_exotic = "Exotic", - k_cry_candy = "Candy", - k_cry_cursed = "Cursed", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_candy = {"+#1# Candy"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, + cry_view_set_contents = "View Items in Set", - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + b_reset_gameset_modest = "Reset Gameset Config (Modest)", + b_reset_gameset_mainline = "Reset Gameset Config (Mainline)", + b_reset_gameset_madness = "Reset Gameset Config (Madness)", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + pinned = "Pinned", + cry_absolute = "Absolute", + code = "Code", + unique = "Unique", + cry_rigged = "Rigged", + cry_hooked = "Hooked", + cry_flickering = "Flickering", + cry_possessed = "Possessed", - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_art = {"Art: #1#"}, - cry_code = {"Code: #1#"}, - cry_idea = {"Idea: #1#"} - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Vouchers{} no longer appear in the shop"}, - ch_c_cry_no_boosters = {"{C:attention}Booster Packs{} no longer appear in the shop"}, - ch_c_cry_no_rerolls = {"Rerolling is {C:attention}disabled{}"}, - ch_c_cry_no_consumables = {"{C:attention}Consumables{} no longer appear"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", + + k_cry_epic = "Epic", + k_cry_exotic = "Exotic", + k_cry_candy = "Candy", + k_cry_cursed = "Cursed", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chip#s2#" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chip#s1#)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker#s2#{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card#s2#" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card#s2#" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card#s2#" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hand#s3#{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discard#s3#{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_candy = { "+#1# Candy" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, + a_tag_minus = { "-#1# Tag" }, + a_tags_minus = { "-#1# Tags" }, + a_tag = { "+#1# Tag" }, + a_tags = { "+#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + + cry_art = { "Art: #1#" }, + cry_code = { "Code: #1#" }, + cry_idea = { "Idea: #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Vouchers{} no longer appear in the shop" }, + ch_c_cry_no_boosters = { "{C:attention}Booster Packs{} no longer appear in the shop" }, + ch_c_cry_no_rerolls = { "Rerolling is {C:attention}disabled{}" }, + ch_c_cry_no_consumables = { "{C:attention}Consumables{} no longer appear" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/es_419.lua b/Cryptid/localization/es_419.lua index 86330f2..382b0a0 100644 --- a/Cryptid/localization/es_419.lua +++ b/Cryptid/localization/es_419.lua @@ -1,30 +1,30 @@ -- temporary replacement for mexican spanish -- until someone does it, the other version should do return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Baraja de antimateria", - text = { - "Aplica las {C:legendary,E:1}ventajas{}", - "de {C:attention}todas{} las barajas", - }, - }, - b_cry_beta = { - name = "Baraja nostálgica", - text = { - "Las ranuras de {C:attention}comodín{} y", - "{C:attention}consumibles{} se {C:attention}combinan", - "Las ciegas {C:attention}nostálgicas{} reemplazan", - "sus ciegas actualizadas" - }, - }, - b_cry_blank = { - name = "Baraja en blanco", - text = { - "{C:inactive}¿No hace nada?", - }, - }, + descriptions = { + Back = { + b_cry_antimatter = { + name = "Baraja de antimateria", + text = { + "Aplica las {C:legendary,E:1}ventajas{}", + "de {C:attention}todas{} las barajas", + }, + }, + b_cry_beta = { + name = "Baraja nostálgica", + text = { + "Las ranuras de {C:attention}comodín{} y", + "{C:attention}consumibles{} se {C:attention}combinan", + "Las ciegas {C:attention}nostálgicas{} reemplazan", + "sus ciegas actualizadas", + }, + }, + b_cry_blank = { + name = "Baraja en blanco", + text = { + "{C:inactive}¿No hace nada?", + }, + }, b_cry_bountiful = { name = "Baraja abundante", text = { @@ -32,1923 +32,1924 @@ return { "de cada {C:attention}mano jugada{} o {C:attention}descarte{}", }, }, - b_cry_CCD = { - name = "Baraja CCD", - text = { - "Todas las cartas también son", - "un consumible {C:attention}aleatorio{}", - }, - }, - b_cry_conveyor = { - name = "Baraja transportadora", - text = { - "Los comodines {C:attention}no{} se pueden mover", - "Al principio de la runda,", - "{C:attention}duplica{} el comodín del extremo derecho", - "y {C:attention}destruye{} el comodín del extremo izquierdo", - }, - }, - b_cry_critical = { - name = "Baraja crítica", - text = { - "Después de cada mano jugada,", - "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", - "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", - }, - }, - b_cry_encoded = { - name = "Baraja codificada", - text = { - "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", - "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", - "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", - }, - }, - b_cry_equilibrium = { - name = "Baraja de equilibrio", - text = { - "Todas las cartas tienen la ", - "{C:attention}misma probabilidad{} de", - "aparecer en las tiendas,", - "comienza la partida con", - "{C:attention,T:v_overstock_plus}Excedente plus", - }, - }, - b_cry_glowing = { - name = "Baraja brillante", - text = { - "Multiplica los valores de", - "todos los comodines por {X:dark_edition,C:white} X1.25 {}", - "cuando se derrota a la {C:attention}ciega jefe{}", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Baraja infinita", - text = { - "Puedes seleccionar {C:attention}cualquier", - "cantidad de cartas", - "{C:attention}+1{} tamaño de mano", - }, - }, - b_cry_misprint = { - name = "Baraja de errata", - text = { - "Los valures de cartas", - "y manos de póker", - "se {C:attention}aleatorizan", - }, - }, - b_cry_redeemed = { - name = "Baraja redimida", - text = { - "Cuando se compra un {C:attention}vale{},", - "obtén sus {C:attention}niveles extras", - }, - }, - b_cry_spooky = { - name = "Baraja espeluznante", - text = { - "Comienza con un {C:attention,T:j_cry_chocolate_dice}Dado de chocolate {C:eternal}eterno{}", - "Después de cada {C:attention}apuesta{}, crea un comodín", - "de {C:cry_candy}dulce{} o {X:cry_cursed,C:white}maldito{}", - } - }, - b_cry_very_fair = { - name = "Baraja Muy Justa", - text = { - "{C:blue}-2{} manos, {C:red}-2{} descartes", - "en cada ronda", - "Los {C:attention}vales{} ya no", - "aparecen en la tienda", - }, - }, - b_cry_wormhole = { - name = "Baraja de agujero de gusano", - text = { - "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", - "Los comodines son {C:attention}20X{} más", - "probables de ser {C:dark_edition}Negativos", - "{C:attention}-2{} ranuras de comodín", - }, - }, - b_cry_legendary = { - name = "Baraja legendaria", - text = { - "Comienza con un comodín {C:legendary}legendario{C:legendary}", - "{C:green}1 en 5{} probabilidades para crear otro", + b_cry_CCD = { + name = "Baraja CCD", + text = { + "Todas las cartas también son", + "un consumible {C:attention}aleatorio{}", + }, + }, + b_cry_conveyor = { + name = "Baraja transportadora", + text = { + "Los comodines {C:attention}no{} se pueden mover", + "Al principio de la runda,", + "{C:attention}duplica{} el comodín del extremo derecho", + "y {C:attention}destruye{} el comodín del extremo izquierdo", + }, + }, + b_cry_critical = { + name = "Baraja crítica", + text = { + "Después de cada mano jugada,", + "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", + "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", + }, + }, + b_cry_encoded = { + name = "Baraja codificada", + text = { + "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", + "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", + "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", + }, + }, + b_cry_equilibrium = { + name = "Baraja de equilibrio", + text = { + "Todas las cartas tienen la ", + "{C:attention}misma probabilidad{} de", + "aparecer en las tiendas,", + "comienza la partida con", + "{C:attention,T:v_overstock_plus}Excedente plus", + }, + }, + b_cry_glowing = { + name = "Baraja brillante", + text = { + "Multiplica los valores de", + "todos los comodines por {X:dark_edition,C:white} X1.25 {}", + "cuando se derrota a la {C:attention}ciega jefe{}", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Baraja infinita", + text = { + "Puedes seleccionar {C:attention}cualquier", + "cantidad de cartas", + "{C:attention}+1{} tamaño de mano", + }, + }, + b_cry_misprint = { + name = "Baraja de errata", + text = { + "Los valures de cartas", + "y manos de póker", + "se {C:attention}aleatorizan", + }, + }, + b_cry_redeemed = { + name = "Baraja redimida", + text = { + "Cuando se compra un {C:attention}vale{},", + "obtén sus {C:attention}niveles extras", + }, + }, + b_cry_spooky = { + name = "Baraja espeluznante", + text = { + "Comienza con un {C:attention,T:j_cry_chocolate_dice}Dado de chocolate {C:eternal}eterno{}", + "Después de cada {C:attention}apuesta{}, crea un comodín", + "de {C:cry_candy}dulce{} o {X:cry_cursed,C:white}maldito{}", + }, + }, + b_cry_very_fair = { + name = "Baraja Muy Justa", + text = { + "{C:blue}-2{} manos, {C:red}-2{} descartes", + "en cada ronda", + "Los {C:attention}vales{} ya no", + "aparecen en la tienda", + }, + }, + b_cry_wormhole = { + name = "Baraja de agujero de gusano", + text = { + "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", + "Los comodines son {C:attention}20X{} más", + "probables de ser {C:dark_edition}Negativos", + "{C:attention}-2{} ranuras de comodín", + }, + }, + b_cry_legendary = { + name = "Baraja legendaria", + text = { + "Comienza con un comodín {C:legendary}legendario{C:legendary}", + "{C:green}1 en 5{} probabilidades para crear otro", "cuando se derrota a la ciega jefe", - "{C:inactive}(debe haber espacio){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "La caja", - text = { - "Todos los comodines comunes", - "se debilitan", - }, - }, - bl_cry_clock = { - name = "El reloj", - text = { - "+0.1X requisitos de ciega por cada", - "3 segundos pasados en esta apuesta", - }, - }, - bl_cry_hammer = { - name = "El martillo", - text = { - "Todas las cartas con rango", - "impar se debilitan", - }, - }, - bl_cry_joke = { - name = "La broma", - text = { - "Si la puntuación excede 2X de los requisitos,", - "establece la apuesta a un múltiplo de #1#", - }, - }, - bl_cry_magic = { - name = "La magia", - text = { - "Todas las cartas con rango", - "par se debilitan", - }, - }, - bl_cry_lavender_loop = { - name = "Ciclo lavanda", - text = { - "1.25X requisitos de ciega por cada", - "1.5 segundos pasados en esta ronda", - }, - }, - bl_cry_obsidian_orb = { - name = "Orbe obsidiana", - text = { - "Aplica las habilidades de", - "todos los jefes derrotados", - }, - }, - bl_cry_oldarm = { - name = "El brazo nostálgico", - text = { - "Debes jugar 4", - "o menos cartas", - }, - }, - bl_cry_oldfish = { - name = "El pez nostálgico", - text = { - "Todas las manos empiezan", - "con 1 multi", - }, - }, - bl_cry_oldflint = { - name = "El pedernal nostálgico", - text = { - "Sin colores", - }, - }, - bl_cry_oldhouse = { - name = "La casa nostálgica", - text = { - "Sin fulls", - }, - }, - bl_cry_oldmanacle = { - name = "El grillete nostálgico", - text = { - "Divide multi por descartes", - }, - }, - bl_cry_oldmark = { - name = "La marca nostálgica", - text = { - "Sin manos que", - "contengan una Pareja", - }, - }, - bl_cry_oldox = { - name = "El buey nostálgico", - text = { - "Todas las manos empiezan", - "con 0 fichas", - }, - }, - bl_cry_oldpillar = { - name = "El pilar nostálgico", - text = { - "Sin escaleras", - }, - }, - bl_cry_oldserpent = { - name = "La serpiente nostálgica", - text = { - "Divide multi por el nivel", - "de la mano de póker jugada", - }, - }, - bl_cry_pin = { - name = "El alfiler", - text = { - "Los comodines épicos o de mayor", - "rareza se debilitan", - }, - }, - bl_cry_pinkbow = { - name = "Moño rosado", - text = { - "Aleatoriza la categoría de las cartas", - "en tu mano al jugar", - }, - }, - bl_cry_sapphire_stamp = { - name = "Estampilla safiro", - text = { - "Selecciona una carta extra, deselecciona", - "una carta aleatoria antes de puntuar", - }, - }, - bl_cry_shackle = { - name = "El eslabón", - text = { - "Todos los comodines negativos", - "se debilitan", - }, - }, - bl_cry_striker = { - name = "El ariete", - text = { - "Todos los comodines raros", - "se debilitan", - }, - }, - bl_cry_tax = { - name = "El impuesto", - text = { - "Puntuación por mano limitado a", - "0.4X requisitos de ciega", - }, - }, - bl_cry_tornado = { - name = "Tornado turquesa", - text = { - "#1# en #2# probabilidades para", - "que la mano jugada no puntúe", - }, - }, - bl_cry_trick = { - name = "El truco", - text = { - "Después de cada mano, voltea todas", - "las cartas boca-arriba en tu mano", - }, - }, - bl_cry_vermillion_virus = { - name = "Virus bermellón", - text = { - "Se reemplaza un comodín", - "al azar en cada mano", - }, - }, - bl_cry_windmill = { - name = "El molino", - text = { - "Todos los comodines inusuales", - "se debilitan", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASE", - text = { - "Convierte {C:cry_code}#1#{} carta seleccionada", - "a una mejora {C:cry_code}a elección{}", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destruye un comodín {C:cry_code}seleccionado{},", - "crea un comodín {C:cry_code}nuevo{}", - "de la {C:cry_code}misma rareza", - }, - }, - c_cry_crash = { - name = "://CHOQUE", - text = { - "{C:cry_code,E:1}No.", - }, - }, - c_cry_ctrl_v = { - name = "://CTRL+V", - text = { - "Crea una {C:cry_code}copia{} de un {C:cry_code}comodín{},", - "carta de juego, o consumible" - }, - }, - c_cry_delete = { - name = "://ELIMINAR", - text = { - "Remueve {C:cry_code}permanentemente{} un", - "objeto {C:cry_code}seleccionado{} de la tienda", - "{C:inactive,s:0.8}El objeto no puede aparecer otra vez en esta partida", - }, - }, - c_cry_divide = { - name = "://DIVIDIR", - text = { - "{C:cry_code}Divide en 2{} todos los precios", - "listados en la tienda actual", - }, - }, - c_cry_exploit = { - name = "://EXPLOTAR", - text = { - "Cualquier mano jugada se considera que", - "{C:cry_code}contiene{} una mano de póker {C:cry_code}a elección{},", - "se reinicia al final de la ronda", - "{C:inactive,s:0.8}Las manos secretas deben ser", - "{C:inactive,s:0.8}descubiertas para ser válidas", - }, - }, - c_cry_hook = { - name = "ENGANCHAR://", - text = { - "Selecciona dos comodines para {C:cry_code}engancharlos", - "{C:inactive,s:0.8}Sólo funciona correctamente si los comodines se activan en el mismo contexto,", - "{C:inactive,s:0.8}(ej. Comodín y El dúo (ambos después de puntuar))", - }, - }, - c_cry_machinecode = { - name = "://CÓDIGOMÁQUINA", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { - "Añade {C:dark_edition}Erróneo{} a todas", - "las cartas {C:cry_code}en tu mano" }, - }, - c_cry_merge = { - name = "://FUNDIR", - text = { - "Combina un {C:cry_code}consumible{} seleccionado", - "con una {C:cry_code}carta de juego{} seleccionada", - }, - }, - c_cry_multiply = { - name = "://MULTIPLICAR", - text = { - "{C:cry_code}Duplica{} todos los valores de", - "un {C:cry_code}comodín{} seleccionado hasta", - "el final de la ronda", - }, - }, - c_cry_patch = { - name = "://PATCH", - text = { - "Rehabilita y remueve todas las pegatinas", - "de todos los objetos visibles", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "La siguiente ciega derrotada", - "entrega {C:cry_code}X#1#{} interés", - }, - }, - c_cry_oboe = { - name = "://PORUNPASO", - text = { - "El siguiente {C:cry_code}paquete potenciador{} contiene", - "{C:cry_code}#1#{} carta adicional y", - "{C:cry_code}#1#{} opción adicional", - "{C:inactive}(Actual: {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REINICIAR", - text = { - "Reobtiene tus {C:blue}manos{} y {C:red}descartes{},", - "devuelve {C:cry_code}todas{} las cartas a la baraja", - "y saca una {C:cry_code}nueva{} mano", - }, - }, - c_cry_revert = { - name = "://REVERTIR", - text = { - "Establese el {C:cry_code}estado de juego{} al", - "inicio de {C:cry_code}esta apuesta{}", - }, - }, - c_cry_rework = { - name = "://REHACER", - text = { - "Destruye un comodín {C:cry_code}seleccionado{},", - "crea una {C:cry_code}Etiqueta de retrabajo{} con", - "una edición {C:cry_code}mejorada{}", - "{C:inactive,s:0.8}Se mejora usando el orden en la colección", - }, - }, - c_cry_run = { - name = "://CORRER", - text = { - "Visita una {C:cry_code}tienda", - "durante una {C:cry_code}ciega", - }, - }, - c_cry_seed = { - name = "://SEMILLA", - text = { - "Selecciona un comodín", - "o carta de juego", - "para volverla {C:cry_code}amañada", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { - "Termina la {C:cry_code}ciega{} no-jefe actual", - "{C:cry_code}sin{} obtener dinero" - }, - }, - c_cry_spaghetti = { - name = "://ESPAGUETI", - text = { - "Crea un comodín de comida", - "{C:cry_code}erróneo", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convierte {C:cry_code}#1#{} cartas seleccionadas", - "a una categoría {C:cry_code}a elección{}", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} multi", - }, - }, - e_cry_blur = { - name = "Borrosa", - text = { - "{C:attention}Reactiva{} esta", - "carta {C:attention}1{} vez", - "{C:green}#1# en #2#{} probabilidades", - "para reactivar {C:attention}#3#{}", - "vez más", - }, - }, - e_cry_double_sided = { - name = "Doble cara", - text = { - "Esta carta puede ser", - "{C:attention}volteada{} para revelar", - "una carta diferente", - "{C:inactive}(El lado en blanco puede", + "{C:inactive}(debe haber espacio){}", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "La caja", + text = { + "Todos los comodines comunes", + "se debilitan", + }, + }, + bl_cry_clock = { + name = "El reloj", + text = { + "+0.1X requisitos de ciega por cada", + "3 segundos pasados en esta apuesta", + }, + }, + bl_cry_hammer = { + name = "El martillo", + text = { + "Todas las cartas con rango", + "impar se debilitan", + }, + }, + bl_cry_joke = { + name = "La broma", + text = { + "Si la puntuación excede 2X de los requisitos,", + "establece la apuesta a un múltiplo de #1#", + }, + }, + bl_cry_magic = { + name = "La magia", + text = { + "Todas las cartas con rango", + "par se debilitan", + }, + }, + bl_cry_lavender_loop = { + name = "Ciclo lavanda", + text = { + "1.25X requisitos de ciega por cada", + "1.5 segundos pasados en esta ronda", + }, + }, + bl_cry_obsidian_orb = { + name = "Orbe obsidiana", + text = { + "Aplica las habilidades de", + "todos los jefes derrotados", + }, + }, + bl_cry_oldarm = { + name = "El brazo nostálgico", + text = { + "Debes jugar 4", + "o menos cartas", + }, + }, + bl_cry_oldfish = { + name = "El pez nostálgico", + text = { + "Todas las manos empiezan", + "con 1 multi", + }, + }, + bl_cry_oldflint = { + name = "El pedernal nostálgico", + text = { + "Sin colores", + }, + }, + bl_cry_oldhouse = { + name = "La casa nostálgica", + text = { + "Sin fulls", + }, + }, + bl_cry_oldmanacle = { + name = "El grillete nostálgico", + text = { + "Divide multi por descartes", + }, + }, + bl_cry_oldmark = { + name = "La marca nostálgica", + text = { + "Sin manos que", + "contengan una Pareja", + }, + }, + bl_cry_oldox = { + name = "El buey nostálgico", + text = { + "Todas las manos empiezan", + "con 0 fichas", + }, + }, + bl_cry_oldpillar = { + name = "El pilar nostálgico", + text = { + "Sin escaleras", + }, + }, + bl_cry_oldserpent = { + name = "La serpiente nostálgica", + text = { + "Divide multi por el nivel", + "de la mano de póker jugada", + }, + }, + bl_cry_pin = { + name = "El alfiler", + text = { + "Los comodines épicos o de mayor", + "rareza se debilitan", + }, + }, + bl_cry_pinkbow = { + name = "Moño rosado", + text = { + "Aleatoriza la categoría de las cartas", + "en tu mano al jugar", + }, + }, + bl_cry_sapphire_stamp = { + name = "Estampilla safiro", + text = { + "Selecciona una carta extra, deselecciona", + "una carta aleatoria antes de puntuar", + }, + }, + bl_cry_shackle = { + name = "El eslabón", + text = { + "Todos los comodines negativos", + "se debilitan", + }, + }, + bl_cry_striker = { + name = "El ariete", + text = { + "Todos los comodines raros", + "se debilitan", + }, + }, + bl_cry_tax = { + name = "El impuesto", + text = { + "Puntuación por mano limitado a", + "0.4X requisitos de ciega", + }, + }, + bl_cry_tornado = { + name = "Tornado turquesa", + text = { + "#1# en #2# probabilidades para", + "que la mano jugada no puntúe", + }, + }, + bl_cry_trick = { + name = "El truco", + text = { + "Después de cada mano, voltea todas", + "las cartas boca-arriba en tu mano", + }, + }, + bl_cry_vermillion_virus = { + name = "Virus bermellón", + text = { + "Se reemplaza un comodín", + "al azar en cada mano", + }, + }, + bl_cry_windmill = { + name = "El molino", + text = { + "Todos los comodines inusuales", + "se debilitan", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASE", + text = { + "Convierte {C:cry_code}#1#{} carta seleccionada", + "a una mejora {C:cry_code}a elección{}", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destruye un comodín {C:cry_code}seleccionado{},", + "crea un comodín {C:cry_code}nuevo{}", + "de la {C:cry_code}misma rareza", + }, + }, + c_cry_crash = { + name = "://CHOQUE", + text = { + "{C:cry_code,E:1}No.", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Crea una {C:cry_code}copia{} de un {C:cry_code}comodín{},", + "carta de juego, o consumible", + }, + }, + c_cry_delete = { + name = "://ELIMINAR", + text = { + "Remueve {C:cry_code}permanentemente{} un", + "objeto {C:cry_code}seleccionado{} de la tienda", + "{C:inactive,s:0.8}El objeto no puede aparecer otra vez en esta partida", + }, + }, + c_cry_divide = { + name = "://DIVIDIR", + text = { + "{C:cry_code}Divide en 2{} todos los precios", + "listados en la tienda actual", + }, + }, + c_cry_exploit = { + name = "://EXPLOTAR", + text = { + "Cualquier mano jugada se considera que", + "{C:cry_code}contiene{} una mano de póker {C:cry_code}a elección{},", + "se reinicia al final de la ronda", + "{C:inactive,s:0.8}Las manos secretas deben ser", + "{C:inactive,s:0.8}descubiertas para ser válidas", + }, + }, + c_cry_hook = { + name = "ENGANCHAR://", + text = { + "Selecciona dos comodines para {C:cry_code}engancharlos", + "{C:inactive,s:0.8}Sólo funciona correctamente si los comodines se activan en el mismo contexto,", + "{C:inactive,s:0.8}(ej. Comodín y El dúo (ambos después de puntuar))", + }, + }, + c_cry_machinecode = { + name = "://CÓDIGOMÁQUINA", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { + "Añade {C:dark_edition}Erróneo{} a todas", + "las cartas {C:cry_code}en tu mano", + }, + }, + c_cry_merge = { + name = "://FUNDIR", + text = { + "Combina un {C:cry_code}consumible{} seleccionado", + "con una {C:cry_code}carta de juego{} seleccionada", + }, + }, + c_cry_multiply = { + name = "://MULTIPLICAR", + text = { + "{C:cry_code}Duplica{} todos los valores de", + "un {C:cry_code}comodín{} seleccionado hasta", + "el final de la ronda", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Rehabilita y remueve todas las pegatinas", + "de todos los objetos visibles", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "La siguiente ciega derrotada", + "entrega {C:cry_code}X#1#{} interés", + }, + }, + c_cry_oboe = { + name = "://PORUNPASO", + text = { + "El siguiente {C:cry_code}paquete potenciador{} contiene", + "{C:cry_code}#1#{} carta adicional y", + "{C:cry_code}#1#{} opción adicional", + "{C:inactive}(Actual: {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REINICIAR", + text = { + "Reobtiene tus {C:blue}manos{} y {C:red}descartes{},", + "devuelve {C:cry_code}todas{} las cartas a la baraja", + "y saca una {C:cry_code}nueva{} mano", + }, + }, + c_cry_revert = { + name = "://REVERTIR", + text = { + "Establese el {C:cry_code}estado de juego{} al", + "inicio de {C:cry_code}esta apuesta{}", + }, + }, + c_cry_rework = { + name = "://REHACER", + text = { + "Destruye un comodín {C:cry_code}seleccionado{},", + "crea una {C:cry_code}Etiqueta de retrabajo{} con", + "una edición {C:cry_code}mejorada{}", + "{C:inactive,s:0.8}Se mejora usando el orden en la colección", + }, + }, + c_cry_run = { + name = "://CORRER", + text = { + "Visita una {C:cry_code}tienda", + "durante una {C:cry_code}ciega", + }, + }, + c_cry_seed = { + name = "://SEMILLA", + text = { + "Selecciona un comodín", + "o carta de juego", + "para volverla {C:cry_code}amañada", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { + "Termina la {C:cry_code}ciega{} no-jefe actual", + "{C:cry_code}sin{} obtener dinero", + }, + }, + c_cry_spaghetti = { + name = "://ESPAGUETI", + text = { + "Crea un comodín de comida", + "{C:cry_code}erróneo", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convierte {C:cry_code}#1#{} cartas seleccionadas", + "a una categoría {C:cry_code}a elección{}", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} multi", + }, + }, + e_cry_blur = { + name = "Borrosa", + text = { + "{C:attention}Reactiva{} esta", + "carta {C:attention}1{} vez", + "{C:green}#1# en #2#{} probabilidades", + "para reactivar {C:attention}#3#{}", + "vez más", + }, + }, + e_cry_double_sided = { + name = "Doble cara", + text = { + "Esta carta puede ser", + "{C:attention}volteada{} para revelar", + "una carta diferente", + "{C:inactive}(El lado en blanco puede", "{C:inactive}combinarse con otra carta)", - }, - }, - e_cry_glass = { - name = "Frágil", - label = "Frágil", - text = { - "{C:white,X:mult} X#3# {} multi", - "{C:green}#1# en #2#{} probabilidades que", - "esta carta no sea {C:red}destruida", - "al activarse", - }, - }, - e_cry_glitched = { - name = "Errónea", - text = { - "Todos los valores en esta carta", - "son {C:dark_edition}aleatorizados{}", - "entre {C:attention}X0.1{} y {C:attention}X10{}", - "{C:inactive}(si es posible){}", - }, - }, - e_cry_gold = { - name = "Dorada", - label = "Dorada", - text = { - "Gana {C:money}$#1#{} cuando se usa", - "o activa", - }, - }, - e_cry_m = { - name = "Contenta", - text = { - "{C:mult}+#1#{} multi", - "Esta carta se siente", - "bastante {C:attention}contenta{}", - }, - }, - e_cry_mosaic = { - name = "Mosaico", - text = { - "{X:chips,C:white} X#1# {} fichas", - }, - }, - e_cry_noisy = { - name = "Ruidosa", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Sobresaturada", - text = { - "Todos los valores", - "en esta carta", - "son {C:attention}duplicados{}", - "{C:inactive}(si es posible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Carta de eco", - text = { - "{C:green}#2# en #3#{} probabilidades de", - "{C:attention}reactivar{} #1# veces", - "adicionales al puntuar", - }, - }, - }, - Joker = { - j_cry_adroit = { - name = "Comodín hábil", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_altgoogol = { - name = "Carta de Googol Play nostálgica", - text = { - "Vende esta carta para crear", - "{C:attention}2{} copias del {C:attention}Joker{} del extremo izquierdo", - "{C:inactive,s:0.8}No copia otras Cartas de Googol Play nostálgicas{}", - }, - }, - j_cry_antennastoheaven = { - name = "...como antenas al cielo", - text = { - "Este comodín consigue", - "{X:chips,C:white} X#1# {} fichas cuando cada", - "{C:attention}7{} o {C:attention}4{} jugado puntúa", - "{C:inactive}(Actual: {X:chips,C:white}X#2# {C:inactive} fichas)", - }, - }, - j_cry_apjoker = { - name = "Comodín AP", - text = { "{X:mult,C:white} X#1# {} multi contra las {C:attention}ciegas jefe{}" }, - }, - j_cry_astral_bottle = { - name = "Astral en una botella", - text = { - "Al venderse, aplica {C:dark_edition}Astral{}", - "y {C:attention}Perecedero{} a", - "un {C:attention}comodín{} aleatorio", - } - }, + }, + }, + e_cry_glass = { + name = "Frágil", + label = "Frágil", + text = { + "{C:white,X:mult} X#3# {} multi", + "{C:green}#1# en #2#{} probabilidades que", + "esta carta no sea {C:red}destruida", + "al activarse", + }, + }, + e_cry_glitched = { + name = "Errónea", + text = { + "Todos los valores en esta carta", + "son {C:dark_edition}aleatorizados{}", + "entre {C:attention}X0.1{} y {C:attention}X10{}", + "{C:inactive}(si es posible){}", + }, + }, + e_cry_gold = { + name = "Dorada", + label = "Dorada", + text = { + "Gana {C:money}$#1#{} cuando se usa", + "o activa", + }, + }, + e_cry_m = { + name = "Contenta", + text = { + "{C:mult}+#1#{} multi", + "Esta carta se siente", + "bastante {C:attention}contenta{}", + }, + }, + e_cry_mosaic = { + name = "Mosaico", + text = { + "{X:chips,C:white} X#1# {} fichas", + }, + }, + e_cry_noisy = { + name = "Ruidosa", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Sobresaturada", + text = { + "Todos los valores", + "en esta carta", + "son {C:attention}duplicados{}", + "{C:inactive}(si es posible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Carta de eco", + text = { + "{C:green}#2# en #3#{} probabilidades de", + "{C:attention}reactivar{} #1# veces", + "adicionales al puntuar", + }, + }, + }, + Joker = { + j_cry_adroit = { + name = "Comodín hábil", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_altgoogol = { + name = "Carta de Googol Play nostálgica", + text = { + "Vende esta carta para crear", + "{C:attention}2{} copias del {C:attention}Joker{} del extremo izquierdo", + "{C:inactive,s:0.8}No copia otras Cartas de Googol Play nostálgicas{}", + }, + }, + j_cry_antennastoheaven = { + name = "...como antenas al cielo", + text = { + "Este comodín consigue", + "{X:chips,C:white} X#1# {} fichas cuando cada", + "{C:attention}7{} o {C:attention}4{} jugado puntúa", + "{C:inactive}(Actual: {X:chips,C:white}X#2# {C:inactive} fichas)", + }, + }, + j_cry_apjoker = { + name = "Comodín AP", + text = { "{X:mult,C:white} X#1# {} multi contra las {C:attention}ciegas jefe{}" }, + }, + j_cry_astral_bottle = { + name = "Astral en una botella", + text = { + "Al venderse, aplica {C:dark_edition}Astral{}", + "y {C:attention}Perecedero{} a", + "un {C:attention}comodín{} aleatorio", + }, + }, - j_cry_big_cube = { - name = "Cubo grande", - text = { - "{X:chips,C:white} X#1# {} fichas", - }, - }, - j_cry_biggestm = { - name = "Gigante", - text = { - "{X:mult,C:white} X#1# {} multi hasta el final", - "de la ronda si la {C:attention}mano de póker{}", - "es una {C:attention}#2#{}", - "{C:inactive}(Actual: {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}no es obeso, sólo de huesos grandes.", - }, - }, - j_cry_blacklist = { - name = "Lista negra", - text = { - "Si un {C:attention}#1#{} se juega o está en tu mano,", - "establece {C:chips}fichas{} y {C:mult}multi{} a 0", - "{C:red,E:2}se autodestruye{} si no hay un {C:attention}#1#{} en la baraja", - "{C:inactive,s:0.8}La categoría no cambia" - } - }, - j_cry_blender = { - name = "Blender", - text = { - "Crea un consumible", - "{C:attention}aleatorio{} cuando una", - "carta de {C:cry_code}código{} es usada", - "{C:inactive}(debe haber espacio){}", - }, - }, - j_cry_blurred = { - name = "Comodín borroso", - text = { - "Obtén {C:blue}+#1#{} mano(s) al", - "seleccionar una {C:attention}ciega{}", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Cada {C:attention}comodín{} da {C:chips}+#1#{} fichas", - "aumenta la cantidad por {C:chips}+#2#{} si la ", - "{C:attention}mano de póker{} es una {C:attention}#3#{}", - "{C:inactive,s:0.8}Los comodines contentos dan{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}fichas{}", - }, - }, - j_cry_bonkers = { - name = "Comodín trastornado", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_bonusjoker = { - name = "Comodín adicional", - text = { - "{C:green}#1# en #2#{} probabilidades por cada", - "carta {C:attention}adicional{} jugada para aumentar", - "ranuras de {C:attention}comodín{} o {C:attention}consumible", - "por {C:dark_edition}1{} al puntuar", - "{C:red}Funciona 2 veces por runda", - "{C:inactive,s:0.8}(probabilidad igual por cada uno){}", - }, - }, - j_cry_booster = { - name = "Comodín potenciador", - text = { - "{C:attention}+#1#{} ranura de paquete potenciador", - "disponible en la tienda", - }, - }, - j_cry_boredom = { - name = "Aburrimiento", - text = { - "{C:green}#1# en #2#{} probabilidades para", - "{C:attention}reactivar{} cada {C:attention}comodín{}", - "o {C:attention}carta jugada{}", - "{C:inactive,s:0.8}No afecta otros Aburrimientos{}", - }, - }, - j_cry_brittle = { - name = "Dulce frágil", - text = { - "Por las siguientes {C:attention}#1#{} manos,", - "añade {C:attention}Piedra{}, {C:attention}Oro{}, o {C:attention}Acero{} a", - "la carta del extremo derecho que puntúa" - } - }, - j_cry_bubblem = { - name = "Burbuja M", - text = { - "Crea un {C:attention}Comodín contento{} {C:dark_edition}laminado", - "si la mano jugada contiene", - "un {C:attention}#1#{}", - "{C:red,E:2}se autodestruye{}", - }, - }, - j_cry_busdriver = { - name = "Conductor de bus", - text = { - "{C:green}#1# en #3#{} probabilidades", - "para {C:mult}+#2#{} multi", - "{C:green}1 en 4{} probabilidades", - "para {C:mult}-#2#{} multi", - }, - }, - j_cry_candy_basket = { - name = "Cesta de dulces", - text = { - "Vende esta carta para crear {C:attention}#1#{} {C:cry_candy}dulces", - "{C:attention}+#2#{} {C:cry_candy}dulce{} cada {C:attention}2{} ciegas derrotadas", - "{C:attention}+#3#{} {C:cry_candy}dulces{} al derrotar la {C:attention}ciega jefe{}" - } - }, - j_cry_candy_buttons = { - name = "Botones de dulce", - text = { - "Las siguientes {C:attention}#1#{} renovaciones", - "cuestan {C:money}$1{}", - } - }, - j_cry_candy_cane = { - name = "Bastón de dulce", - text = { - "Por las siguientes {C:attention}#1#{} rondas,", - "las cartas de juego otorgan {C:money}$#2#", - "cuando se {C:attention}reactivan" - } - }, - j_cry_candy_dagger = { - name = "Daga de dulce", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la derecha", - "para crear un {C:cry_candy}dulce{}", - } - }, - j_cry_candy_sticks = { - name = "Palos de dulce", - text = { - "El efecto de la siguiente ciega jefe se desactiva", - "hasta que hayas jugado {C:attention}#1#{} msnos", - } - }, - j_cry_canvas = { - name = "Lienzo", - text = { - "{C:attention}Reactiva{} todos los {C:attention}comodines{} a la izquierda", - "una vez por {C:attention}todos{} los {C:attention}comodines{} no-{C:blue}comunes", - "a la derecha de este comodín", - }, - }, - j_cry_caramel = { - name = "Caramelo", - text = { - "Cada carta jugada otorga", - "{X:mult,C:white}X#1#{} multi cuando puntúa", - "por las siguientes {C:attention}#2#{} rondas", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Reactiva el comodín del {C:attention}extremo izquierdo{}", - "{C:attention}#1#{} veces adicionales", - }, - }, - j_cry_chili_pepper = { - name = "Ají picante", - text = { - "Este comodín consigue {X:mult,C:white} X#2# {} multi", - "al final de la ronda,", - "{C:red,E:2}se autodestruye{} después de {C:attention}#3#{} rondas", - "{C:inactive}(Actual:{} {X:mult,C:white} X#1# {} {C:inactive}multi){}", - }, - }, - j_cry_chocolate_dice = { - name = "Dado de chocolate", - text = { - "Gira un {C:green}d10{} al derrotar", - "la {C:attention}ciega jefe{} para", - "empezar un {C:cry_ascendant,E:1}evento", - "{C:inactive}(Actual: #1#)" - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} fichas y {X:dark_edition,C:white}^#1#{} multi", - "si tienes {C:attention}exactamente{} #2#", - "manos restantes", - }, - }, - j_cry_circus = { - name = "Circo", - text = { - "Comodines {C:red}raros{} otorgan {X:mult,C:white} X#1# {} multi", - "Comodines {C:cry_epic}épicos{} otorgan {X:mult,C:white} X#2# {} multi", - "Comodines {C:legendary}legendarios{} otorgan {X:mult,C:white} X#3# {} multi", - "Comodines {C:cry_exotic}exóticos{} otorgan {X:mult,C:white} X#4# {} multi", - }, - }, - j_cry_clash = { - name = "El conflicto", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, + j_cry_big_cube = { + name = "Cubo grande", + text = { + "{X:chips,C:white} X#1# {} fichas", + }, + }, + j_cry_biggestm = { + name = "Gigante", + text = { + "{X:mult,C:white} X#1# {} multi hasta el final", + "de la ronda si la {C:attention}mano de póker{}", + "es una {C:attention}#2#{}", + "{C:inactive}(Actual: {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}no es obeso, sólo de huesos grandes.", + }, + }, + j_cry_blacklist = { + name = "Lista negra", + text = { + "Si un {C:attention}#1#{} se juega o está en tu mano,", + "establece {C:chips}fichas{} y {C:mult}multi{} a 0", + "{C:red,E:2}se autodestruye{} si no hay un {C:attention}#1#{} en la baraja", + "{C:inactive,s:0.8}La categoría no cambia", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Crea un consumible", + "{C:attention}aleatorio{} cuando una", + "carta de {C:cry_code}código{} es usada", + "{C:inactive}(debe haber espacio){}", + }, + }, + j_cry_blurred = { + name = "Comodín borroso", + text = { + "Obtén {C:blue}+#1#{} mano(s) al", + "seleccionar una {C:attention}ciega{}", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Cada {C:attention}comodín{} da {C:chips}+#1#{} fichas", + "aumenta la cantidad por {C:chips}+#2#{} si la ", + "{C:attention}mano de póker{} es una {C:attention}#3#{}", + "{C:inactive,s:0.8}Los comodines contentos dan{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}fichas{}", + }, + }, + j_cry_bonkers = { + name = "Comodín trastornado", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_bonusjoker = { + name = "Comodín adicional", + text = { + "{C:green}#1# en #2#{} probabilidades por cada", + "carta {C:attention}adicional{} jugada para aumentar", + "ranuras de {C:attention}comodín{} o {C:attention}consumible", + "por {C:dark_edition}1{} al puntuar", + "{C:red}Funciona 2 veces por runda", + "{C:inactive,s:0.8}(probabilidad igual por cada uno){}", + }, + }, + j_cry_booster = { + name = "Comodín potenciador", + text = { + "{C:attention}+#1#{} ranura de paquete potenciador", + "disponible en la tienda", + }, + }, + j_cry_boredom = { + name = "Aburrimiento", + text = { + "{C:green}#1# en #2#{} probabilidades para", + "{C:attention}reactivar{} cada {C:attention}comodín{}", + "o {C:attention}carta jugada{}", + "{C:inactive,s:0.8}No afecta otros Aburrimientos{}", + }, + }, + j_cry_brittle = { + name = "Dulce frágil", + text = { + "Por las siguientes {C:attention}#1#{} manos,", + "añade {C:attention}Piedra{}, {C:attention}Oro{}, o {C:attention}Acero{} a", + "la carta del extremo derecho que puntúa", + }, + }, + j_cry_bubblem = { + name = "Burbuja M", + text = { + "Crea un {C:attention}Comodín contento{} {C:dark_edition}laminado", + "si la mano jugada contiene", + "un {C:attention}#1#{}", + "{C:red,E:2}se autodestruye{}", + }, + }, + j_cry_busdriver = { + name = "Conductor de bus", + text = { + "{C:green}#1# en #3#{} probabilidades", + "para {C:mult}+#2#{} multi", + "{C:green}1 en 4{} probabilidades", + "para {C:mult}-#2#{} multi", + }, + }, + j_cry_candy_basket = { + name = "Cesta de dulces", + text = { + "Vende esta carta para crear {C:attention}#1#{} {C:cry_candy}dulces", + "{C:attention}+#2#{} {C:cry_candy}dulce{} cada {C:attention}2{} ciegas derrotadas", + "{C:attention}+#3#{} {C:cry_candy}dulces{} al derrotar la {C:attention}ciega jefe{}", + }, + }, + j_cry_candy_buttons = { + name = "Botones de dulce", + text = { + "Las siguientes {C:attention}#1#{} renovaciones", + "cuestan {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Bastón de dulce", + text = { + "Por las siguientes {C:attention}#1#{} rondas,", + "las cartas de juego otorgan {C:money}$#2#", + "cuando se {C:attention}reactivan", + }, + }, + j_cry_candy_dagger = { + name = "Daga de dulce", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la derecha", + "para crear un {C:cry_candy}dulce{}", + }, + }, + j_cry_candy_sticks = { + name = "Palos de dulce", + text = { + "El efecto de la siguiente ciega jefe se desactiva", + "hasta que hayas jugado {C:attention}#1#{} msnos", + }, + }, + j_cry_canvas = { + name = "Lienzo", + text = { + "{C:attention}Reactiva{} todos los {C:attention}comodines{} a la izquierda", + "una vez por {C:attention}todos{} los {C:attention}comodines{} no-{C:blue}comunes", + "a la derecha de este comodín", + }, + }, + j_cry_caramel = { + name = "Caramelo", + text = { + "Cada carta jugada otorga", + "{X:mult,C:white}X#1#{} multi cuando puntúa", + "por las siguientes {C:attention}#2#{} rondas", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Reactiva el comodín del {C:attention}extremo izquierdo{}", + "{C:attention}#1#{} veces adicionales", + }, + }, + j_cry_chili_pepper = { + name = "Ají picante", + text = { + "Este comodín consigue {X:mult,C:white} X#2# {} multi", + "al final de la ronda,", + "{C:red,E:2}se autodestruye{} después de {C:attention}#3#{} rondas", + "{C:inactive}(Actual:{} {X:mult,C:white} X#1# {} {C:inactive}multi){}", + }, + }, + j_cry_chocolate_dice = { + name = "Dado de chocolate", + text = { + "Gira un {C:green}d10{} al derrotar", + "la {C:attention}ciega jefe{} para", + "empezar un {C:cry_ascendant,E:1}evento", + "{C:inactive}(Actual: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} fichas y {X:dark_edition,C:white}^#1#{} multi", + "si tienes {C:attention}exactamente{} #2#", + "manos restantes", + }, + }, + j_cry_circus = { + name = "Circo", + text = { + "Comodines {C:red}raros{} otorgan {X:mult,C:white} X#1# {} multi", + "Comodines {C:cry_epic}épicos{} otorgan {X:mult,C:white} X#2# {} multi", + "Comodines {C:legendary}legendarios{} otorgan {X:mult,C:white} X#3# {} multi", + "Comodines {C:cry_exotic}exóticos{} otorgan {X:mult,C:white} X#4# {} multi", + }, + }, + j_cry_clash = { + name = "El conflicto", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, - j_cry_CodeJoker = { - name = "Comodín de código", - text = { - "Crea una {C:cry_code}carta de código{}", - "{C:dark_edition}negativa{} cuando se", - "selecciona una {C:attention}ciega{}", - }, - }, - j_cry_coin = { - name = "Moneda crypto", - text = { - "Gana entre", - "{C:money}$#1#{} y {C:money}$#2#{} por", - "cada comodín {C:attention}vendido{}", - }, - }, - j_cry_compound_interest = { - name = "Interés compuesto", - text = { - "Gana {C:money}#1#%{} de tu dinero total", - "al final de la ronda,", - "aumenta por {C:money}#2#%{} por cada", - "pago consecutivo", - }, - }, - j_cry_copypaste = { - name = "Copiar y pegar", - text = { - "Cuando una carta {C:cry_code}código{} se usa,", - "{C:green}#1# en #2#{} probabilidades para añadir", - "una copia a tus consumibles", - "{C:inactive}(debe haber espacio)", - }, - }, - j_cry_cotton_candy = { - name = "Algodón de azúcar", - text = { - "Al venderse, los {C:attention}comodines{}", - "adyacentes se vuelven {C:dark_edition}negativos{}" - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "Este comodín gana {C:chips}+#2#{} fichas", - "por cada {C:attention}renovación{} en la tienda", - "{C:green}Todas las renovaciones son gratis{}", - "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", - }, - }, - j_cry_cryptidmoment = { - name = "Cadena M", - text = { - "Vende esta carta para", - "añadir {C:money}$#1#{} de {C:attention}valor de venta{}", - "a cada {C:attention}comodín{}", - }, - }, - j_cry_cube = { - name = "Cubo", - text = { - "{C:chips}+#1#{} fichas", - }, - }, - j_cry_curse_sob = { - name = "Sollozo", - text = { - "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}correr...{}", - "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}esconderte...{}", - "{C:dark_edition,E:1}no puedes escapar...{}", - "{C:inactive}(debe haber espacio){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "Este comodín gana {C:chips}+#2#{} fichas", - "por cada carta {C:attention}comprada{}", - "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", - }, - }, - j_cry_cut = { - name = "Cortar", - text = { - "Este comodín destruye una", - "carta de {C:cry_code}código{} al azar,", - "y gana {X:mult,C:white} X#1# {} multi", - "al final de la {C:attention}tienda{}", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_delirious = { - name = "Comodín delirante", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_discreet = { - name = "Comodín discreto", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_doodlem = { - name = "Garabato M", - text = { - "Crea 2 {C:attention}consumibles{} {C:dark_edition}negativos{}", - "cuando se selecciona una {C:attention}ciega{}", - "Crea 1 {C:attention}consumibles{} adicional", - "por cada {C:attention}comodín contento{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Escala doble", - text = { - "Los {C:attention}comodines{} escaladores", - "aumentan {C:attention}cuadráticamente", - "{C:inactive,s:0.8}(ej. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(crece por by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Tiro al blanco", - text = { - "Este comodín consigue {X:mult,C:white} X#1# {} multi por", - "cada carta de {V:1}#2#{} jugada que no puntúa,", - "el palo cambia en cada ronda", - "{C:inactive}(Actual: {X:mult,C:white} X#3# {C:inactive} multi)", - }, - }, - j_cry_dubious = { - name = "Comodín dudoso", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_duos = { - name = "Los dúos", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Este comodín gana {X:mult,C:white} X#2# {} multi", - "cuando un {C:attention}comodín{} o", - "carta de juego puntúa", - "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Saca tu {C:green}baraja completa{} a tu mano", - "al seleccionar una {C:attention}ciega{}", - "{C:inactive,s:0.8}\"Si no puedes manejarme a mi 1x,", - "{C:inactive,s:0.8}no me mereces a mi 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "Cuando obtienes una {C:attention}etiqueta{},", - "crea {C:attention}#1#{} copias de ésta,", - "y {C:attention}aumenta{} la cantidad de", - "copias por {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Comodines aparecen usando el", - "orden de la {C:attention}colección{}", - "Crea {C:attention}#1#{} comodín(es) {C:dark_edition}negativos{}", - "al jugar una mano", - "{C:inactive,s:0.8}Comodines {C:cry_exotic,s:0.8}exóticos {C:inactive,s:0.8}o mejores no pueden aparecer", - "{s:0.8}Último comodín generado: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Llama eterna", - text = { - "Este comodín gana {X:mult,C:white} X#1# {} multi", - "por cada carta {C:attention}vendida{}", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_exoplanet = { - name = "Exoplaneta", - text = { - "Las cartas {C:dark_edition}holográficas{}", - "otorgan {C:mult}+#1#{} multi", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", - "cuando se activa {X:red,C:white}Xmulti{}", - "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", - }, - }, - j_cry_exposed = { - name = "Expuesto", - text = { - "Reactiva todas las cartas {C:attention}numéricas{}", - "{C:attention}#1#{} veces adicionales", - "Todas las cartas de {C:attention}figura{} se debilitan", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} multi si", - "las cartas jugadas puntúan", - "{C:attention}#2#{} o menos veces", - }, - }, - j_cry_filler = { - name = "El relleno", - text={ - "{X:mult,C:white} X#1#{} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Dedos fractales", - text = { - "{C:attention}+#1#{} límite de selección de cartas", - }, - }, - j_cry_flip_side = { - name = "Por el otro lado", - text = { - "Los comodines {C:dark_edition}doble cara{} usan", - "su lado trasero para sus efectos", - "en vez de su lado delantero", - "{C:attention}Reactiva{} todos los comodines {C:dark_edition}doble cara{}" - }, - }, - j_cry_foodm = { - name = "M de comida rápida", - text = { - "{C:mult}+#1#{} multi", - "{C:red,E:2}se autodestruye{} en {C:attention}#2#{} ronda(s)", - "Aumenta por {C:attention}#3#{} ronda cuando un", - "{C:attention}comodín contento{} es {C:attention}vendido{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foolhardy = { - name = "Comodín temerario", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_formidiulosus = { - name = "Formidiulosus", - text = { - "Cuando un comodín {X:cry_cursed,C:white}maldito{} es obtenido, destrúyelo", - "Crea {C:attention}#1#{} {C:cry_candy}dulces {C:dark_edition}negativos{} al final de la tienda", - "Gana {X:dark_edition,C:white}^#2#{} multi por cada {C:cry_candy}dulce{} en tu posesión", - "{C:inactive}(Actual: {X:dark_edition,C:white}^#3#{C:inactive} multi)", - }, - }, - j_cry_foxy = { - name = "Comodín astuto", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "Este comodín gana {C:chips}+#2#{} fichas", - "si la mano jugada {C:attention}no es{}", - "la {C:attention}mano de póker{} más jugada", - "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", - }, - }, - j_cry_fuckedup = { - name = "Comodín jodido", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_gardenfork = { - name = "El jardín de las bifurcaciones", - text = { - "Gana {C:money}$#1#{} si la {C:attention}mano jugada{}", - "contiene un {C:attention}As{} y un {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Duplica{} todos los valores", - "del {C:attention}Joker{} del extremo izquierdo", - "al final de la ronda", - }, - }, - j_cry_ghost = { - name = "Fantasma", - text = { - "Al final de la ronda:", - "{C:green}#1# en #2#{} probabilidades para", - "{C:attention}poseer{} un {C:attention}comodín{} aleatorio", - "{C:green}#1# en #3#{} probabilidades para", - "{E:2,C:red}autodestruirse" - } - }, - j_cry_giggly = { - name = "Comodín absurdo", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_goldjoker = { - name = "Comodín de oro", - text = { - "Gana {C:money}#1#%{} de tu dinero", - "total al final de la ronda", - "El pago aumenta por {C:money}#2#%{}", - "cuando cada carta de {C:attention}oro{}", - "jugada puntúa", - }, - }, - j_cry_googol_play = { - name = "Carta de Googol Play", - text = { - "{C:green}#1# en #2#{} probabilidades de", - "{X:red,C:white} X#3# {} multi", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Crea un {C:attention}comodín{} aleatorio", - "al final de la ronda", - "Vende esta carta para", - "crear un {C:attention}comodín{} aleatorio", - "{C:inactive}(debe haber espacio){}", - }, - }, - j_cry_happyhouse = { - name = "Casa feliz", - text = { - "{X:dark_edition,C:white}^#1#{} multi sólo después de", - "jugar {C:attention}114{} manos{}", - "{C:inactive}(Actual: #2#/114){}", - "{C:inactive,s:0.8}¡No hay un lugar como el hugar!{}", - }, - }, - j_cry_home = { - name = "El hogar", - text={ - "{X:mult,C:white} X#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consum-ible", - text = { - "Gana {C:money}$#1#{} cuando", - "usas un {C:attention}consumible{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Reactiva todas las cartas jugadas", - "{C:attention}#2#{} vez,", - "cada carta jugada otorga", - "{X:mult,C:white} X#1# {} multi cuando puntúa", - }, - }, - j_cry_jawbreaker = { - name = "Jawbreaker", - text = { - "Al derrotar la {C:attention}ciega jefe,", - "{C:attention}duplica{} los valores de los comodines adyacentes", - "{E:2,C:red}se autodestruye{}", - } - }, - j_cry_jimball = { - name = "Jimball", - text = { - "Este comodín gana {X:mult,C:white} X#1# {} multi", - "por cada mano jugada {C:attention}consecutiva{}", - "mientras juegas tu", - "{C:attention}mano de póker{} más jugada", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_jollysus = { - name = "¿Comodín contento?", - text = { - "Crea un comodín {C:dark_edition}contento{}", - "cuando un comodín es {C:attention}vendido{}", - "{C:red}Funciona una vez por ronda{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Parece legítimo...{}", - }, - }, - j_cry_kidnap = { - name = "Secuestro", - text = { - "Gana {C:money}$#2#{} al final de la ronda", - "Aumenta el pago por {C:money}$#1#{}", - "cuando un comodín de {C:attention}tipo multi{}", - "o {C:attention}tipo fichas{} es vendido", - }, - }, - j_cry_kooky = { - name = "Comodín raro", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_krustytheclown = { - name = "Krusty el Payaso", - text = { - "Este comodín gana", - "{X:mult,C:white} X#1# {} multi cuando", - "cada {C:attention}carta{} jugada puntúa", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_kscope = { - name = "Caleidoscopio", - text = { - "Agrega {C:dark_edition}policromía{} a", - "un {C:attention}comodín{} aleatorio al", - "derrotar la {C:attention}ciega jefe{}", - }, - }, - j_cry_lightupthenight = { - name = "Ilumina la noche", - text = { - "Cada {C:attention}7{} o {C:attention}2{} jugado", - "otorga {X:mult,C:white}X#1#{} multi cuando puntúa", - }, - }, - j_cry_longboi = { - name = "Monstruo", - text = { - "Otorga futuras copias de", - "este comodín {X:mult,C:white}X#1#{} multi", - "al final de la ronda", - "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Reactiva{} todos los comodines", - "una vez por cada {C:attention}comodín{}", - "{C:attention}contento{} vendido esta ronda", - "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", - "{C:inactive,s:0.8}No había suficiente espacio...{}", - }, - }, - j_cry_lucky_joker = { - name = "Comodín de la suerte", - text = { - "Gana {C:money}$#1#{} cada vez que", - "una carta {C:attention}de la suerte{} se active", - "{C:green}con éxito{}", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "Todos los comodines otorgan", - "{X:chips,C:white} X#1# {} fichas", - }, - }, - j_cry_m = { - name = "m", - text = { - "Este comodín gana {X:mult,C:white} X#1# {} multi", - "cuando un {C:attention}Comodín contento{} es vendido", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Crea un {C:attention}Comodín contento{} ", - "{C:dark_edition}negativo{} cuando se", - "selecciona una {C:attention}ciega{}", - }, - }, - j_cry_macabre = { - name = "Comodín macabro", - text = { - "Al seleccionar una {C:attention}ciega{},", - "destruye todos los {C:attention}comodines{} excepto", - "{C:legendary}comodines M{} y {C:attention}comodines contentos{}", - "y crea 1 {C:attention}comodín contento{}", - "por cada carta destruida", - }, - }, - j_cry_magnet = { - name = "Imán de refrigerador", - text = { - "Gana {C:money}$#1#{} al final de la ronda", - "Obtienes {X:money,C:white} X#2# {} si hay", - "{C:attention}#3#{} o menos {C:attention}comodines{}", - }, - }, - j_cry_manic = { - name = "Comodín maníaco", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Reactiva todos los comodines", - "{C:attention}#1#{} veces adicionales", - }, - }, - j_cry_mask = { - name = "Máscara", - text = { - "Reactiva todas las cartas de {C:attention}figura{}", - "{C:attention}#1#{} veces adicionales", - "Todas las cartas {C:attention}numéricas{} se debilitan", - }, - }, + j_cry_CodeJoker = { + name = "Comodín de código", + text = { + "Crea una {C:cry_code}carta de código{}", + "{C:dark_edition}negativa{} cuando se", + "selecciona una {C:attention}ciega{}", + }, + }, + j_cry_coin = { + name = "Moneda crypto", + text = { + "Gana entre", + "{C:money}$#1#{} y {C:money}$#2#{} por", + "cada comodín {C:attention}vendido{}", + }, + }, + j_cry_compound_interest = { + name = "Interés compuesto", + text = { + "Gana {C:money}#1#%{} de tu dinero total", + "al final de la ronda,", + "aumenta por {C:money}#2#%{} por cada", + "pago consecutivo", + }, + }, + j_cry_copypaste = { + name = "Copiar y pegar", + text = { + "Cuando una carta {C:cry_code}código{} se usa,", + "{C:green}#1# en #2#{} probabilidades para añadir", + "una copia a tus consumibles", + "{C:inactive}(debe haber espacio)", + }, + }, + j_cry_cotton_candy = { + name = "Algodón de azúcar", + text = { + "Al venderse, los {C:attention}comodines{}", + "adyacentes se vuelven {C:dark_edition}negativos{}", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "Este comodín gana {C:chips}+#2#{} fichas", + "por cada {C:attention}renovación{} en la tienda", + "{C:green}Todas las renovaciones son gratis{}", + "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", + }, + }, + j_cry_cryptidmoment = { + name = "Cadena M", + text = { + "Vende esta carta para", + "añadir {C:money}$#1#{} de {C:attention}valor de venta{}", + "a cada {C:attention}comodín{}", + }, + }, + j_cry_cube = { + name = "Cubo", + text = { + "{C:chips}+#1#{} fichas", + }, + }, + j_cry_curse_sob = { + name = "Sollozo", + text = { + "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}correr...{}", + "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}esconderte...{}", + "{C:dark_edition,E:1}no puedes escapar...{}", + "{C:inactive}(debe haber espacio){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "Este comodín gana {C:chips}+#2#{} fichas", + "por cada carta {C:attention}comprada{}", + "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", + }, + }, + j_cry_cut = { + name = "Cortar", + text = { + "Este comodín destruye una", + "carta de {C:cry_code}código{} al azar,", + "y gana {X:mult,C:white} X#1# {} multi", + "al final de la {C:attention}tienda{}", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_delirious = { + name = "Comodín delirante", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Comodín discreto", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Garabato M", + text = { + "Crea 2 {C:attention}consumibles{} {C:dark_edition}negativos{}", + "cuando se selecciona una {C:attention}ciega{}", + "Crea 1 {C:attention}consumibles{} adicional", + "por cada {C:attention}comodín contento{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Escala doble", + text = { + "Los {C:attention}comodines{} escaladores", + "aumentan {C:attention}cuadráticamente", + "{C:inactive,s:0.8}(ej. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(crece por by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Tiro al blanco", + text = { + "Este comodín consigue {X:mult,C:white} X#1# {} multi por", + "cada carta de {V:1}#2#{} jugada que no puntúa,", + "el palo cambia en cada ronda", + "{C:inactive}(Actual: {X:mult,C:white} X#3# {C:inactive} multi)", + }, + }, + j_cry_dubious = { + name = "Comodín dudoso", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "Los dúos", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Este comodín gana {X:mult,C:white} X#2# {} multi", + "cuando un {C:attention}comodín{} o", + "carta de juego puntúa", + "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Saca tu {C:green}baraja completa{} a tu mano", + "al seleccionar una {C:attention}ciega{}", + '{C:inactive,s:0.8}"Si no puedes manejarme a mi 1x,', + '{C:inactive,s:0.8}no me mereces a mi 2x"', + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "Cuando obtienes una {C:attention}etiqueta{},", + "crea {C:attention}#1#{} copias de ésta,", + "y {C:attention}aumenta{} la cantidad de", + "copias por {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Comodines aparecen usando el", + "orden de la {C:attention}colección{}", + "Crea {C:attention}#1#{} comodín(es) {C:dark_edition}negativos{}", + "al jugar una mano", + "{C:inactive,s:0.8}Comodines {C:cry_exotic,s:0.8}exóticos {C:inactive,s:0.8}o mejores no pueden aparecer", + "{s:0.8}Último comodín generado: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Llama eterna", + text = { + "Este comodín gana {X:mult,C:white} X#1# {} multi", + "por cada carta {C:attention}vendida{}", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_exoplanet = { + name = "Exoplaneta", + text = { + "Las cartas {C:dark_edition}holográficas{}", + "otorgan {C:mult}+#1#{} multi", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", + "cuando se activa {X:red,C:white}Xmulti{}", + "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", + }, + }, + j_cry_exposed = { + name = "Expuesto", + text = { + "Reactiva todas las cartas {C:attention}numéricas{}", + "{C:attention}#1#{} veces adicionales", + "Todas las cartas de {C:attention}figura{} se debilitan", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} multi si", + "las cartas jugadas puntúan", + "{C:attention}#2#{} o menos veces", + }, + }, + j_cry_filler = { + name = "El relleno", + text = { + "{X:mult,C:white} X#1#{} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Dedos fractales", + text = { + "{C:attention}+#1#{} límite de selección de cartas", + }, + }, + j_cry_flip_side = { + name = "Por el otro lado", + text = { + "Los comodines {C:dark_edition}doble cara{} usan", + "su lado trasero para sus efectos", + "en vez de su lado delantero", + "{C:attention}Reactiva{} todos los comodines {C:dark_edition}doble cara{}", + }, + }, + j_cry_foodm = { + name = "M de comida rápida", + text = { + "{C:mult}+#1#{} multi", + "{C:red,E:2}se autodestruye{} en {C:attention}#2#{} ronda(s)", + "Aumenta por {C:attention}#3#{} ronda cuando un", + "{C:attention}comodín contento{} es {C:attention}vendido{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foolhardy = { + name = "Comodín temerario", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_formidiulosus = { + name = "Formidiulosus", + text = { + "Cuando un comodín {X:cry_cursed,C:white}maldito{} es obtenido, destrúyelo", + "Crea {C:attention}#1#{} {C:cry_candy}dulces {C:dark_edition}negativos{} al final de la tienda", + "Gana {X:dark_edition,C:white}^#2#{} multi por cada {C:cry_candy}dulce{} en tu posesión", + "{C:inactive}(Actual: {X:dark_edition,C:white}^#3#{C:inactive} multi)", + }, + }, + j_cry_foxy = { + name = "Comodín astuto", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "Este comodín gana {C:chips}+#2#{} fichas", + "si la mano jugada {C:attention}no es{}", + "la {C:attention}mano de póker{} más jugada", + "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", + }, + }, + j_cry_fuckedup = { + name = "Comodín jodido", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_gardenfork = { + name = "El jardín de las bifurcaciones", + text = { + "Gana {C:money}$#1#{} si la {C:attention}mano jugada{}", + "contiene un {C:attention}As{} y un {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Duplica{} todos los valores", + "del {C:attention}Joker{} del extremo izquierdo", + "al final de la ronda", + }, + }, + j_cry_ghost = { + name = "Fantasma", + text = { + "Al final de la ronda:", + "{C:green}#1# en #2#{} probabilidades para", + "{C:attention}poseer{} un {C:attention}comodín{} aleatorio", + "{C:green}#1# en #3#{} probabilidades para", + "{E:2,C:red}autodestruirse", + }, + }, + j_cry_giggly = { + name = "Comodín absurdo", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Comodín de oro", + text = { + "Gana {C:money}#1#%{} de tu dinero", + "total al final de la ronda", + "El pago aumenta por {C:money}#2#%{}", + "cuando cada carta de {C:attention}oro{}", + "jugada puntúa", + }, + }, + j_cry_googol_play = { + name = "Carta de Googol Play", + text = { + "{C:green}#1# en #2#{} probabilidades de", + "{X:red,C:white} X#3# {} multi", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Crea un {C:attention}comodín{} aleatorio", + "al final de la ronda", + "Vende esta carta para", + "crear un {C:attention}comodín{} aleatorio", + "{C:inactive}(debe haber espacio){}", + }, + }, + j_cry_happyhouse = { + name = "Casa feliz", + text = { + "{X:dark_edition,C:white}^#1#{} multi sólo después de", + "jugar {C:attention}114{} manos{}", + "{C:inactive}(Actual: #2#/114){}", + "{C:inactive,s:0.8}¡No hay un lugar como el hugar!{}", + }, + }, + j_cry_home = { + name = "El hogar", + text = { + "{X:mult,C:white} X#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consum-ible", + text = { + "Gana {C:money}$#1#{} cuando", + "usas un {C:attention}consumible{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Reactiva todas las cartas jugadas", + "{C:attention}#2#{} vez,", + "cada carta jugada otorga", + "{X:mult,C:white} X#1# {} multi cuando puntúa", + }, + }, + j_cry_jawbreaker = { + name = "Jawbreaker", + text = { + "Al derrotar la {C:attention}ciega jefe,", + "{C:attention}duplica{} los valores de los comodines adyacentes", + "{E:2,C:red}se autodestruye{}", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "Este comodín gana {X:mult,C:white} X#1# {} multi", + "por cada mano jugada {C:attention}consecutiva{}", + "mientras juegas tu", + "{C:attention}mano de póker{} más jugada", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_jollysus = { + name = "¿Comodín contento?", + text = { + "Crea un comodín {C:dark_edition}contento{}", + "cuando un comodín es {C:attention}vendido{}", + "{C:red}Funciona una vez por ronda{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Parece legítimo...{}", + }, + }, + j_cry_kidnap = { + name = "Secuestro", + text = { + "Gana {C:money}$#2#{} al final de la ronda", + "Aumenta el pago por {C:money}$#1#{}", + "cuando un comodín de {C:attention}tipo multi{}", + "o {C:attention}tipo fichas{} es vendido", + }, + }, + j_cry_kooky = { + name = "Comodín raro", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty el Payaso", + text = { + "Este comodín gana", + "{X:mult,C:white} X#1# {} multi cuando", + "cada {C:attention}carta{} jugada puntúa", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_kscope = { + name = "Caleidoscopio", + text = { + "Agrega {C:dark_edition}policromía{} a", + "un {C:attention}comodín{} aleatorio al", + "derrotar la {C:attention}ciega jefe{}", + }, + }, + j_cry_lightupthenight = { + name = "Ilumina la noche", + text = { + "Cada {C:attention}7{} o {C:attention}2{} jugado", + "otorga {X:mult,C:white}X#1#{} multi cuando puntúa", + }, + }, + j_cry_longboi = { + name = "Monstruo", + text = { + "Otorga futuras copias de", + "este comodín {X:mult,C:white}X#1#{} multi", + "al final de la ronda", + "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Reactiva{} todos los comodines", + "una vez por cada {C:attention}comodín{}", + "{C:attention}contento{} vendido esta ronda", + "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", + "{C:inactive,s:0.8}No había suficiente espacio...{}", + }, + }, + j_cry_lucky_joker = { + name = "Comodín de la suerte", + text = { + "Gana {C:money}$#1#{} cada vez que", + "una carta {C:attention}de la suerte{} se active", + "{C:green}con éxito{}", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "Todos los comodines otorgan", + "{X:chips,C:white} X#1# {} fichas", + }, + }, + j_cry_m = { + name = "m", + text = { + "Este comodín gana {X:mult,C:white} X#1# {} multi", + "cuando un {C:attention}Comodín contento{} es vendido", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Crea un {C:attention}Comodín contento{} ", + "{C:dark_edition}negativo{} cuando se", + "selecciona una {C:attention}ciega{}", + }, + }, + j_cry_macabre = { + name = "Comodín macabro", + text = { + "Al seleccionar una {C:attention}ciega{},", + "destruye todos los {C:attention}comodines{} excepto", + "{C:legendary}comodines M{} y {C:attention}comodines contentos{}", + "y crea 1 {C:attention}comodín contento{}", + "por cada carta destruida", + }, + }, + j_cry_magnet = { + name = "Imán de refrigerador", + text = { + "Gana {C:money}$#1#{} al final de la ronda", + "Obtienes {X:money,C:white} X#2# {} si hay", + "{C:attention}#3#{} o menos {C:attention}comodines{}", + }, + }, + j_cry_manic = { + name = "Comodín maníaco", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Reactiva todos los comodines", + "{C:attention}#1#{} veces adicionales", + }, + }, + j_cry_mask = { + name = "Máscara", + text = { + "Reactiva todas las cartas de {C:attention}figura{}", + "{C:attention}#1#{} veces adicionales", + "Todas las cartas {C:attention}numéricas{} se debilitan", + }, + }, - j_cry_maximized = { - name = "Maximizado", - text = { - "Todas las cartas de {C:attention}figura{}", - "son consideradas {C:attention}Reyes{},", - "todas las cartas de {C:attention}número{}", - "son consideradas {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Laberinto", - text = { - "Todas las manos son consideradas la", - "{C:attention}primera mano{} de cada ronda,", - "todos los descartes son considerados el", - "{C:attention}primer descarte{} de cada ronda", - }, - }, - j_cry_Megg = { - name = "Muevo", - text = { - "Vende esta carta para crear", - "{C:attention}#2#{} Comodines contentos, aumenta", - "por {C:attention}#1#{} al final de la ronda", - }, - }, - j_cry_mellowcreme = { - name = "Mellowcreme", - text = { - "Vende esta carta para {C:attention}multiplicar", - "el valor de venta de todos los", - "{C:attention}consumibles{} por {C:attention}X#1#" - } - }, - j_cry_membershipcard = { - name = "Carta de afiliación", - text = { - "{X:mult,C:white}X#1#{} multi por cada miembro", - "en el {C:attention}Discord de Cryptid{}", - "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Carta de miembro antigua", --renamed it for making it distinct - text = { - "{C:chips}+#1#{} fichas por cada miembro", - "en el {C:attention}Discord de Cryptid{}", - "{C:inactive}(Actual: {C:chips}+#2#{C:inactive} fichas)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Lluvia de meteoros", - text = { - "Las cartas {C:dark_edition}laminadas{}", - "otorgan {C:chips}+#1#{} fichas", - }, - }, - j_cry_mneon = { - name = "M neón", - text = { - "Gana {C:money}$#2#{} al final de la ronda", - "Aumenta el pago por", - "{C:money}$#1#{} por cada {C:attention}Comodín contento{}", - "o {C:legendary}comodín M{} al", - "final de la ronda", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "Este comodín consigue {X:mult,C:white}X#1#{} multi", - "si no se usaron {C:attention}descartes{}", - "en esta ronda", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_monkey_dagger = { - name = "Daga de mono", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la izquierda", - "y agrega para siempre {C:attention}10 veces", - "de valor de venta a estas {C:chips}fichas{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_monopoly_money = { - name = "Dinero de monopolio", - text = { - "{C:green}#1# en #2#{} probabilidades para", - "{C:attention}destruir{} objetos comprados", - "Divide tu dinero en 2 cuando se {C:attention}vende", - } - }, - j_cry_morse = { - name = "Código morse", - text = { - "Gana {C:money}$#2#{} al final de la ronda", - "Aumenta el pago por {C:money}$#1#{} al", - "vender una carta con una {C:attention}edición{}", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Crea un {C:legendary}comodín M{} al final de la ronda", - "Cada {C:attention}Comodín contento{} o {C:legendary}comodín M", - "otorga {X:dark_edition,C:white}^#1#{} multi", - "Aumenta el valor por {X:dark_edition,C:white}^#2#{}", - "cuando un {C:attention}Comodín contento{} es {C:attention}vendido", - "{C:inactive,s:0.8}(Tredecim excluido)", - }, - }, - j_cry_mstack = { - name = "Pila de Ms", - text = { - "Reactiva todas las cartas jugadas", - "una vez por cada", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}comodines contentos{} vendidos", - "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", - }, - }, - j_cry_multjoker = { - name = "Comodín multi", - text = { - "{C:green}#1# en #2#{} probabilidades por cada", - "carta {C:attention}multi{} jugada para que cree", - "una carta {C:spectral}Críptido{} al anotar", - "{C:inactive}(Debe haber espacio)", - }, - }, - j_cry_necromancer = { - name = "Nigromante", - text = { - "Cuando un comodín es {C:attention}vendido{} por un precio mayor que {C:attention}$0{},", - "gana un comodín {C:attention}aleatorio{} {C:attention}vendido{} en esta partida", - "y establece su {C:attention}valor de venta{} a {C:attention}$0{}", - }, - }, - j_cry_negative = { - name = "Comodín negativo", - text = { - "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} fichas si la mano jugada", - "contiene un {C:attention}6{} y un {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Noche", - text = { - "{X:dark_edition,C:white}^#1#{} multi en la", - "última mano de la ronda", - "{E:2,C:red}se autodestruye{} en", - "la última mano de la ronda", - }, - }, - j_cry_nosound = { - name = "Sin sonido, sin memoria", - text = { - "Reactiva cada {C:attention}7{} jugado", - "{C:attention:}#1#{} veces adicionales", - }, - }, - j_cry_notebook = { - name = "Cuaderno", - text = { - "{C:green} #1# en #2#{} probabilidades para conseguir {C:dark_edition}+1{} ranura", - "de comodín por cada {C:attention}renovación{} en la tienda", - "{C:green}Siempre se activa{} si hay", - "{C:attention}#5#{} o más {C:attention}Comodines contentos{}", - "{C:red}Funciona una vez por ronda{}", - "{C:inactive}(Actual: {C:dark_edition}+#3#{}{C:inactive} y #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Bloques numerados", - text = { - "Gana {C:money}$#1#{} al final de la ronda", - "Aumenta el pago por {C:money}$#2#{}", - "por cada {C:attention}#3#{} en tu mano,", - "la categoría cambia cada ronda", - }, - }, - j_cry_nuts = { - name = "El loco", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Comodín loco", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_oil_lamp = { - name = "Lámpara de aceite", - text = { - "Al final de la ronda, aumenta los valores", - "del comodín del {C:attention}extremo derecho{} por {C:attention}x#1#{}" - }, - }, - - j_cry_oldblueprint = { - name = "Plano viejo", - text = { - "Copia la habilidad del", - "{C:attention}comodín{} de la derecha", - "{C:green}#1# en #2#{} probabilidades", - "de que la carta se destruya", - "al final de la ronda", - }, - }, - j_cry_oldcandy = { - name = "Dulce nostálgico", - text = { - "Vende esta carta para ganar", - "{C:attention}+#1#{} tamaño de mano", - "de forma permanente", - }, - }, - j_cry_oldinvisible = { - name = "Comodín invisible nostálgico", - text = { - "{C:attention}Duplioca{} un {C:attention}comodín{}", - "aleatorio cada {C:attention}4", - "cartas de comodín vendidas", - "{s:0.8}Comodín invisible nostálgico excluido{}", - "{C:inactive}(Actual: #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panóptico", - text = { - "Todas las manos son consideradas la", - "{C:attention}última mano{} de cada ronda", -- +4 dabloons - }, - }, - j_cry_penetrating = { - name = "Comodín penetrante", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_pickle = { --holy shit dethklok reference - name = "Pepinillo", - text = { - "Al saltar una {C:attention}ciega{}, crea", - "{C:attention}#1#{} etiquetas, disminuye por", - "{C:red}#2#{} cuando se selecciona una {C:attention}ciega{}", - }, - }, - j_cry_pirate_dagger = { - name = "Daga de pirata", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la derecha", - "y agraga {C:attention}un cuarto{} del", - "valor de venta a {X:chips,C:white} Xfichas {}", - "{C:inactive}(Actual: {X:chips,C:white} X#1# {C:inactive} fichas)", - }, - }, - j_cry_pot_of_jokes = { - name = "Olla de las bromas", - text = { - "{C:attention}#1#{} tamaño de mano,", - "aumenta por", - "{C:blue}#2#{} cada runda", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", - "si todas las cartas en la mano jugada son", - "{C:attention}Ases{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, o {C:attention}7s{}", - "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "Este comodín gana", - "{X:mult,C:white} X#1# {} multi cuando una", - "carta de {C:cry_code}código{} se usa", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_queens_gambit = { - name = "Gambito de dama", - text = { - "Si {C:attention}la mano de póker{} es una", - "{C:attention}Escalera real{}, destruye la", - "{C:attention}reina{} puntuada y crea un", - "{C:attention}comodín{} {C:red}raro{} {C:dark_edition}negativo{}", - }, - }, - j_cry_quintet = { - name = "El quinteto", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Bloon rojo", - text = { - "Gana {C:money}$#1#{} en {C:attention}#2#{} ronda(s)", - "{C:red,E:2}se autodestruye{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} apuesta al gastar", - "{C:money}$#2#{} {C:inactive}($#3#){}", - "{s:0.8}Requisitos aumentan", - "{C:attention,s:0.8}exponencialmente{s:0.8} por cada uso", - "{C:money,s:0.8}Siguiente aumento: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "Cuando un {C:attention}comodín{} es vendido,", - "añade sus efectos a", - "todos los otros comodines", - "{C:inactive,s:0.8}No afecta a otros Rescribere{}" - } - }, - j_cry_reverse = { - name = "Carta de reversa", - text = { - "Rellena todos las ranuras de comodín vacías {C:inactive}(Max 100){}", - "con {C:attention}Comodines contentos{} {C:dark_edition}holográficos{} si", - "la {C:attention}mano de póker descartada{} es una {C:attention}#1#{}", - "{C:red,E:2}se autodestruye{}", - "{C:inactive,s:0.8}¡El regreso SUPREMO!{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Aleatoriza abilidades por cada {C:attention}apuesta{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrificio", - text = { - "Crea un comodín {C:green}inusual{}", - "y 3 {C:attention}Comodines contentos{} al", - "usar una carta {C:spectral}espectral{}", - "{C:red}Funciona una vez por ronda{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Brote", - text = { - "Después de puntuar {C:attention}#2#{} {C:inactive}[#1#]{} cartas", - "mejoradas, vende esta carta para", - "crear un {C:attention}comodín{} {C:cry_epic}épico{} ", - "{C:inactive,s:0.8}Creará un {C:attention,s:0.8}comodín{} {C:red,s:0.8}raro{} si los", - "{C:inactive,s:0.8}comodines {C:cry_epic,s:0.8}épicos{} {C:inactive,s:0.8}están desactivados{}", - }, - }, - j_cry_savvy = { - name = "Comodín inteligente", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Los {C:attention}comodines{} escalan", - "como un polinomio grado-{C:attention}#1#{},", - "aumenta el grado por {C:attention}#2#{}", - "al final de la ronda", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluido)", - }, - }, - j_cry_scrabble = { - name = "Teja de Scrabble", - text = { - "{C:green}#1# en #2#{} probabilidades de crear", - "un comodín {C:green}inusual{} {C:dark_edition}contento", - "al jugar una mano", - }, - }, - j_cry_seal_the_deal = { - name = "Sellar el acuerdo", - text = { - "Añade un {C:attention}sello al azar{} a cada carta", - "puntuada en la {C:attention}última mano{} de la ronda", - }, - }, - j_cry_shrewd = { - name = "Comodín perspicaz", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_silly = { - name = "Comodín bobo", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_smallestm = { - name = "Diminuto", - text = { - "Crea una {C:cry_jolly}Etiqueta MM", - "si la {C:attention}mano de póker{} jugada", - "es una {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so básicamente soy muy peque", - }, - }, - j_cry_soccer = { - name = "Uno para todos", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} ranura de comodín", - "{C:attention}+#1#{} ranura de paquete potenciador", - "{C:attention}+#1#{} tamaño de mano", - "{C:attention}+#1#{} ranura de consumible", - "{C:attention}+#1#{} ranura de carta en la tienda", - }, - }, - j_cry_spaceglobe = { - name = "Esfera celestial", - text = { - "Este comodín gana {X:chips,C:white}X#2#{} fichas", - "si la {C:attention}mano de póker{} es un(a) {C:attention}#3#{},", - "mano cambia después de aumentar{}", - "{C:inactive}(Actual:{} {X:chips,C:white}X#1#{} {C:inactive}fichas){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Crea una copia {C:dark_edition}negativa{}", - "de un {C:attention}comodín{} aleatorio", - "al final de la {C:attention}tienda", - "{C:inactive,s:0.8}No copia otros Speculo{}", - }, - }, - j_cry_spy = { - name = "Espía", - text = { - "{X:mult,C:white} X#2# {} multi, {C:dark_edition}+1{} ranura de {C:attention}comodín{}", - "{C:inactive}¡Ese #1# es un espía!", - }, - }, - j_cry_stardust = { - name = "Polvo de estrellas", - text = { - "Las cartas {C:dark_edition}policromas{}", - "otorgan {X:mult,C:white}X#1#{} multi", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "Este comodín destruye una", - "carta de {C:planet}planeta{} al azar", - "y gana {X:dark_edition,C:white} ^#1# {} multi", - "al final de la {C:attention}tienda{}", - "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", - }, - }, - j_cry_stronghold = { - name = "La fortaleza", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, + j_cry_maximized = { + name = "Maximizado", + text = { + "Todas las cartas de {C:attention}figura{}", + "son consideradas {C:attention}Reyes{},", + "todas las cartas de {C:attention}número{}", + "son consideradas {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Laberinto", + text = { + "Todas las manos son consideradas la", + "{C:attention}primera mano{} de cada ronda,", + "todos los descartes son considerados el", + "{C:attention}primer descarte{} de cada ronda", + }, + }, + j_cry_Megg = { + name = "Muevo", + text = { + "Vende esta carta para crear", + "{C:attention}#2#{} Comodines contentos, aumenta", + "por {C:attention}#1#{} al final de la ronda", + }, + }, + j_cry_mellowcreme = { + name = "Mellowcreme", + text = { + "Vende esta carta para {C:attention}multiplicar", + "el valor de venta de todos los", + "{C:attention}consumibles{} por {C:attention}X#1#", + }, + }, + j_cry_membershipcard = { + name = "Carta de afiliación", + text = { + "{X:mult,C:white}X#1#{} multi por cada miembro", + "en el {C:attention}Discord de Cryptid{}", + "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Carta de miembro antigua", --renamed it for making it distinct + text = { + "{C:chips}+#1#{} fichas por cada miembro", + "en el {C:attention}Discord de Cryptid{}", + "{C:inactive}(Actual: {C:chips}+#2#{C:inactive} fichas)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Lluvia de meteoros", + text = { + "Las cartas {C:dark_edition}laminadas{}", + "otorgan {C:chips}+#1#{} fichas", + }, + }, + j_cry_mneon = { + name = "M neón", + text = { + "Gana {C:money}$#2#{} al final de la ronda", + "Aumenta el pago por", + "{C:money}$#1#{} por cada {C:attention}Comodín contento{}", + "o {C:legendary}comodín M{} al", + "final de la ronda", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "Este comodín consigue {X:mult,C:white}X#1#{} multi", + "si no se usaron {C:attention}descartes{}", + "en esta ronda", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_monkey_dagger = { + name = "Daga de mono", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la izquierda", + "y agrega para siempre {C:attention}10 veces", + "de valor de venta a estas {C:chips}fichas{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_monopoly_money = { + name = "Dinero de monopolio", + text = { + "{C:green}#1# en #2#{} probabilidades para", + "{C:attention}destruir{} objetos comprados", + "Divide tu dinero en 2 cuando se {C:attention}vende", + }, + }, + j_cry_morse = { + name = "Código morse", + text = { + "Gana {C:money}$#2#{} al final de la ronda", + "Aumenta el pago por {C:money}$#1#{} al", + "vender una carta con una {C:attention}edición{}", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Crea un {C:legendary}comodín M{} al final de la ronda", + "Cada {C:attention}Comodín contento{} o {C:legendary}comodín M", + "otorga {X:dark_edition,C:white}^#1#{} multi", + "Aumenta el valor por {X:dark_edition,C:white}^#2#{}", + "cuando un {C:attention}Comodín contento{} es {C:attention}vendido", + "{C:inactive,s:0.8}(Tredecim excluido)", + }, + }, + j_cry_mstack = { + name = "Pila de Ms", + text = { + "Reactiva todas las cartas jugadas", + "una vez por cada", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}comodines contentos{} vendidos", + "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", + }, + }, + j_cry_multjoker = { + name = "Comodín multi", + text = { + "{C:green}#1# en #2#{} probabilidades por cada", + "carta {C:attention}multi{} jugada para que cree", + "una carta {C:spectral}Críptido{} al anotar", + "{C:inactive}(Debe haber espacio)", + }, + }, + j_cry_necromancer = { + name = "Nigromante", + text = { + "Cuando un comodín es {C:attention}vendido{} por un precio mayor que {C:attention}$0{},", + "gana un comodín {C:attention}aleatorio{} {C:attention}vendido{} en esta partida", + "y establece su {C:attention}valor de venta{} a {C:attention}$0{}", + }, + }, + j_cry_negative = { + name = "Comodín negativo", + text = { + "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} fichas si la mano jugada", + "contiene un {C:attention}6{} y un {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Noche", + text = { + "{X:dark_edition,C:white}^#1#{} multi en la", + "última mano de la ronda", + "{E:2,C:red}se autodestruye{} en", + "la última mano de la ronda", + }, + }, + j_cry_nosound = { + name = "Sin sonido, sin memoria", + text = { + "Reactiva cada {C:attention}7{} jugado", + "{C:attention:}#1#{} veces adicionales", + }, + }, + j_cry_notebook = { + name = "Cuaderno", + text = { + "{C:green} #1# en #2#{} probabilidades para conseguir {C:dark_edition}+1{} ranura", + "de comodín por cada {C:attention}renovación{} en la tienda", + "{C:green}Siempre se activa{} si hay", + "{C:attention}#5#{} o más {C:attention}Comodines contentos{}", + "{C:red}Funciona una vez por ronda{}", + "{C:inactive}(Actual: {C:dark_edition}+#3#{}{C:inactive} y #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Bloques numerados", + text = { + "Gana {C:money}$#1#{} al final de la ronda", + "Aumenta el pago por {C:money}$#2#{}", + "por cada {C:attention}#3#{} en tu mano,", + "la categoría cambia cada ronda", + }, + }, + j_cry_nuts = { + name = "El loco", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Comodín loco", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_oil_lamp = { + name = "Lámpara de aceite", + text = { + "Al final de la ronda, aumenta los valores", + "del comodín del {C:attention}extremo derecho{} por {C:attention}x#1#{}", + }, + }, - j_cry_subtle = { - name = "Comodín sutil", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} fichas, {C:mult}+#1#{} multi,", - "{X:chips,C:white}X#2#{} fichas, {X:mult,C:white}X#2#{} multi", - "Gana {C:money}$#3#{} al", - "final de la ronda", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "Al final de la ronda, crea", - "una {C:attention}copia{} de una carta", - "aleatoria {C:attention}en tu mano{},", - "destruye las demás", - "{C:attention,s:0.8}Reyes{s:0.8} de {C:hearts,s:0.8}corazones{s:0.8} son priorizados", - }, - }, - j_cry_swarm = { - name = "El enjambre", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Catalizador de sincronización", - text = { - "Equilibra las {C:blue}fichas{} y el {C:red}multi{}", - "{C:inactive,s:0.8}¡Hey! ¡Yo he visto esto antes!", - }, - }, + j_cry_oldblueprint = { + name = "Plano viejo", + text = { + "Copia la habilidad del", + "{C:attention}comodín{} de la derecha", + "{C:green}#1# en #2#{} probabilidades", + "de que la carta se destruya", + "al final de la ronda", + }, + }, + j_cry_oldcandy = { + name = "Dulce nostálgico", + text = { + "Vende esta carta para ganar", + "{C:attention}+#1#{} tamaño de mano", + "de forma permanente", + }, + }, + j_cry_oldinvisible = { + name = "Comodín invisible nostálgico", + text = { + "{C:attention}Duplioca{} un {C:attention}comodín{}", + "aleatorio cada {C:attention}4", + "cartas de comodín vendidas", + "{s:0.8}Comodín invisible nostálgico excluido{}", + "{C:inactive}(Actual: #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panóptico", + text = { + "Todas las manos son consideradas la", + "{C:attention}última mano{} de cada ronda", -- +4 dabloons + }, + }, + j_cry_penetrating = { + name = "Comodín penetrante", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_pickle = { --holy shit dethklok reference + name = "Pepinillo", + text = { + "Al saltar una {C:attention}ciega{}, crea", + "{C:attention}#1#{} etiquetas, disminuye por", + "{C:red}#2#{} cuando se selecciona una {C:attention}ciega{}", + }, + }, + j_cry_pirate_dagger = { + name = "Daga de pirata", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la derecha", + "y agraga {C:attention}un cuarto{} del", + "valor de venta a {X:chips,C:white} Xfichas {}", + "{C:inactive}(Actual: {X:chips,C:white} X#1# {C:inactive} fichas)", + }, + }, + j_cry_pot_of_jokes = { + name = "Olla de las bromas", + text = { + "{C:attention}#1#{} tamaño de mano,", + "aumenta por", + "{C:blue}#2#{} cada runda", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", + "si todas las cartas en la mano jugada son", + "{C:attention}Ases{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, o {C:attention}7s{}", + "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "Este comodín gana", + "{X:mult,C:white} X#1# {} multi cuando una", + "carta de {C:cry_code}código{} se usa", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_queens_gambit = { + name = "Gambito de dama", + text = { + "Si {C:attention}la mano de póker{} es una", + "{C:attention}Escalera real{}, destruye la", + "{C:attention}reina{} puntuada y crea un", + "{C:attention}comodín{} {C:red}raro{} {C:dark_edition}negativo{}", + }, + }, + j_cry_quintet = { + name = "El quinteto", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Bloon rojo", + text = { + "Gana {C:money}$#1#{} en {C:attention}#2#{} ronda(s)", + "{C:red,E:2}se autodestruye{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} apuesta al gastar", + "{C:money}$#2#{} {C:inactive}($#3#){}", + "{s:0.8}Requisitos aumentan", + "{C:attention,s:0.8}exponencialmente{s:0.8} por cada uso", + "{C:money,s:0.8}Siguiente aumento: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "Cuando un {C:attention}comodín{} es vendido,", + "añade sus efectos a", + "todos los otros comodines", + "{C:inactive,s:0.8}No afecta a otros Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Carta de reversa", + text = { + "Rellena todos las ranuras de comodín vacías {C:inactive}(Max 100){}", + "con {C:attention}Comodines contentos{} {C:dark_edition}holográficos{} si", + "la {C:attention}mano de póker descartada{} es una {C:attention}#1#{}", + "{C:red,E:2}se autodestruye{}", + "{C:inactive,s:0.8}¡El regreso SUPREMO!{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Aleatoriza abilidades por cada {C:attention}apuesta{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrificio", + text = { + "Crea un comodín {C:green}inusual{}", + "y 3 {C:attention}Comodines contentos{} al", + "usar una carta {C:spectral}espectral{}", + "{C:red}Funciona una vez por ronda{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Brote", + text = { + "Después de puntuar {C:attention}#2#{} {C:inactive}[#1#]{} cartas", + "mejoradas, vende esta carta para", + "crear un {C:attention}comodín{} {C:cry_epic}épico{} ", + "{C:inactive,s:0.8}Creará un {C:attention,s:0.8}comodín{} {C:red,s:0.8}raro{} si los", + "{C:inactive,s:0.8}comodines {C:cry_epic,s:0.8}épicos{} {C:inactive,s:0.8}están desactivados{}", + }, + }, + j_cry_savvy = { + name = "Comodín inteligente", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Los {C:attention}comodines{} escalan", + "como un polinomio grado-{C:attention}#1#{},", + "aumenta el grado por {C:attention}#2#{}", + "al final de la ronda", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluido)", + }, + }, + j_cry_scrabble = { + name = "Teja de Scrabble", + text = { + "{C:green}#1# en #2#{} probabilidades de crear", + "un comodín {C:green}inusual{} {C:dark_edition}contento", + "al jugar una mano", + }, + }, + j_cry_seal_the_deal = { + name = "Sellar el acuerdo", + text = { + "Añade un {C:attention}sello al azar{} a cada carta", + "puntuada en la {C:attention}última mano{} de la ronda", + }, + }, + j_cry_shrewd = { + name = "Comodín perspicaz", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Comodín bobo", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Diminuto", + text = { + "Crea una {C:cry_jolly}Etiqueta MM", + "si la {C:attention}mano de póker{} jugada", + "es una {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so básicamente soy muy peque", + }, + }, + j_cry_soccer = { + name = "Uno para todos", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} ranura de comodín", + "{C:attention}+#1#{} ranura de paquete potenciador", + "{C:attention}+#1#{} tamaño de mano", + "{C:attention}+#1#{} ranura de consumible", + "{C:attention}+#1#{} ranura de carta en la tienda", + }, + }, + j_cry_spaceglobe = { + name = "Esfera celestial", + text = { + "Este comodín gana {X:chips,C:white}X#2#{} fichas", + "si la {C:attention}mano de póker{} es un(a) {C:attention}#3#{},", + "mano cambia después de aumentar{}", + "{C:inactive}(Actual:{} {X:chips,C:white}X#1#{} {C:inactive}fichas){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Crea una copia {C:dark_edition}negativa{}", + "de un {C:attention}comodín{} aleatorio", + "al final de la {C:attention}tienda", + "{C:inactive,s:0.8}No copia otros Speculo{}", + }, + }, + j_cry_spy = { + name = "Espía", + text = { + "{X:mult,C:white} X#2# {} multi, {C:dark_edition}+1{} ranura de {C:attention}comodín{}", + "{C:inactive}¡Ese #1# es un espía!", + }, + }, + j_cry_stardust = { + name = "Polvo de estrellas", + text = { + "Las cartas {C:dark_edition}policromas{}", + "otorgan {X:mult,C:white}X#1#{} multi", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "Este comodín destruye una", + "carta de {C:planet}planeta{} al azar", + "y gana {X:dark_edition,C:white} ^#1# {} multi", + "al final de la {C:attention}tienda{}", + "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", + }, + }, + j_cry_stronghold = { + name = "La fortaleza", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + + j_cry_subtle = { + name = "Comodín sutil", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} fichas, {C:mult}+#1#{} multi,", + "{X:chips,C:white}X#2#{} fichas, {X:mult,C:white}X#2#{} multi", + "Gana {C:money}$#3#{} al", + "final de la ronda", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "Al final de la ronda, crea", + "una {C:attention}copia{} de una carta", + "aleatoria {C:attention}en tu mano{},", + "destruye las demás", + "{C:attention,s:0.8}Reyes{s:0.8} de {C:hearts,s:0.8}corazones{s:0.8} son priorizados", + }, + }, + j_cry_swarm = { + name = "El enjambre", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Catalizador de sincronización", + text = { + "Equilibra las {C:blue}fichas{} y el {C:red}multi{}", + "{C:inactive,s:0.8}¡Hey! ¡Yo he visto esto antes!", + }, + }, j_cry_tax_fraud = { name = "Evasión fiscal", text = { @@ -1956,1899 +1957,1900 @@ return { "{C:attention}$#1#{} por cada comodín {C:attention}de alquiler", }, }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín{}", - "Gana {C:money}$#2#{} al final de la ronda", - }, - }, - j_cry_translucent = { - name = "Comodín translúcido", - text = { - "Vende esta carta para crear", - "una copia {C:attention}Banana Perecedera{}", - "de un {C:attention}comodín{} aleatorio", - "{s:0.8,C:inactive}(La copia evita compat. de perecedero)", - }, - }, - j_cry_treacherous = { - name = "Comodín traicionero", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_trick_or_treat = { - name = "Dulce o truco", - text = { - "Al {C:attention}venderse{}:", - "{C:green}#1# en #2#{} probabilidades de crear {C:attention}2{} {C:cry_candy}dulces", - "Si no, crea un comodín {X:cry_cursed,C:white}maldito{}", - "{C:inactive}(puede desbordarse)" - } - }, - j_cry_tricksy = { - name = "Comodín tramposo", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_triplet_rhythm = { - name = "Ritmo triple", - text = { - "{X:mult,C:white} X#1# {} multi si la mano", - "contiene {C:attention}exactamente{} tres {C:attention}3s", - }, - }, - j_cry_tropical_smoothie = { - name = "Zalamero tropical", - text = { - "Vende esta carta para", - "{C:attention}multiplicar{} los valores de los", - "comodines conseguidos por {C:attention}X1.5{}", - }, - }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín{}", + "Gana {C:money}$#2#{} al final de la ronda", + }, + }, + j_cry_translucent = { + name = "Comodín translúcido", + text = { + "Vende esta carta para crear", + "una copia {C:attention}Banana Perecedera{}", + "de un {C:attention}comodín{} aleatorio", + "{s:0.8,C:inactive}(La copia evita compat. de perecedero)", + }, + }, + j_cry_treacherous = { + name = "Comodín traicionero", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_trick_or_treat = { + name = "Dulce o truco", + text = { + "Al {C:attention}venderse{}:", + "{C:green}#1# en #2#{} probabilidades de crear {C:attention}2{} {C:cry_candy}dulces", + "Si no, crea un comodín {X:cry_cursed,C:white}maldito{}", + "{C:inactive}(puede desbordarse)", + }, + }, + j_cry_tricksy = { + name = "Comodín tramposo", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Ritmo triple", + text = { + "{X:mult,C:white} X#1# {} multi si la mano", + "contiene {C:attention}exactamente{} tres {C:attention}3s", + }, + }, + j_cry_tropical_smoothie = { + name = "Zalamero tropical", + text = { + "Vende esta carta para", + "{C:attention}multiplicar{} los valores de los", + "comodines conseguidos por {C:attention}X1.5{}", + }, + }, - j_cry_unity = { - name = "La unidad", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_universe = { - name = "Universo", - text = { - "Las cartas {C:dark_edition}astrales{}", - "otorgan {X:dark_edition,C:white}^#1#{} multi", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "Las {C:attention}manos de póker{} ganan", - "{X:red,C:white} X#1# {} multi y {X:blue,C:white} X#1# {} fichas", - "al subir de nivel", - }, - }, - j_cry_unjust_dagger = { - name = "Daga injusta", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la izquierda", - "y agraga {C:attention}un quinto{} del", - "valor de venta a {X:mult,C:white} Xmulti {}", - "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "Cuando cualquier probabilidad", - "es activada {C:green}con éxito{},", - "este comodín gana {X:red,C:white}Xmulti{}", - "igual a sus {C:attention}probabilidades{} listadas", - "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "Este comodín gana {C:money}$#1#{} de {C:attention}valor de venta{}", - "si la {C:attention}mano de póker{} contiene una {C:attention}#2#{}", - "Vende esta carta para crear un", - "{C:attention}comodín contento{} {C:dark_edition}policroma{} por", - "cada {C:money}$4{} de {C:attention}valor de venta{} {C:inactive}(min. 1){}", - }, - }, - j_cry_wacky = { - name = "Comodín chalado", --too many freaking name collisions - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "Todos los comodines otorgan", - "{X:mult,C:white} X#1# {} multi", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "Todos los comodines otorgan", - "{C:money}$#1#{} al activarse", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "Este comodín gana", - "{C:mult}+#2#{} multi cuando cada", - "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, o {C:attention}8{}", - "jugado puntúa", - "{C:inactive}(Actual: {C:mult}+#1#{C:inactive} multi)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Reactica cada {C:attention}2{} jugado", --wee gaming - "{C:attention:}#1#{} veces adicionales", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", --wee gaming :) - }, - }, - j_cry_wheelhope = { - name = "La rueda de la esperanza", - text = { - "Este comodín gana", - "{X:mult,C:white} X#1# {} multi al fallar", - "una {C:attention}Rueda de la fortuna{}", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_whip = { - name = "El LÁTIGO", - text = { - "Este comodín gana {X:mult,C:white}X#1#{} multi", - "si la {C:attention}mano jugada{} contiene un", - "{C:attention}2{} y {C:attention}7{} de diferentes palos", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_wrapped = { - name = "Dulce envuelto", - text = { - "Crea un {C:attention}comodín de comida{}", - "en {C:attention}#1#{} ronda(s)", - "{C:red,E:2}se autodestruye{}", - }, - }, - j_cry_wtf = { - name = "¿¡Qué rayos?!", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_Kaikki = { - name = "Kaikki", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Estrella de neutrones", - text = { - "Mejora una mano de póker", - "al azar por", - "{C:attention}1{} nivel por cada", - "{C:attention}estrella de neutrones{} usada", - "en esta partida", - "{C:inactive}(Actual:{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planeta.lua", - text = { - "{C:green}#1# en #2#{} probabilidades para", - "aumentar todas las", - "{C:legendary,E:1}manos de póker{}", - "por {C:attention}1{} nivel", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "Manga CCD", - text = { - "Todas las cartas también son", - "un consumible {C:attention}aleatorio{}", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Manga transportadora", - text = { - "Los comodines {C:attention}no{} se pueden mover", - "Al principio de la runda,", - "{C:attention}duplica{} el comodín del extremo derecho", - "y {C:attention}destruye{} el comodín del extremo izquierdo", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Manga crítica", - text = { - "Después de cada mano jugada,", - "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", - "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Manga codificada", - text = { - "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", - "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", - "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Manga balanceada", - text = { - "Todas las cartas tienen la ", - "{C:attention}misma probabilidad{} de", - "aparecer en las tiendas,", - "comienza la partida con", - "{C:attention,T:v_overstock_plus}+2 ranuras de carta", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Baraja infinita", - text = { - "Puedes seleccionar {C:attention}cualquier", - "cantidad de cartas", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Manga de errata", - text = { - "Los valures de cartas", - "se {C:attention}aleatorizan", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Manga redimida", - text = { - "Cuando se compra un {C:attention}vale{},", - "obtén sus {C:attention}niveles extras", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Manga de agujero de gusano", - text = { - "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", - "Los comodines son {C:attention}20X{} más", - "probables de ser {C:dark_edition}Negativos", - "{C:attention}-2{} ranuras de comodín", - }, - }, + j_cry_unity = { + name = "La unidad", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_universe = { + name = "Universo", + text = { + "Las cartas {C:dark_edition}astrales{}", + "otorgan {X:dark_edition,C:white}^#1#{} multi", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "Las {C:attention}manos de póker{} ganan", + "{X:red,C:white} X#1# {} multi y {X:blue,C:white} X#1# {} fichas", + "al subir de nivel", + }, + }, + j_cry_unjust_dagger = { + name = "Daga injusta", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la izquierda", + "y agraga {C:attention}un quinto{} del", + "valor de venta a {X:mult,C:white} Xmulti {}", + "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "Cuando cualquier probabilidad", + "es activada {C:green}con éxito{},", + "este comodín gana {X:red,C:white}Xmulti{}", + "igual a sus {C:attention}probabilidades{} listadas", + "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "Este comodín gana {C:money}$#1#{} de {C:attention}valor de venta{}", + "si la {C:attention}mano de póker{} contiene una {C:attention}#2#{}", + "Vende esta carta para crear un", + "{C:attention}comodín contento{} {C:dark_edition}policroma{} por", + "cada {C:money}$4{} de {C:attention}valor de venta{} {C:inactive}(min. 1){}", + }, + }, + j_cry_wacky = { + name = "Comodín chalado", --too many freaking name collisions + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "Todos los comodines otorgan", + "{X:mult,C:white} X#1# {} multi", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "Todos los comodines otorgan", + "{C:money}$#1#{} al activarse", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "Este comodín gana", + "{C:mult}+#2#{} multi cuando cada", + "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, o {C:attention}8{}", + "jugado puntúa", + "{C:inactive}(Actual: {C:mult}+#1#{C:inactive} multi)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Reactica cada {C:attention}2{} jugado", --wee gaming + "{C:attention:}#1#{} veces adicionales", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", --wee gaming :) + }, + }, + j_cry_wheelhope = { + name = "La rueda de la esperanza", + text = { + "Este comodín gana", + "{X:mult,C:white} X#1# {} multi al fallar", + "una {C:attention}Rueda de la fortuna{}", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_whip = { + name = "El LÁTIGO", + text = { + "Este comodín gana {X:mult,C:white}X#1#{} multi", + "si la {C:attention}mano jugada{} contiene un", + "{C:attention}2{} y {C:attention}7{} de diferentes palos", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_wrapped = { + name = "Dulce envuelto", + text = { + "Crea un {C:attention}comodín de comida{}", + "en {C:attention}#1#{} ronda(s)", + "{C:red,E:2}se autodestruye{}", + }, + }, + j_cry_wtf = { + name = "¿¡Qué rayos?!", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_Kaikki = { + name = "Kaikki", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Estrella de neutrones", + text = { + "Mejora una mano de póker", + "al azar por", + "{C:attention}1{} nivel por cada", + "{C:attention}estrella de neutrones{} usada", + "en esta partida", + "{C:inactive}(Actual:{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planeta.lua", + text = { + "{C:green}#1# en #2#{} probabilidades para", + "aumentar todas las", + "{C:legendary,E:1}manos de póker{}", + "por {C:attention}1{} nivel", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "Manga CCD", + text = { + "Todas las cartas también son", + "un consumible {C:attention}aleatorio{}", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Manga transportadora", + text = { + "Los comodines {C:attention}no{} se pueden mover", + "Al principio de la runda,", + "{C:attention}duplica{} el comodín del extremo derecho", + "y {C:attention}destruye{} el comodín del extremo izquierdo", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Manga crítica", + text = { + "Después de cada mano jugada,", + "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", + "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Manga codificada", + text = { + "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", + "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", + "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Manga balanceada", + text = { + "Todas las cartas tienen la ", + "{C:attention}misma probabilidad{} de", + "aparecer en las tiendas,", + "comienza la partida con", + "{C:attention,T:v_overstock_plus}+2 ranuras de carta", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Baraja infinita", + text = { + "Puedes seleccionar {C:attention}cualquier", + "cantidad de cartas", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Manga de errata", + text = { + "Los valures de cartas", + "se {C:attention}aleatorizan", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Manga redimida", + text = { + "Cuando se compra un {C:attention}vale{},", + "obtén sus {C:attention}niveles extras", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Manga de agujero de gusano", + text = { + "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", + "Los comodines son {C:attention}20X{} más", + "probables de ser {C:dark_edition}Negativos", + "{C:attention}-2{} ranuras de comodín", + }, + }, sleeve_cry_legendary_sleeve = { - name = "Manga legendaria<", - text = { - "Comienza con un comodín {C:legendary}legendario{C:legendary}", - "{C:green}1 en 5{} probabilidades para crear otro", + name = "Manga legendaria<", + text = { + "Comienza con un comodín {C:legendary}legendario{C:legendary}", + "{C:green}1 en 5{} probabilidades para crear otro", "cuando se derrota a la ciega jefe", - "{C:inactive}(debe haber espacio){}", - }, - }, - }, - Spectral = { - c_cry_adversary = { - name = "Adversario", - text = { - "{C:red}Todos{} tus {C:attention}comodines{} se vuelven {C:dark_edition}negativos{},", - "{C:red}todos{} los {C:attention}comodines{} en la tienda cuestan", - "el {C:red}doble{} por el resto de la partida", - }, - }, - c_cry_analog = { - name = "Análogo", - text = { - "Crea {C:attention}#1#{} copias de un", - "{C:attention}comodín{} aleatorio, destruye", - "los demás, {C:attention}+#2#{} apuesta", - }, - }, - c_cry_chambered = { - name = "Recámara", - text = { - "Crea {C:attention}#1#{} copias", - "{C:dark_edition}negativas{} de un", - "consumible {C:attention}al azar{}", - "{C:inactive,s:0.8}No copia otros __{}" - }, - }, - c_cry_conduit = { - name = "Conducto", - text = { - "Intercambia las {C:attention}ediciones{} de", - "{C:attention}2{} cartas o {C:attention}comodines{} seleccionados", - }, - }, + "{C:inactive}(debe haber espacio){}", + }, + }, + }, + Spectral = { + c_cry_adversary = { + name = "Adversario", + text = { + "{C:red}Todos{} tus {C:attention}comodines{} se vuelven {C:dark_edition}negativos{},", + "{C:red}todos{} los {C:attention}comodines{} en la tienda cuestan", + "el {C:red}doble{} por el resto de la partida", + }, + }, + c_cry_analog = { + name = "Análogo", + text = { + "Crea {C:attention}#1#{} copias de un", + "{C:attention}comodín{} aleatorio, destruye", + "los demás, {C:attention}+#2#{} apuesta", + }, + }, + c_cry_chambered = { + name = "Recámara", + text = { + "Crea {C:attention}#1#{} copias", + "{C:dark_edition}negativas{} de un", + "consumible {C:attention}al azar{}", + "{C:inactive,s:0.8}No copia otros __{}", + }, + }, + c_cry_conduit = { + name = "Conducto", + text = { + "Intercambia las {C:attention}ediciones{} de", + "{C:attention}2{} cartas o {C:attention}comodines{} seleccionados", + }, + }, - c_cry_gateway = { - name = "Portal", - text = { - "Crea un {C:attention}comodín", - "{C:cry_exotic,E:1}exótico{}, destruye", - "los demás", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Aplica {C:attention}consumibles{} aleatorios", - "como si fueran {C:dark_edition}mejoras{}", - "a las cartas en la mano", - }, - }, - c_cry_lock = { - name = "Cerradura", - text = { - "Remueve {C:red}todas{} las pegatinas", - "de {C:red}todos{} los comodines,", - "y aplica {C:purple,E:1}Eterno{}", - "a un {C:attention}comodín{} aleatorio", - }, - }, - c_cry_pointer = { - name = "PUNTERO://", - text = { - "Crea una carta", - "de {C:cry_code}tu elección", - "{C:inactive,s:0.8}(Comodines exóticos #1#excluidos)", - }, - }, - c_cry_replica = { - name = "Réplica", - text = { - "Convierte todas las cartas", - "en tu mano", - "a una carta {C:attention}aleatoria{}", - "en tu mano", - }, - }, - c_cry_ritual = { - name = "Ritual", - text = { - "Aplica {C:dark_edition}Negativo{}, {C:dark_edition}Mosaico{},", - "o {C:dark_edition}Astral{} a {C:attention}#1#{}", - "carta de tu mano seleccionada", - }, - }, - c_cry_source = { - name = "Origen", - text = { - "Agrega un {C:cry_code}sello verde{}", - "a {C:attention}1{} carta seleccionada", - "de tu mano al azar", - }, - }, - c_cry_summoning = { - name = "Evocación", - text = { - "Crea un {C:joker}comodín{}", - "{C:cry_epic}épico{} aleatorio, destruye", - "un {C:joker}comodín{} al azar", - }, - }, - c_cry_trade = { - name = "Intercambio", - text = { - "{C:attention}Pierde{} un vale aleatorio,", - "gana {C:attention}2{} vales aleatorios", - }, - }, - c_cry_typhoon = { - name = "Tifón", - text = { - "Agrega un {C:cry_azure}sello azur{}", - "a {C:attention}1{} carta seleccionada", - "de tu mano al azar", - }, - }, - c_cry_vacuum = { - name = "Vacío", - text = { - "Remueve {C:red}todas{} las {C:green}modificaciones{}", - "de {C:red}todas{} las cartas en tu mano,", - "gana {C:money}$#1#{} por cada {C:green}modificación{} removida", - "{C:inactive,s:0.7}(ej. mejoras, sellos, ediciones)", - }, - }, - c_cry_white_hole = { - name = "Agujero blanco", - text = { - "{C:attention}Remueve{} todos los niveles de mano,", - "mejora la mano de póker {C:legendary,E:1}más jugada{}", - "por {C:attention}3{} por cada nivel removido", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pozo rosa", - colour = "Rosa", --this is used for auto-generated sticker localization - text = { - "Escalas de puntos requeridas más rápidas", - "para cada {C:attention}apuesta inicial", - }, - }, - stake_cry_brown = { - name = "Pozo marrón", - colour = "Marrón", - text = { - "Todas las {C:attention}pegatinas{} son", - "compatibles entre sí", - }, - }, - stake_cry_yellow = { - name = "Pozo amarillo", - colour = "Amarillo", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Pozo jade", - colour = "Jade", - text = { - "Las cartas pueden sacarse {C:attention}boca abajo{}", - }, - }, - stake_cry_cyan = { - name = "Pozo celeste", - colour = "Celeste", - text = { - "Comodines {C:green}inusuales{} y {C:red}raros{} son", - "menos probables de aparecer", - }, - }, - stake_cry_gray = { - name = "Pozo gris", - colour = "Gris", - text = { - "Las renovaciones aumentan por {C:attention}$2{} cada una", - }, - }, - stake_cry_crimson = { - name = "Pozo carmesí", - colour = "Carmesí", - text = { - "Los vales reaparecen en apuestas {C:attention}pares{}", - }, - }, - stake_cry_diamond = { - name = "Pozo diamante", - colour = "Diamante", - text = { - "Debes vencer la apuesta {C:attention}10{} para ganar", - }, - }, - stake_cry_amber = { - name = "Pozo ámbar", - colour = "Ámbar", - text = { - "{C:attention}-1{} ranuras de paquete potenciador", - }, - }, - stake_cry_bronze = { - name = "Pozo bronce", - colour = "Bronce", - text = { - "Los vales son {C:attention}50%{} más caros", - }, - }, - stake_cry_quartz = { - name = "Pozo cuarzo", - colour = "Cuarzo", - text = { - "Los comodines pueden ser {C:attention}Fijados{}", - "{s:0.8,C:inactive}(Se queda fijado al extremo izquierdo){}", - }, - }, - stake_cry_ruby = { - name = "Pozo rubí", - colour = "Rubí", - text = { - "Ciegas {C:attention}grandes{} pueden ser", - "ciegas {C:attention}jefes{}", - }, - }, - stake_cry_glass = { - name = "Pozo de vidrio", - colour = "Vidrio", - text = { - "Las cartas pueden {C:attention}destruirse{} al puntuar", - }, - }, - stake_cry_sapphire = { - name = "Pozo safiro", - colour = "Safiro", - text = { - "Pierde {C:attention}25%{} del dinero actual", - "al final de la apuesta", - "{s:0.8,C:inactive}(máx. $10){}", - }, - }, - stake_cry_emerald = { - name = "Pozo esmeralda", - colour = "Esmeralda", - text = { - "Cartas, paquetes y vales", - "pueden estar {C:attention}boca abajo{}", - "{s:0.8,C:inactive}(No se pueden ver hasta ser comprados){}", - }, - }, - stake_cry_platinum = { - name = "Pozo platino", - colour = "Platino", - text = { - "Las ciegas pequeñas son {C:attention}removidas{}", - }, - }, - stake_cry_twilight = { - name = "Pozo crepúsculo", - colour = "Crepúsculo", - text = { - "Las cartas pueden ser {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 en 10 probabilidades de ser destruidas cada ronda){}", - }, - }, - stake_cry_verdant = { - name = "Pozo verdoso", - colour = "Verdoso", - text = { - "Escalas de puntos requeridas más rápidas", - "para cada {C:attention}apuesta inicial", - }, - }, - stake_cry_ember = { - name = "Pozo ascua", - colour = "Ascua", - text = { - "Todos los objetos no entregan dinero al venderse", - }, - }, - stake_cry_dawn = { - name = "Pozo alba", - colour = "Alba", - text = { - "Cartas tarot y espectrales seleccionan {C:attention}1", - "carta menos", - "{s:0.8,C:inactive}(mín. 1){}", - }, - }, - stake_cry_horizon = { - name = "Pozo del horizonte", - colour = "Horizonte", - text = { - "Agrega una {C:attention}carta al azar{}", - "a tu baraja al", - "seleccionar una {C:attention}ciega{}", - }, - }, - stake_cry_blossom = { - name = "Pozo florido", - colour = "Florido", - text = { - "Las ciegas {C:attention}finales{} pueden aparecer", - "en {C:attention}cualquier{} apuesta", - }, - }, - stake_cry_azure = { - name = "Pozo azur", - colour = "Azur", - text = { - "Los valores en comodines se reducen", - "por {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Pozo ascendente", - colour = "Ascendente", - text = { - "{C:attention}-1{} ranura de carta en la tienda", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Etiqueta astral", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Etiqueta banana", - text = { - "Crea {C:attention}#1#", - "{C:inactive}(Debe haber espacio){}", - }, - }, - tag_cry_bettertop_up = { - name = "Mejor etiqueta de recarga", - text = { - "Genera hasta {C:attention}#1#", - "comodines {C:green}inusuales{}", - "{C:inactive}(Debe haber espacio)", - }, - }, - tag_cry_better_voucher = { - name = "Etiqueta de vale dorado", - text = { - "Agrega un {C:voucher}vale{} de nivel {C:attention}#1#{}", - "en la siguiente tienda", - }, - }, - tag_cry_blur = { - name = "Etiqueta borrosa", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Borroso{}", - }, - }, - tag_cry_booster = { - name = "Etiqueta potenciadora", - text = { - "El siguiente {C:cry_code}paquete potenciador{} contiene", - "el {C:attention}doble{} de cartas y", - "el {C:attention}doble{} de opciones", - }, - }, - tag_cry_bundle = { - name = "Etiqueta de manojo", - text = { - "Crea una {C:attention}Etiqueta estándar{}, {C:tarot}Etiqueta encantada{},", - "{C:attention}Etiqueta de bufón{}, y {C:planet}Etiqueta de meteoro", - }, - }, - tag_cry_cat = { - name = "Etiqueta de gato", - text = { "miau :3", "{C:inactive}Nivel {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Etiqueta de consola", - text = { - "Otorga gratis un", - "{C:cry_code}paquete de programa", - }, - }, - tag_cry_double_m = { - name = "Etiqueta MM", - text = { - "En la tienda hay", - "un {C:legendary}comodín M{} {C:dark_edition}contento", - }, - }, - tag_cry_empowered = { - name = "Etiqueta empoderada", - text = { - "Otorga un {C:spectral}paquete espectral gratis", - "con {C:legendary,E:1}El alma{} y {C:cry_exotic,E:1}Portal{}", - }, - }, - tag_cry_epic = { - name = "Etiqueta épica", - text = { - "En la tienda hay un {C:cry_epic}comodín épico{}", - "a mitad de precio", - }, - }, - tag_cry_gambler = { - name = "Etiqueta del jugador", - text = { - "{C:green}#1# en #2#{} probabilidades de crear", - "una {C:cry_exotic,E:1}Etiqueta empoderada", - }, - }, - tag_cry_glass = { - name = "Etiqueta frágil", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Frágil{}", - }, - }, - tag_cry_glitched = { - name = "Etiqueta errónea", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Erróneo{}", - }, - }, - tag_cry_gold = { - name = "Etiqueta dorada", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Dorado{}", - }, - }, - tag_cry_gourmand = { - name = "Etiqueta gourmand", - text = { - "En la tienda hay un", - "{C:attention}comodín de comida{} gratis", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Otorga gratis", - "un {C:cry_ascendant}Paquete meme", - }, - }, - tag_cry_m = { - name = "Etiqueta contenta", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Contento{}", - }, - }, - tag_cry_memory = { - name = "Etiqueta de memoria", - text = { - "Crea {C:attention}#1#{} copias de", - "la última {C:attention}etiqueta{} usada", - "durante esta partida", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - "{s:0.8,C:inactive}Actual: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Etiqueta mosaico", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Mosaico{}", - }, - }, - tag_cry_oversat = { - name = "Etiqueta sobresaturada", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Sobresaturado{}", - }, - }, - tag_cry_quadruple = { - name = "Etiqueta cuádruple", - text = { - "Otorga {C:attention}#1#{} copias de la", - "siguiente {C:attention}Tag{} seleccionada", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - }, - }, - tag_cry_quintuple = { - name = "Etiqueta quíntuple", - text = { - "Otorga {C:attention}#1#{} copias de la", - "siguiente {C:attention}Tag{} seleccionada", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - }, - }, - tag_cry_rework = { - name = "Etiqueta de retrabajo", - text = { - "La tienda tiene un", - "{C:cry_code}#2#{} {C:dark_edition}#1#", - }, - }, - tag_cry_schematic = { - name = "Etiqueta de esquemáticas", - text = { - "La tienda tiene una", - "{C:attention}Lluvia de ideas", - }, - }, - tag_cry_scope = { - name = "Etiqueta de alcance", - text = { - "{C:attention}+#1# {C:blue}manos{} y {C:red}descartes{}", - "en la siguiente ronda", - }, - }, - tag_cry_triple = { - name = "Etiqueta triple", - text = { - "Otorga {C:attention}#1#{} copias de la", - "siguiente {C:attention}Tag{} seleccionada", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "El autómata", - text = { - "Genera hasta {C:attention}#1#", - "cartas de {C:cry_code}código{} al azar", - "{C:inactive}(Debe haber espacio)", - }, - }, - c_cry_eclipse = { - name = "El eclipse", - text = { - "Mejora {C:attention}#1#{} carta", - "seleccionada a", - "una {C:attention}Carta de eco", - }, - }, - c_cry_meld = { - name = "Fusionar", - text = { - "Selecciona un {C:attention}comodín{} o", - "{C:attention}carta de juego{} para", - "hacerla {C:dark_edition}Doble cara", - }, - }, - c_cry_theblessing = { - name = "La bendición", - text = { - "Crea {C:attention}1{}", - "{C:attention}consumible{} aleatorio", - "{C:inactive}(Debe haber espacio){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglífico", - text = { - "Establece la apuesta a {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Lienzo en blanco", - text = { - "{C:attention}+#1#{} tamaño de mano", - }, - }, - v_cry_clone_machine = { - name = "Máquina de clonar", - text = { - "Las etiqueta dobles se vuelven", - "{C:attention}Etiquetas quíntuples{} y", - "son {C:attention}4X{} más comunes", - }, - }, - v_cry_command_prompt = { - name = "Símbolo del sistema", - text = { - "Las cartas de {C:cry_code}código{}", - "pueden aparecer", - "en la {C:attention}tienda{}", - }, - }, - v_cry_copies = { - name = "Copias", - text = { - "Las etiqueta dobles se vuelven", - "{C:attention}Etiquetas triples{} y son", - "son {C:attention}2X{} más comunes", - }, - }, - v_cry_curate = { - name = "Cura", - text = { - "Todas las cartas", - "aparecen con", - "una {C:dark_edition}edición{}", - }, - }, - v_cry_dexterity = { - name = "Destreza", - text = { - "Gana para siempre", - "{C:blue}+#1#{} mano(s)", - "por ronda", - }, - }, - v_cry_double_down = { - name = "Doble de apuesta", - text = { - "Después de cada ronda,", - "{X:dark_edition,C:white} X1.5 {} a todos los valores", - "en la parte trasera de las", - "cartas {C:dark_edition}doble cara{}" - }, - }, - v_cry_double_slit = { - name = "Abertura doble", - text = { - "{C:attention}Fusionar{} puede aparecer", - "en la tienda y", - "paquetes arcanos", - }, - }, - v_cry_double_vision = { - name = "Doble visión", - text = { - "Cartas {C:dark_edition}doble cara{} aparecen", - "{C:attention}4X{} más frecuentemente", - }, - }, - v_cry_fabric = { - name = "Fábrica universal", - text = { - "{C:dark_edition}+#1#{} ranura(s) de comodín", - }, - }, - v_cry_massproduct = { - name = "Producción en masa", - text = { - "Todas las cartas y paquetes", - "en la tienca cuestan {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Aumenta el límite", - "del interés obtenido en cada ronda", - "hasta {C:money}#1#${}", - }, - }, - v_cry_overstock_multi = { - name = "Multicapital", - text = { - "{C:attention}+#1#{} ranura(s) de carta y", - "{C:attention}+#1#{} ranura(s) de paquetes potenciadores", - "disponibles en la tienda", - }, - }, - v_cry_pacclimator = { - name = "Aclamador de planetas", - text = { - "Las cartas de {C:planet}planeta{} aparecen", - "{C:attention}#1# X{} veces más seguido", - "en la tienda", - "Todas las cartas de {C:planet}planeta{}", - "futuras son {C:green}gratis{}", - }, - }, - v_cry_pairamount_plus = { - name = "Parejamiento plus", --this is the best translation you get - text = { - "{C:attention}Reactiva{} todos los comodines M", - "ona vez por cada Pareja", - "{C:attention}contenida{} en la mano jugada", - }, - }, - v_cry_pairing = { - name = "Parejamiento", - text = { - "{C:attention}Reactiva{} todos los comodines M", - "si la mano jugada es una {C:attention}Pareja", - }, - }, - v_cry_quantum_computing = { - name = "Computación cuántica", - text = { - "Las cartas de {C:cry_code}código{} pueden aparecer", - "con edición {C:dark_edition}negativa{}", - }, - }, - v_cry_repair_man = { - name = "Reparejador", --ditto - text = { - "{C:attention}Reactiva{} todos los comodines M", - "si la mano jugada contiene una {C:attention}Pareja", - }, - }, - v_cry_rerollexchange = { - name = "Intercambio de renovaciones", - text = { - "Todas las renovaciones", - "cuestan {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Enlace satelital", - text = { - "Las cartas de {C:cry_code}código{} pueden", - "aparecer en cualquier", - "{C:attention}paquete celestial", - }, - }, - v_cry_scope = { - name = "Alcance galáctico", - text = { - "Crea la carta de {C:planet}planeta", - "por la {C:attention}mano de póker{} jugada", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Aclamador de tarot", - text = { - "Las cartas de {C:tarot}tarot{} aparecen", - "{C:attention}#1# X{} veces más seguido", - "en la tienda", - "Todas las cartas de {C:tarot}tarot{}", - "futuras son {C:green}gratis{}", - }, - }, - v_cry_tag_printer = { - name = "Impresor de etiquetas", - text = { - "Las etiqueta dobles se vuelven", - "{C:attention}Etiquetas cuadrúples{} y son", - "son {C:attention}3X{} más comunes", - }, - }, - v_cry_threers = { - name = "Las 3 Rs", - text={ - "Consigue {C:red}+#1#{}", - "descartes en cada ronda", - "de forma permanente", - }, - }, - v_cry_stickyhand = { - name = "Mano pegajosa", - text = { - "{C:attention}+#1#{} límite de", - "selección de cartas", - }, - }, - v_cry_grapplinghook = { - name = "Gancho de agarre", - text = { - "{C:attention}+#1#{} límite de", - "selección de cartas", - "{C:inactive,s:0.7}Puedes hacer mucho más con esto de lo que tú crees.{}", + c_cry_gateway = { + name = "Portal", + text = { + "Crea un {C:attention}comodín", + "{C:cry_exotic,E:1}exótico{}, destruye", + "los demás", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Aplica {C:attention}consumibles{} aleatorios", + "como si fueran {C:dark_edition}mejoras{}", + "a las cartas en la mano", + }, + }, + c_cry_lock = { + name = "Cerradura", + text = { + "Remueve {C:red}todas{} las pegatinas", + "de {C:red}todos{} los comodines,", + "y aplica {C:purple,E:1}Eterno{}", + "a un {C:attention}comodín{} aleatorio", + }, + }, + c_cry_pointer = { + name = "PUNTERO://", + text = { + "Crea una carta", + "de {C:cry_code}tu elección", + "{C:inactive,s:0.8}(Comodines exóticos #1#excluidos)", + }, + }, + c_cry_replica = { + name = "Réplica", + text = { + "Convierte todas las cartas", + "en tu mano", + "a una carta {C:attention}aleatoria{}", + "en tu mano", + }, + }, + c_cry_ritual = { + name = "Ritual", + text = { + "Aplica {C:dark_edition}Negativo{}, {C:dark_edition}Mosaico{},", + "o {C:dark_edition}Astral{} a {C:attention}#1#{}", + "carta de tu mano seleccionada", + }, + }, + c_cry_source = { + name = "Origen", + text = { + "Agrega un {C:cry_code}sello verde{}", + "a {C:attention}1{} carta seleccionada", + "de tu mano al azar", + }, + }, + c_cry_summoning = { + name = "Evocación", + text = { + "Crea un {C:joker}comodín{}", + "{C:cry_epic}épico{} aleatorio, destruye", + "un {C:joker}comodín{} al azar", + }, + }, + c_cry_trade = { + name = "Intercambio", + text = { + "{C:attention}Pierde{} un vale aleatorio,", + "gana {C:attention}2{} vales aleatorios", + }, + }, + c_cry_typhoon = { + name = "Tifón", + text = { + "Agrega un {C:cry_azure}sello azur{}", + "a {C:attention}1{} carta seleccionada", + "de tu mano al azar", + }, + }, + c_cry_vacuum = { + name = "Vacío", + text = { + "Remueve {C:red}todas{} las {C:green}modificaciones{}", + "de {C:red}todas{} las cartas en tu mano,", + "gana {C:money}$#1#{} por cada {C:green}modificación{} removida", + "{C:inactive,s:0.7}(ej. mejoras, sellos, ediciones)", + }, + }, + c_cry_white_hole = { + name = "Agujero blanco", + text = { + "{C:attention}Remueve{} todos los niveles de mano,", + "mejora la mano de póker {C:legendary,E:1}más jugada{}", + "por {C:attention}3{} por cada nivel removido", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pozo rosa", + colour = "Rosa", --this is used for auto-generated sticker localization + text = { + "Escalas de puntos requeridas más rápidas", + "para cada {C:attention}apuesta inicial", + }, + }, + stake_cry_brown = { + name = "Pozo marrón", + colour = "Marrón", + text = { + "Todas las {C:attention}pegatinas{} son", + "compatibles entre sí", + }, + }, + stake_cry_yellow = { + name = "Pozo amarillo", + colour = "Amarillo", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Pozo jade", + colour = "Jade", + text = { + "Las cartas pueden sacarse {C:attention}boca abajo{}", + }, + }, + stake_cry_cyan = { + name = "Pozo celeste", + colour = "Celeste", + text = { + "Comodines {C:green}inusuales{} y {C:red}raros{} son", + "menos probables de aparecer", + }, + }, + stake_cry_gray = { + name = "Pozo gris", + colour = "Gris", + text = { + "Las renovaciones aumentan por {C:attention}$2{} cada una", + }, + }, + stake_cry_crimson = { + name = "Pozo carmesí", + colour = "Carmesí", + text = { + "Los vales reaparecen en apuestas {C:attention}pares{}", + }, + }, + stake_cry_diamond = { + name = "Pozo diamante", + colour = "Diamante", + text = { + "Debes vencer la apuesta {C:attention}10{} para ganar", + }, + }, + stake_cry_amber = { + name = "Pozo ámbar", + colour = "Ámbar", + text = { + "{C:attention}-1{} ranuras de paquete potenciador", + }, + }, + stake_cry_bronze = { + name = "Pozo bronce", + colour = "Bronce", + text = { + "Los vales son {C:attention}50%{} más caros", + }, + }, + stake_cry_quartz = { + name = "Pozo cuarzo", + colour = "Cuarzo", + text = { + "Los comodines pueden ser {C:attention}Fijados{}", + "{s:0.8,C:inactive}(Se queda fijado al extremo izquierdo){}", + }, + }, + stake_cry_ruby = { + name = "Pozo rubí", + colour = "Rubí", + text = { + "Ciegas {C:attention}grandes{} pueden ser", + "ciegas {C:attention}jefes{}", + }, + }, + stake_cry_glass = { + name = "Pozo de vidrio", + colour = "Vidrio", + text = { + "Las cartas pueden {C:attention}destruirse{} al puntuar", + }, + }, + stake_cry_sapphire = { + name = "Pozo safiro", + colour = "Safiro", + text = { + "Pierde {C:attention}25%{} del dinero actual", + "al final de la apuesta", + "{s:0.8,C:inactive}(máx. $10){}", + }, + }, + stake_cry_emerald = { + name = "Pozo esmeralda", + colour = "Esmeralda", + text = { + "Cartas, paquetes y vales", + "pueden estar {C:attention}boca abajo{}", + "{s:0.8,C:inactive}(No se pueden ver hasta ser comprados){}", + }, + }, + stake_cry_platinum = { + name = "Pozo platino", + colour = "Platino", + text = { + "Las ciegas pequeñas son {C:attention}removidas{}", + }, + }, + stake_cry_twilight = { + name = "Pozo crepúsculo", + colour = "Crepúsculo", + text = { + "Las cartas pueden ser {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 en 10 probabilidades de ser destruidas cada ronda){}", + }, + }, + stake_cry_verdant = { + name = "Pozo verdoso", + colour = "Verdoso", + text = { + "Escalas de puntos requeridas más rápidas", + "para cada {C:attention}apuesta inicial", + }, + }, + stake_cry_ember = { + name = "Pozo ascua", + colour = "Ascua", + text = { + "Todos los objetos no entregan dinero al venderse", + }, + }, + stake_cry_dawn = { + name = "Pozo alba", + colour = "Alba", + text = { + "Cartas tarot y espectrales seleccionan {C:attention}1", + "carta menos", + "{s:0.8,C:inactive}(mín. 1){}", + }, + }, + stake_cry_horizon = { + name = "Pozo del horizonte", + colour = "Horizonte", + text = { + "Agrega una {C:attention}carta al azar{}", + "a tu baraja al", + "seleccionar una {C:attention}ciega{}", + }, + }, + stake_cry_blossom = { + name = "Pozo florido", + colour = "Florido", + text = { + "Las ciegas {C:attention}finales{} pueden aparecer", + "en {C:attention}cualquier{} apuesta", + }, + }, + stake_cry_azure = { + name = "Pozo azur", + colour = "Azur", + text = { + "Los valores en comodines se reducen", + "por {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Pozo ascendente", + colour = "Ascendente", + text = { + "{C:attention}-1{} ranura de carta en la tienda", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Etiqueta astral", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Etiqueta banana", + text = { + "Crea {C:attention}#1#", + "{C:inactive}(Debe haber espacio){}", + }, + }, + tag_cry_bettertop_up = { + name = "Mejor etiqueta de recarga", + text = { + "Genera hasta {C:attention}#1#", + "comodines {C:green}inusuales{}", + "{C:inactive}(Debe haber espacio)", + }, + }, + tag_cry_better_voucher = { + name = "Etiqueta de vale dorado", + text = { + "Agrega un {C:voucher}vale{} de nivel {C:attention}#1#{}", + "en la siguiente tienda", + }, + }, + tag_cry_blur = { + name = "Etiqueta borrosa", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Borroso{}", + }, + }, + tag_cry_booster = { + name = "Etiqueta potenciadora", + text = { + "El siguiente {C:cry_code}paquete potenciador{} contiene", + "el {C:attention}doble{} de cartas y", + "el {C:attention}doble{} de opciones", + }, + }, + tag_cry_bundle = { + name = "Etiqueta de manojo", + text = { + "Crea una {C:attention}Etiqueta estándar{}, {C:tarot}Etiqueta encantada{},", + "{C:attention}Etiqueta de bufón{}, y {C:planet}Etiqueta de meteoro", + }, + }, + tag_cry_cat = { + name = "Etiqueta de gato", + text = { "miau :3", "{C:inactive}Nivel {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Etiqueta de consola", + text = { + "Otorga gratis un", + "{C:cry_code}paquete de programa", + }, + }, + tag_cry_double_m = { + name = "Etiqueta MM", + text = { + "En la tienda hay", + "un {C:legendary}comodín M{} {C:dark_edition}contento", + }, + }, + tag_cry_empowered = { + name = "Etiqueta empoderada", + text = { + "Otorga un {C:spectral}paquete espectral gratis", + "con {C:legendary,E:1}El alma{} y {C:cry_exotic,E:1}Portal{}", + }, + }, + tag_cry_epic = { + name = "Etiqueta épica", + text = { + "En la tienda hay un {C:cry_epic}comodín épico{}", + "a mitad de precio", + }, + }, + tag_cry_gambler = { + name = "Etiqueta del jugador", + text = { + "{C:green}#1# en #2#{} probabilidades de crear", + "una {C:cry_exotic,E:1}Etiqueta empoderada", + }, + }, + tag_cry_glass = { + name = "Etiqueta frágil", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Frágil{}", + }, + }, + tag_cry_glitched = { + name = "Etiqueta errónea", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Erróneo{}", + }, + }, + tag_cry_gold = { + name = "Etiqueta dorada", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Dorado{}", + }, + }, + tag_cry_gourmand = { + name = "Etiqueta gourmand", + text = { + "En la tienda hay un", + "{C:attention}comodín de comida{} gratis", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Otorga gratis", + "un {C:cry_ascendant}Paquete meme", + }, + }, + tag_cry_m = { + name = "Etiqueta contenta", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Contento{}", + }, + }, + tag_cry_memory = { + name = "Etiqueta de memoria", + text = { + "Crea {C:attention}#1#{} copias de", + "la última {C:attention}etiqueta{} usada", + "durante esta partida", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + "{s:0.8,C:inactive}Actual: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Etiqueta mosaico", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Mosaico{}", + }, + }, + tag_cry_oversat = { + name = "Etiqueta sobresaturada", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Sobresaturado{}", + }, + }, + tag_cry_quadruple = { + name = "Etiqueta cuádruple", + text = { + "Otorga {C:attention}#1#{} copias de la", + "siguiente {C:attention}Tag{} seleccionada", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + }, + }, + tag_cry_quintuple = { + name = "Etiqueta quíntuple", + text = { + "Otorga {C:attention}#1#{} copias de la", + "siguiente {C:attention}Tag{} seleccionada", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + }, + }, + tag_cry_rework = { + name = "Etiqueta de retrabajo", + text = { + "La tienda tiene un", + "{C:cry_code}#2#{} {C:dark_edition}#1#", + }, + }, + tag_cry_schematic = { + name = "Etiqueta de esquemáticas", + text = { + "La tienda tiene una", + "{C:attention}Lluvia de ideas", + }, + }, + tag_cry_scope = { + name = "Etiqueta de alcance", + text = { + "{C:attention}+#1# {C:blue}manos{} y {C:red}descartes{}", + "en la siguiente ronda", + }, + }, + tag_cry_triple = { + name = "Etiqueta triple", + text = { + "Otorga {C:attention}#1#{} copias de la", + "siguiente {C:attention}Tag{} seleccionada", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "El autómata", + text = { + "Genera hasta {C:attention}#1#", + "cartas de {C:cry_code}código{} al azar", + "{C:inactive}(Debe haber espacio)", + }, + }, + c_cry_eclipse = { + name = "El eclipse", + text = { + "Mejora {C:attention}#1#{} carta", + "seleccionada a", + "una {C:attention}Carta de eco", + }, + }, + c_cry_meld = { + name = "Fusionar", + text = { + "Selecciona un {C:attention}comodín{} o", + "{C:attention}carta de juego{} para", + "hacerla {C:dark_edition}Doble cara", + }, + }, + c_cry_theblessing = { + name = "La bendición", + text = { + "Crea {C:attention}1{}", + "{C:attention}consumible{} aleatorio", + "{C:inactive}(Debe haber espacio){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglífico", + text = { + "Establece la apuesta a {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Lienzo en blanco", + text = { + "{C:attention}+#1#{} tamaño de mano", + }, + }, + v_cry_clone_machine = { + name = "Máquina de clonar", + text = { + "Las etiqueta dobles se vuelven", + "{C:attention}Etiquetas quíntuples{} y", + "son {C:attention}4X{} más comunes", + }, + }, + v_cry_command_prompt = { + name = "Símbolo del sistema", + text = { + "Las cartas de {C:cry_code}código{}", + "pueden aparecer", + "en la {C:attention}tienda{}", + }, + }, + v_cry_copies = { + name = "Copias", + text = { + "Las etiqueta dobles se vuelven", + "{C:attention}Etiquetas triples{} y son", + "son {C:attention}2X{} más comunes", + }, + }, + v_cry_curate = { + name = "Cura", + text = { + "Todas las cartas", + "aparecen con", + "una {C:dark_edition}edición{}", + }, + }, + v_cry_dexterity = { + name = "Destreza", + text = { + "Gana para siempre", + "{C:blue}+#1#{} mano(s)", + "por ronda", + }, + }, + v_cry_double_down = { + name = "Doble de apuesta", + text = { + "Después de cada ronda,", + "{X:dark_edition,C:white} X1.5 {} a todos los valores", + "en la parte trasera de las", + "cartas {C:dark_edition}doble cara{}", + }, + }, + v_cry_double_slit = { + name = "Abertura doble", + text = { + "{C:attention}Fusionar{} puede aparecer", + "en la tienda y", + "paquetes arcanos", + }, + }, + v_cry_double_vision = { + name = "Doble visión", + text = { + "Cartas {C:dark_edition}doble cara{} aparecen", + "{C:attention}4X{} más frecuentemente", + }, + }, + v_cry_fabric = { + name = "Fábrica universal", + text = { + "{C:dark_edition}+#1#{} ranura(s) de comodín", + }, + }, + v_cry_massproduct = { + name = "Producción en masa", + text = { + "Todas las cartas y paquetes", + "en la tienca cuestan {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Aumenta el límite", + "del interés obtenido en cada ronda", + "hasta {C:money}#1#${}", + }, + }, + v_cry_overstock_multi = { + name = "Multicapital", + text = { + "{C:attention}+#1#{} ranura(s) de carta y", + "{C:attention}+#1#{} ranura(s) de paquetes potenciadores", + "disponibles en la tienda", + }, + }, + v_cry_pacclimator = { + name = "Aclamador de planetas", + text = { + "Las cartas de {C:planet}planeta{} aparecen", + "{C:attention}#1# X{} veces más seguido", + "en la tienda", + "Todas las cartas de {C:planet}planeta{}", + "futuras son {C:green}gratis{}", + }, + }, + v_cry_pairamount_plus = { + name = "Parejamiento plus", --this is the best translation you get + text = { + "{C:attention}Reactiva{} todos los comodines M", + "ona vez por cada Pareja", + "{C:attention}contenida{} en la mano jugada", + }, + }, + v_cry_pairing = { + name = "Parejamiento", + text = { + "{C:attention}Reactiva{} todos los comodines M", + "si la mano jugada es una {C:attention}Pareja", + }, + }, + v_cry_quantum_computing = { + name = "Computación cuántica", + text = { + "Las cartas de {C:cry_code}código{} pueden aparecer", + "con edición {C:dark_edition}negativa{}", + }, + }, + v_cry_repair_man = { + name = "Reparejador", --ditto + text = { + "{C:attention}Reactiva{} todos los comodines M", + "si la mano jugada contiene una {C:attention}Pareja", + }, + }, + v_cry_rerollexchange = { + name = "Intercambio de renovaciones", + text = { + "Todas las renovaciones", + "cuestan {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Enlace satelital", + text = { + "Las cartas de {C:cry_code}código{} pueden", + "aparecer en cualquier", + "{C:attention}paquete celestial", + }, + }, + v_cry_scope = { + name = "Alcance galáctico", + text = { + "Crea la carta de {C:planet}planeta", + "por la {C:attention}mano de póker{} jugada", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Aclamador de tarot", + text = { + "Las cartas de {C:tarot}tarot{} aparecen", + "{C:attention}#1# X{} veces más seguido", + "en la tienda", + "Todas las cartas de {C:tarot}tarot{}", + "futuras son {C:green}gratis{}", + }, + }, + v_cry_tag_printer = { + name = "Impresor de etiquetas", + text = { + "Las etiqueta dobles se vuelven", + "{C:attention}Etiquetas cuadrúples{} y son", + "son {C:attention}3X{} más comunes", + }, + }, + v_cry_threers = { + name = "Las 3 Rs", + text = { + "Consigue {C:red}+#1#{}", + "descartes en cada ronda", + "de forma permanente", + }, + }, + v_cry_stickyhand = { + name = "Mano pegajosa", + text = { + "{C:attention}+#1#{} límite de", + "selección de cartas", + }, + }, + v_cry_grapplinghook = { + name = "Gancho de agarre", + text = { + "{C:attention}+#1#{} límite de", + "selección de cartas", + "{C:inactive,s:0.7}Puedes hacer mucho más con esto de lo que tú crees.{}", + }, + }, + v_cry_hyperspacetether = { + name = "Cuerda hiperespacial", + text = { + "{C:attention}+#1#{} límite de ", + "selección de cartas", + "{C:inactive,s:0.7}NOTA: Tendrá más funcionalidades después{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# en #2#{} probabilidades de ser", + "destruida en cada ronda", + }, + }, + cry_rigged = { + name = "Amañada", + text = { + "Todas las probabilidades {C:cry_code}enumeradas{}", + "son {C:cry_code}garantizadas", + }, + }, + cry_hooked = { + name = "Enganchada", + text = { + "Cuando este comodín se {C:cry_code}activa{},", + "activa {C:cry_code}#1#", + }, + }, + cry_flickering = { + name = "Parpadeante", + text = { + "Destruido después de", + "{C:attention}#1#{} activaciones", + "{C:inactive}({C:attention}#2#{C:inactive} restantes)", + }, + }, + cry_flickering_desc = { --used by choco dice + name = "Parpadeante", + text = { + "Destruido después de", + "{C:attention}#1#{} activaciones", + }, + }, + cry_possessed = { + name = "Poseída", + text = { + "{C:attention}Deshabilita{} e {C:attention}invierte{}", + "los efectos, si es posible", + "Se destruye junto con {C:attention}Fantasma", + }, + }, + food_jokers = { + name = "Comodines de comida", + text = { + "{s:0.8}Banano, Huevo, Helado, Cavendish, Habichuela negra,", + "{s:0.8}Cola sin azúcar, Palomitas de maíz, Ramen,", + "{s:0.8}Agua con gas, Pickle, Ají picante, Caramelo,", + "{s:0.8}Dulce nostálgico, M de comida rápida, etc.", + }, + }, + ev_cry_choco0 = { + name = "", + text = { + "Detalles de un {C:cry_ascendant,E:1}evento{}", + "activo aparecerán aquí", + }, + }, + ev_cry_choco1 = { + name = "1: Posesión", + text = { + "{C:attention}Comodines{} y cartas de juego tienen", + "{C:green}1 en 3{} probabilidades of ser Parpadeantes", + "Crea un {C:attention}Fantasma", + "{C:inactive,s:0.7}Has sido poseído por un fantasma, y tu", + "{C:inactive,s:0.7}consciencia está parpadeando.", + }, + }, + ev_cry_choco2 = { + name = "2: Casa embrujada", + text = { + "No puedes saltar {C:attention}ciegas{}", + "Sólo una {C:attention}renovación{} permitida por tienda", + "Los precios de {C:attention}vales{} se duplican", + "{C:inactive,s:0.7}¡Los espíritus espeluznantes han tomado el control!", + "{C:inactive,s:0.7}¡No toques nada y sale lo más rápido que puedas!", + }, + }, + ev_cry_choco3 = { + name = "3: Brebajes de bruja", + text = { + "Crea 3 {C:attention}Pociones", + "Usa una antes del final de la {C:attention}ciega pequeña{},", + "o {C:attention}todos{} los efectos malos se aplicarán en esta {C:attention}apuesta", + "{C:inactive,s:0.7}¡Has sido secuestrado por una bruja!", + "{C:inactive,s:0.7}Ella te ofrece 3 pociones, mirándote de cerca.", + "{C:inactive,s:0.7}Escoje una, para que ella no escoja por tí.", + }, + }, + ev_cry_choco4 = { + name = "4: Abismo lunar", + text = { + "Las cartas jugadas tienen una {C:green}1 en 4{} probabilidades", + "de convertirse en una figura de {C:club}tréboles{} al azar", + "Divide {C:attention}multi{} por la cantidad de cartas de figura jugadas", + "{C:inactive,s:0.7}Hasta un hombre que es puro al corazón", + "{C:inactive,s:0.7}y dice sus oraciones a la noche...", + }, + }, + ev_cry_choco5 = { + name = "5: Chupasangre", + text = { + "Remueve {C:attention}mejoras{} de todas las cartas jugadas", + "{C:green}1 en 3{} chance de destruir", + "cartas de {C:heart}corazones{} y {C:diamond}diamantes{}", + "{C:inactive,s:0.7}Ten cuidado en la oscuridad de la noche, por", + "{C:inactive,s:0.7,E:1}ellos en las sombras{C:inactive,s:0.7} buscan saciar su sed...", + }, + }, + ev_cry_choco6 = { + name = "6: Por favor toma uno", + text = { + "Al {C:attention}terminar una ronda{}, abre un", + "paquete {C:attention}potenciador{} al azar", + "{C:inactive,s:0.7}Mientras paseas por las calles, ves una", + "{C:inactive,s:0.7}caja de varios paquetes potenciadores. ¡Mejor agarrar uno!", + }, + }, + ev_cry_choco7 = { + name = "7: Ambiente festivo", + text = { + "Crea 3 {C:attention}Dulce o truco{} y 1 {C:attention}Cesto de dulce", + "Las tiendas tienen un {C:attention}Dulce o truco{} cada ronda", + "Los {C:cry_candy}dulces{} otorgan {C:money}$3{} al obtenerse", + "{C:inactive,s:0.7}Toda la vecindad está decorada por el empeño espeluznante,", + "{C:inactive,s:0.7}¡ven a disfrutar del ambiente festivo!", + }, + }, + ev_cry_choco8 = { + name = "8: Lluvia de dulces", + text = { + "Al derrotar una {C:attention}ciega{}, consigue 1 {C:cry_candy}dulce{}", + "por cada mano restante; obtén un {C:attention}comodín de comida{}", + "cuando un {C:cry_candy}dulce{} es generado", + "{C:inactive,s:0.7}¡Los dulces llueven del cielo! Rápido,", + "{C:inactive,s:0.7,E:1}¡agarra lo más que puedas!", + }, + }, + ev_cry_choco9 = { + name = "9: Riquezas fantasmales", + text = { + "Gana {C:money}$20", + "Todo el {C:money}dinero{} conseguido {C:attention}duplicado", + "{C:inactive,s:0.7}¡El espectro de un pariente desaparecido tuyo", + "{C:inactive,s:0.7}te visita en el medio de la noche!", + "{C:inactive,s:0.7}Sin una palabra, colocan una bolsa de dinero en tus manos,", + "{C:inactive,s:0.7}sonríen cálidamente, y se despiden mientras se desvanecen en el aire.", + }, + }, + ev_cry_choco10 = { + name = "10: Antigüedad venerada", + text = { + "Un {C:attention}comodín{} {C:legendary}legendario{} aparece", + "en la ranura de {C:attention}vales{} por {C:money}$50", + "Sólo comprable como el {C:attention}último{} objeto en la tienda", + "{C:inactive,s:0.7}Has atraído la atención del espíritu de una rélica,", + "{C:inactive,s:0.7}pero no va a ser fácil de calmar.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Actualizaciones{s:0.7} están deshabilitadas por defecto ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eterno", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Eternos{}", + }, + }, + cry_perishable_booster = { + name = "Perecedero", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Perecederos{}", + }, + }, + cry_rental_booster = { + name = "De alquiler", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Fijado", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Fijados{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eterno", + text = { + "No puede ser intercambiado", + }, + }, + cry_perishable_voucher = { + name = "Perecedero", + text = { + "Se agota al cabo de ", + "{C:attention}#1#{} rondas", + "{C:inactive}({C:attention}#2#{C:inactive} restantes)", + }, + }, + cry_rental_voucher = { + name = "De alquiler", + text = { + "Pierdes {C:money}#1#${}", + "al final de la ronda", + }, + }, + cry_pinned_voucher = { + name = "Fijado", + text = { + "Se mantiene en la tienda", + "hasta que sea redimido", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# en #2#{} probabilidades de ser", + "perdido en cada ronda", + }, + }, + cry_perishable_consumeable = { + name = "Perecedero", + text = { + "Se agota al", + "final de la ronda", + }, + }, + cry_rental_consumeable = { + name = "De alquiler", + text = { + "Pierdes {C:money}#1#${}", + "al final de la ronda, y en uso", + }, + }, + cry_pinned_consumeable = { + name = "Fijado", + text = { + "No puedes usar consumibles", + "no-{C:attention}fijados{}", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# en #2#{} probabilidades de", + "no hacer nada en uso", + }, + }, + p_cry_code_normal_1 = { + name = "Paquete de programa", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_code_normal_2 = { + name = "Paquete de programa", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_code_jumbo_1 = { + name = "Paquete de programa jumbo", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_code_mega_1 = { + name = "Paquete de programa mega", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_empowered = { + name = "Paquete espectral [Etiqueta empoderada]", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas {C:spectral}espectrales{}", + "{s:0.8,C:inactive}(Generado por Etiqueta empoderada)", + }, + }, + p_cry_meme_1 = { + name = "Paquete meme", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas de {C:joker}comodín meme{}", + }, + }, + p_cry_meme_two = { + name = "Paquete meme", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas de {C:joker}comodín meme{}", + }, + }, + p_cry_meme_three = { + name = "Paquete meme", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas de {C:joker}comodín meme{}", + }, + }, + undiscovered_code = { + name = "Por descubrir", + text = { + "Compra o usa", + "esta carta", + "en una partida sin códigos", + "para saber lo que hace", + }, + }, + undiscovered_unique = { + name = "Por descubrir", + text = { + "Compra o usa", + "esta carta", + "en una partida sin códigos", + "para saber lo que hace", + }, + }, + cry_green_seal = { + name = "Sello verde", + text = { + "Crea una carta de {C:cry_code}código{}", + "cuando se juega y no puntúa", + "{C:inactive}(Debe haver espacio)", + }, + }, + cry_azure_seal = { + name = "Sello azur", + text = { + "Crea {C:attention}#1#{} {C:planet}planetas{}", + "{C:dark_edition}negativas{} por la {C:attention}mano de póker{}", + "jugada, y {C:red}destruye{} esta carta", + }, + }, + }, + Unique = { + c_cry_potion = { + name = "Poción", + text = { + "Aplica un {C:attention}efecto malo{}", + "desconocido al usarse", + "{C:inactive,s:0.7}Obtenido por Dado de chocolate", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Un ACE En Mi Bolsillo", + ach_cry_blurred_blurred_joker = "Legalmente Ciego", + ach_cry_bullet_hell = "Shooter Maníaco", + ach_cry_break_infinity = "Rompe El Infinito", + ach_cry_cryptid_the_cryptid = "Criptida El Críptido", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Pase De Googol Play", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Corredor De Bienes Raíces", + ach_cry_jokes_on_you = "La Broma Es Para Tí, Amigo!", + ach_cry_niw_uoy = "!ETSANAG¡", + ach_cry_now_the_fun_begins = "Ahora Se Pone Lo Bueno", + ach_cry_patience_virtue = "La Paciencia Es Una Virtud", + ach_cry_perfectly_balanced = "Perfectamente Balanceado", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Atasco De Tráfico", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "Te Dijimos Que No Lo Hagas", + ach_cry_what_have_you_done = "¡¿QUÉ ACABAS DE HACER?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Consigue Comodín Borroso borroso", + ach_cry_bullet_hell = "Consigue 15 comodines AP", + ach_cry_break_infinity = "Puntúa 1.79e308 fichas en una sola mano", + ach_cry_cryptid_the_cryptid = "Usa Críptido en Críptido", + ach_cry_exodia = "Consigue 5 comodines exóticos", + ach_cry_freak_house = "Juega un Full de color consistiendo de 6s y 9s de corazones mientras tienes a Nice", + ach_cry_googol_play_pass = "Amaña una Carta de Googol Play", + ach_cry_haxxor = "Usa un código de trampas", + ach_cry_home_realtor = "Activa Casa Feliz antes de la apuesta 8 (sin BdE/Antimateria)", + ach_cry_jokes_on_you = "Activa el efecto de La Broma en la apuesta 1 y gana la partida", + ach_cry_niw_uoy = "Llega a la apuesta -8", + ach_cry_now_the_fun_begins = "Consigue a Lienzo", + ach_cry_patience_virtue = "Espera a Ciclo Lavanda por 2 minutos antes de jugar la primera mano y vence la ciega", + ach_cry_perfectly_balanced = "Completa la Baraja Muy Justa en Ascendant Stake", + ach_cry_pull_request = "Haz que ://COMMIT haga aparecer el mismo comodín que destruyó", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Gana en 1 ronda", + ach_cry_used_crash = "Usa ://CHOQUE", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Características", + cry_set_music = "Música", + cry_set_enable_features = "Selecciona las características para activar (se aplica al reiniciar):", + cry_feat_achievements = "Logros", + ["cry_feat_antimatter deck"] = "Baraja de antimateria", + cry_feat_blinds = "Ciegas", + cry_feat_challenges = "Desafíos", + ["cry_feat_code cards"] = "Cartas de código", + ["cry_feat_misc. decks"] = "Barajas misceláneas", + ["cry_feat_https module"] = "Módulo HTTPS", + ["cry_feat_timer mechanics"] = "Mecánicas de temporizador", + ["cry_feat_enhanced decks"] = "Barajas mejoradas", + ["cry_feat_epic jokers"] = "Comodines épicos", + ["cry_feat_exotic jokers"] = "Comodines exóticos", + ["cry_feat_m jokers"] = "Comodines M", + cry_feat_menu = "Menú principal personalizado", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Comodines misceláneos", + cry_feat_planets = "Planetas", + cry_feat_jokerdisplay = "JokerDisplay (no hace nada)", + cry_feat_tags = "Etiquetas", + cry_feat_sleeves = "Mangas", + cry_feat_spectrals = "Espectrales", + cry_feat_spooky = "Actualización espeluznante", + ["cry_feat_more stakes"] = "Pozos", + cry_feat_vouchers = "Vales", + cry_mus_jimball = "Jimball (Funkytown por Lipps Inc. - Copyrighted)", + cry_mus_code = "Cartas de código (://LETS_BREAK_THE_GAME por HexaCryonic)", + cry_mus_exotic = "Comodines exóticos (Joker in Latin por AlexZGreat)", + cry_mus_high_score = "Alto puntaje (Final Boss [For Your Computer] por AlexZGreat)", - }, - }, - v_cry_hyperspacetether = { - name = "Cuerda hiperespacial", - text = { - "{C:attention}+#1#{} límite de ", - "selección de cartas", - "{C:inactive,s:0.7}NOTA: Tendrá más funcionalidades después{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# en #2#{} probabilidades de ser", - "destruida en cada ronda", - }, - }, - cry_rigged = { - name = "Amañada", - text = { - "Todas las probabilidades {C:cry_code}enumeradas{}", - "son {C:cry_code}garantizadas", - }, - }, - cry_hooked = { - name = "Enganchada", - text = { - "Cuando este comodín se {C:cry_code}activa{},", - "activa {C:cry_code}#1#", - }, - }, - cry_flickering = { - name = "Parpadeante", - text = { - "Destruido después de", - "{C:attention}#1#{} activaciones", - "{C:inactive}({C:attention}#2#{C:inactive} restantes)" - }, - }, - cry_flickering_desc = { --used by choco dice - name = "Parpadeante", - text = { - "Destruido después de", - "{C:attention}#1#{} activaciones", - }, - }, - cry_possessed = { - name = "Poseída", - text = { - "{C:attention}Deshabilita{} e {C:attention}invierte{}", - "los efectos, si es posible", - "Se destruye junto con {C:attention}Fantasma" - }, - }, - food_jokers = { - name = "Comodines de comida", - text = { - "{s:0.8}Banano, Huevo, Helado, Cavendish, Habichuela negra,", - "{s:0.8}Cola sin azúcar, Palomitas de maíz, Ramen,", - "{s:0.8}Agua con gas, Pickle, Ají picante, Caramelo,", - "{s:0.8}Dulce nostálgico, M de comida rápida, etc.", - }, - }, - ev_cry_choco0 = { - name = "", - text = { - "Detalles de un {C:cry_ascendant,E:1}evento{}", - "activo aparecerán aquí" - } - }, - ev_cry_choco1 = { - name = "1: Posesión", - text = { - "{C:attention}Comodines{} y cartas de juego tienen", - "{C:green}1 en 3{} probabilidades of ser Parpadeantes", - "Crea un {C:attention}Fantasma", - "{C:inactive,s:0.7}Has sido poseído por un fantasma, y tu", - "{C:inactive,s:0.7}consciencia está parpadeando." - } - }, - ev_cry_choco2 = { - name = "2: Casa embrujada", - text = { - "No puedes saltar {C:attention}ciegas{}", - "Sólo una {C:attention}renovación{} permitida por tienda", - "Los precios de {C:attention}vales{} se duplican", - "{C:inactive,s:0.7}¡Los espíritus espeluznantes han tomado el control!", - "{C:inactive,s:0.7}¡No toques nada y sale lo más rápido que puedas!", - } - }, - ev_cry_choco3 = { - name = "3: Brebajes de bruja", - text = { - "Crea 3 {C:attention}Pociones", - "Usa una antes del final de la {C:attention}ciega pequeña{},", - "o {C:attention}todos{} los efectos malos se aplicarán en esta {C:attention}apuesta", - "{C:inactive,s:0.7}¡Has sido secuestrado por una bruja!", - "{C:inactive,s:0.7}Ella te ofrece 3 pociones, mirándote de cerca.", - "{C:inactive,s:0.7}Escoje una, para que ella no escoja por tí.", - } - }, - ev_cry_choco4 = { - name = "4: Abismo lunar", - text = { - "Las cartas jugadas tienen una {C:green}1 en 4{} probabilidades", - "de convertirse en una figura de {C:club}tréboles{} al azar", - "Divide {C:attention}multi{} por la cantidad de cartas de figura jugadas", - "{C:inactive,s:0.7}Hasta un hombre que es puro al corazón", - "{C:inactive,s:0.7}y dice sus oraciones a la noche..." - } - }, - ev_cry_choco5 = { - name = "5: Chupasangre", - text = { - "Remueve {C:attention}mejoras{} de todas las cartas jugadas", - "{C:green}1 en 3{} chance de destruir", - "cartas de {C:heart}corazones{} y {C:diamond}diamantes{}", - "{C:inactive,s:0.7}Ten cuidado en la oscuridad de la noche, por", - "{C:inactive,s:0.7,E:1}ellos en las sombras{C:inactive,s:0.7} buscan saciar su sed..." - } - }, - ev_cry_choco6 = { - name = "6: Por favor toma uno", - text = { - "Al {C:attention}terminar una ronda{}, abre un", - "paquete {C:attention}potenciador{} al azar", - "{C:inactive,s:0.7}Mientras paseas por las calles, ves una", - "{C:inactive,s:0.7}caja de varios paquetes potenciadores. ¡Mejor agarrar uno!" - } - }, - ev_cry_choco7 = { - name = "7: Ambiente festivo", - text = { - "Crea 3 {C:attention}Dulce o truco{} y 1 {C:attention}Cesto de dulce", - "Las tiendas tienen un {C:attention}Dulce o truco{} cada ronda", - "Los {C:cry_candy}dulces{} otorgan {C:money}$3{} al obtenerse", - "{C:inactive,s:0.7}Toda la vecindad está decorada por el empeño espeluznante,", - "{C:inactive,s:0.7}¡ven a disfrutar del ambiente festivo!" - } - }, - ev_cry_choco8 = { - name = "8: Lluvia de dulces", - text = { - "Al derrotar una {C:attention}ciega{}, consigue 1 {C:cry_candy}dulce{}", - "por cada mano restante; obtén un {C:attention}comodín de comida{}", - "cuando un {C:cry_candy}dulce{} es generado", - "{C:inactive,s:0.7}¡Los dulces llueven del cielo! Rápido,", - "{C:inactive,s:0.7,E:1}¡agarra lo más que puedas!" - } - }, - ev_cry_choco9 = { - name = "9: Riquezas fantasmales", - text = { - "Gana {C:money}$20", - "Todo el {C:money}dinero{} conseguido {C:attention}duplicado", - "{C:inactive,s:0.7}¡El espectro de un pariente desaparecido tuyo", - "{C:inactive,s:0.7}te visita en el medio de la noche!", - "{C:inactive,s:0.7}Sin una palabra, colocan una bolsa de dinero en tus manos,", - "{C:inactive,s:0.7}sonríen cálidamente, y se despiden mientras se desvanecen en el aire.", - } - }, - ev_cry_choco10 = { - name = "10: Antigüedad venerada", - text = { - "Un {C:attention}comodín{} {C:legendary}legendario{} aparece", - "en la ranura de {C:attention}vales{} por {C:money}$50", - "Sólo comprable como el {C:attention}último{} objeto en la tienda", - "{C:inactive,s:0.7}Has atraído la atención del espíritu de una rélica,", - "{C:inactive,s:0.7}pero no va a ser fácil de calmar.", - } - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Actualizaciones{s:0.7} están deshabilitadas por defecto ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eterno", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Eternos{}", - }, - }, - cry_perishable_booster = { - name = "Perecedero", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Perecederos{}", - }, - }, - cry_rental_booster = { - name = "De alquiler", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Fijado", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Fijados{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eterno", - text = { - "No puede ser intercambiado", - }, - }, - cry_perishable_voucher = { - name = "Perecedero", - text = { - "Se agota al cabo de ", - "{C:attention}#1#{} rondas", - "{C:inactive}({C:attention}#2#{C:inactive} restantes)", - }, - }, - cry_rental_voucher = { - name = "De alquiler", - text = { - "Pierdes {C:money}#1#${}", - "al final de la ronda", - }, - }, - cry_pinned_voucher = { - name = "Fijado", - text = { - "Se mantiene en la tienda", - "hasta que sea redimido", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# en #2#{} probabilidades de ser", - "perdido en cada ronda", - }, - }, - cry_perishable_consumeable = { - name = "Perecedero", - text = { - "Se agota al", - "final de la ronda", - }, - }, - cry_rental_consumeable = { - name = "De alquiler", - text = { - "Pierdes {C:money}#1#${}", - "al final de la ronda, y en uso", - }, - }, - cry_pinned_consumeable = { - name = "Fijado", - text = { - "No puedes usar consumibles", - "no-{C:attention}fijados{}", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# en #2#{} probabilidades de", - "no hacer nada en uso", - }, - }, - p_cry_code_normal_1 = { - name = "Paquete de programa", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_code_normal_2 = { - name = "Paquete de programa", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_code_jumbo_1 = { - name = "Paquete de programa jumbo", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_code_mega_1 = { - name = "Paquete de programa mega", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_empowered = { - name = "Paquete espectral [Etiqueta empoderada]", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas {C:spectral}espectrales{}", - "{s:0.8,C:inactive}(Generado por Etiqueta empoderada)", - }, - }, - p_cry_meme_1 = { - name = "Paquete meme", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas de {C:joker}comodín meme{}", - }, - }, - p_cry_meme_two = { - name = "Paquete meme", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas de {C:joker}comodín meme{}", - }, - }, - p_cry_meme_three = { - name = "Paquete meme", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas de {C:joker}comodín meme{}", - }, - }, - undiscovered_code = { - name = "Por descubrir", - text = { - "Compra o usa", - "esta carta", - "en una partida sin códigos", - "para saber lo que hace", - }, - }, - undiscovered_unique = { - name = "Por descubrir", - text = { - "Compra o usa", - "esta carta", - "en una partida sin códigos", - "para saber lo que hace", - } - }, - cry_green_seal = { - name = "Sello verde", - text = { - "Crea una carta de {C:cry_code}código{}", - "cuando se juega y no puntúa", - "{C:inactive}(Debe haver espacio)", - }, - }, - cry_azure_seal = { - name = "Sello azur", - text = { - "Crea {C:attention}#1#{} {C:planet}planetas{}", - "{C:dark_edition}negativas{} por la {C:attention}mano de póker{}", - "jugada, y {C:red}destruye{} esta carta", - }, - }, - }, - Unique = { - c_cry_potion = { - name = "Poción", - text = { - "Aplica un {C:attention}efecto malo{}", - "desconocido al usarse", - "{C:inactive,s:0.7}Obtenido por Dado de chocolate" - } - } - } - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Un ACE En Mi Bolsillo", - ach_cry_blurred_blurred_joker = "Legalmente Ciego", - ach_cry_bullet_hell = "Shooter Maníaco", - ach_cry_break_infinity = "Rompe El Infinito", - ach_cry_cryptid_the_cryptid = "Criptida El Críptido", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Pase De Googol Play", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Corredor De Bienes Raíces", - ach_cry_jokes_on_you = "La Broma Es Para Tí, Amigo!", - ach_cry_niw_uoy = "!ETSANAG¡", - ach_cry_now_the_fun_begins = "Ahora Se Pone Lo Bueno", - ach_cry_patience_virtue = "La Paciencia Es Una Virtud", - ach_cry_perfectly_balanced = "Perfectamente Balanceado", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Atasco De Tráfico", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "Te Dijimos Que No Lo Hagas", - ach_cry_what_have_you_done = "¡¿QUÉ ACABAS DE HACER?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Consigue Comodín Borroso borroso", - ach_cry_bullet_hell = "Consigue 15 comodines AP", - ach_cry_break_infinity = "Puntúa 1.79e308 fichas en una sola mano", - ach_cry_cryptid_the_cryptid = "Usa Críptido en Críptido", - ach_cry_exodia = "Consigue 5 comodines exóticos", - ach_cry_freak_house = "Juega un Full de color consistiendo de 6s y 9s de corazones mientras tienes a Nice", - ach_cry_googol_play_pass = "Amaña una Carta de Googol Play", - ach_cry_haxxor = "Usa un código de trampas", - ach_cry_home_realtor = "Activa Casa Feliz antes de la apuesta 8 (sin BdE/Antimateria)", - ach_cry_jokes_on_you = "Activa el efecto de La Broma en la apuesta 1 y gana la partida", - ach_cry_niw_uoy = "Llega a la apuesta -8", - ach_cry_now_the_fun_begins = "Consigue a Lienzo", - ach_cry_patience_virtue = "Espera a Ciclo Lavanda por 2 minutos antes de jugar la primera mano y vence la ciega", - ach_cry_perfectly_balanced = "Completa la Baraja Muy Justa en Ascendant Stake", - ach_cry_pull_request = "Haz que ://COMMIT haga aparecer el mismo comodín que destruyó", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Gana en 1 ronda", - ach_cry_used_crash = "Usa ://CHOQUE", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Características", - cry_set_music = "Música", - cry_set_enable_features = "Selecciona las características para activar (se aplica al reiniciar):", - cry_feat_achievements = "Logros", - ["cry_feat_antimatter deck"] = "Baraja de antimateria", - cry_feat_blinds = "Ciegas", - cry_feat_challenges = "Desafíos", - ["cry_feat_code cards"] = "Cartas de código", - ["cry_feat_misc. decks"] = "Barajas misceláneas", - ["cry_feat_https module"] = "Módulo HTTPS", - ["cry_feat_timer mechanics"] = "Mecánicas de temporizador", - ["cry_feat_enhanced decks"] = "Barajas mejoradas", - ["cry_feat_epic jokers"] = "Comodines épicos", - ["cry_feat_exotic jokers"] = "Comodines exóticos", - ["cry_feat_m jokers"] = "Comodines M", - cry_feat_menu = "Menú principal personalizado", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Comodines misceláneos", - cry_feat_planets = "Planetas", - cry_feat_jokerdisplay = "JokerDisplay (no hace nada)", - cry_feat_tags = "Etiquetas", - cry_feat_sleeves = "Mangas", - cry_feat_spectrals = "Espectrales", - cry_feat_spooky = "Actualización espeluznante", - ["cry_feat_more stakes"] = "Pozos", - cry_feat_vouchers = "Vales", - cry_mus_jimball = "Jimball (Funkytown por Lipps Inc. - Copyrighted)", - cry_mus_code = "Cartas de código (://LETS_BREAK_THE_GAME por HexaCryonic)", - cry_mus_exotic = "Comodines exóticos (Joker in Latin por AlexZGreat)", - cry_mus_high_score = "Alto puntaje (Final Boss [For Your Computer] por AlexZGreat)", + k_cry_program_pack = "Paquete de programa", + k_cry_meme_pack = "Paquete meme", - k_cry_program_pack = "Paquete de programa", - k_cry_meme_pack = "Paquete meme", + cry_critical_hit_ex = "¡Golpe crítico!", + cry_critical_miss_ex = "Fallo crítico...", - cry_critical_hit_ex = "¡Golpe crítico!", - cry_critical_miss_ex = "Fallo crítico...", + cry_potion1 = "-1 a todos los niveles de mano", + cry_potion2 = "X1.15 tamaño de ciega", + cry_potion3 = "-1 mano y descarte", - cry_potion1 = "-1 a todos los niveles de mano", - cry_potion2 = "X1.15 tamaño de ciega", - cry_potion3 = "-1 mano y descarte", + cry_debuff_oldhouse = "Sin fulls", + cry_debuff_oldarm = "Debes jugar 4 o menos cartas", + cry_debuff_oldpillar = "Sin escaleras", + cry_debuff_oldflint = "Sin colores", + cry_debuff_oldmark = "Sin manos que contengan una Pareja", + cry_debuff_obsidian_orb = "Aplica las habilidades de todos los jefes derrotados", - cry_debuff_oldhouse = "Sin fulls", - cry_debuff_oldarm = "Debes jugar 4 o menos cartas", - cry_debuff_oldpillar = "Sin escaleras", - cry_debuff_oldflint = "Sin colores", - cry_debuff_oldmark = "Sin manos que contengan una Pareja", - cry_debuff_obsidian_orb = "Aplica las habilidades de todos los jefes derrotados", + k_code = "Código", + k_unique = "Único", + b_code_cards = "Cartas de código", + b_unique_cards = "Cartas únicas", + b_pull = "TIRAR", + cry_hooked_ex = "Enganchada!", + k_end_blind = "terminar_ciega", - k_code = "Código", - k_unique = "Único", - b_code_cards = "Cartas de código", - b_unique_cards = "Cartas únicas", - b_pull = "TIRAR", - cry_hooked_ex = "Enganchada!", - k_end_blind = "terminar_ciega", + cry_code_rank = "INGRESAR CATEGORÍA", + cry_code_enh = "INGRESAR MEJORA", + cry_code_hand = "INGRESAR MANO DE PÓKER", + cry_code_enter_card = "INGRESAR CARTA", + cry_code_apply = "APLICAR", + cry_code_apply_previous = "APLICAR ANTERIOR", + cry_code_exploit = "EXPLOTAR", + cry_code_exploit_previous = "EXPLOTAR ANTERIOR", + cry_code_create = "CREAR", + cry_code_create_previous = "CREAR ANTERIOR", + cry_code_execute = "EJECUTAR", + cry_code_cancel = "CANCELAR", - cry_code_rank = "INGRESAR CATEGORÍA", - cry_code_enh = "INGRESAR MEJORA", - cry_code_hand = "INGRESAR MANO DE PÓKER", - cry_code_enter_card = "INGRESAR CARTA", - cry_code_apply = "APLICAR", - cry_code_apply_previous = "APLICAR ANTERIOR", - cry_code_exploit = "EXPLOTAR", - cry_code_exploit_previous = "EXPLOTAR ANTERIOR", - cry_code_create = "CREAR", - cry_code_create_previous = "CREAR ANTERIOR", - cry_code_execute = "EJECUTAR", - cry_code_cancel = "CANCELAR", + b_flip = "VOLTEAR", + b_merge = "COMBINAR", - b_flip = "VOLTEAR", - b_merge = "COMBINAR", + cry_hand_bulwark = "Baluarte", + cry_hand_clusterfuck = "Lío de mierda", + cry_hand_ultpair = "Pareja suprema", - cry_hand_bulwark = "Baluarte", - cry_hand_clusterfuck = "Lío de mierda", - cry_hand_ultpair = "Pareja suprema", + cry_again_q = "¿Otra vez?", + cry_curse = "Maldición", + cry_curse_ex = "¡Maldición!", + cry_sobbing = "Ayúdame...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 ronda", + cry_plus_cryptid = "+1 críptido", + cry_no_triggers = "Sin activaciones restantes!", + cry_unredeemed = "Desredimido...", + cry_active = "Activo", + cry_inactive = "Inactivo", - cry_again_q = "¿Otra vez?", - cry_curse = "Maldición", - cry_curse_ex = "¡Maldición!", - cry_sobbing = "Ayúdame...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 ronda", - cry_plus_cryptid = "+1 críptido", - cry_no_triggers = "Sin activaciones restantes!", - cry_unredeemed = "Desredimido...", - cry_active = "Activo", - cry_inactive = "Inactivo", + k_disable_music = "Desactivar música", - k_disable_music = "Desactivar música", + k_cry_epic = "Épico", + k_cry_exotic = "Exótico", + k_cry_candy = "Dulce", + k_cry_cursed = "Maldito", - k_cry_epic = "Épico", - k_cry_exotic = "Exótico", - k_cry_candy = "Dulce", - k_cry_cursed = "Maldito", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Nota de copyright", + cry_notif_jimball_d1 = 'Jimball reproduce la canción "Funkytown",', + cry_notif_jimball_d2 = "la cual tiene copyright y no puede ser", + cry_notif_jimball_d3 = "usada por streams y videos.", + }, + labels = { + food_jokers = "Comodines de comida", + banana = "Banana", + code = "Código", + unique = "Único", + cry_rigged = "Amañada", + cry_hooked = "Enganchada", + cry_flickering = "Parpadeante", + cry_possessed = "Poseída", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Nota de copyright", - cry_notif_jimball_d1 = "Jimball reproduce la canción \"Funkytown\",", - cry_notif_jimball_d2 = "la cual tiene copyright y no puede ser", - cry_notif_jimball_d3 = "usada por streams y videos.", - }, - labels = { - food_jokers = "Comodines de comida", - banana = "Banana", - code = "Código", - unique = "Único", - cry_rigged = "Amañada", - cry_hooked = "Enganchada", - cry_flickering = "Parpadeante", - cry_possessed = "Poseída", + cry_green_seal = "Sello verde", + cry_azure_seal = "Sello azur", - cry_green_seal = "Sello verde", - cry_azure_seal = "Sello azur", + cry_astral = "Astral", + cry_blur = "Borroso", + cry_double_sided = "Doble cara", + cry_glass = "Frágil", + cry_glitched = "Errónea", + cry_gold = "Dorada", + cry_m = "Contenta", + cry_mosaic = "Mosaico", + cry_noisy = "Ruidosa", + cry_oversat = "Sobresaturada", - cry_astral = "Astral", - cry_blur = "Borroso", - cry_double_sided = "Doble cara", - cry_glass = "Frágil", - cry_glitched = "Errónea", - cry_gold = "Dorada", - cry_m = "Contenta", - cry_mosaic = "Mosaico", - cry_noisy = "Ruidosa", - cry_oversat = "Sobresaturada", + k_cry_epic = "Épico", + k_cry_exotic = "Exótico", + k_cry_candy = "Dulce", + k_cry_cursed = "Maldito", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} multi" }, + plus_chips = { "{C:blue}+#2#{} fichas" }, + x_mult = { "{X:red,C:white} X#2#{} multi" }, + x_chips = { "{X:blue,C:white} X#2#{} fichas" }, + h_size = { "{C:attention}+#2#{} tamaño de mano" }, + money = { "{C:money}+$#2#{} al pago" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Actual: {C:red}+#1#{C:inactive} multi)" }, + plus_chips = { "{C:inactive}(Actual: {C:blue}+#1#{C:inactive} fichas)" }, + x_mult = { "{C:inactive}(Actual: {X:red,C:white} X#1# {C:inactive} multi)" }, + x_chips = { "{C:inactive}(Actual: {X:blue,C:white} X#1# {C:inactive} fichas)" }, + h_size = { "{C:inactive}(Actual: {C:attention}+#1#{C:inactive} tamaño de mano)" }, + money = { "{C:inactive}(Actual: {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Crea {C:attention}#2# comodín(es{}" }, + make_tarot = { "Crea {C:attention}#2#{} carta(s) de {C:tarot}tarot{}" }, + make_planet = { "Crea {C:attention}#2#{} carta(s) de {C:planet}planeta{}" }, + make_spectral = { "Crea {C:attention}#2#{} carta(s) {C:spectral}espectrales{}" }, + add_dollars = { "Gana {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "al abrir un {C:attention}Paquete potenciador{}" }, + buying_card = { "al comprar una carta" }, + selling_self = { "al vender esta carta" }, + selling_card = { "al vender una carta" }, + reroll_shop = { "al renovar" }, + ending_shop = { "al final de la {C:attention}tienda{}" }, + skip_blind = { "al saltar una {C:attention}ciega{}" }, + skipping_booster = { "al saltar un {C:attention}Paquete potenciador{}" }, + playing_card_added = { "al añadir una {C:attention}carta{} a tu baraja" }, + first_hand_drawn = { "al empezar la ronda" }, + setting_blind = { "al seleccionar una {C:attention}ciega{}" }, + remove_playing_cards = { "al destruir una carta" }, + using_consumeable = { "al usar un {C:attention}consumible{}" }, + debuffed_hand = { "si la {C:attention}mano{} no está permitida" }, + pre_discard = { "antes de descartar" }, + discard = { "por cada carta descartada" }, + end_of_round = { "al final de la {C:attention}ronda{}" }, + individual_play = { "por cada carta puntuada" }, + individual_hand_score = { "por cada carta en tu mano al puntuar" }, + individual_hand_end = { "por cada carta en tu mano al terminar la {C:attention}ronda{}" }, + repetition_play = { "Reactiva las cartas puntuadas" }, + repetition_hand = { "Reactiva las cartas en tu mano" }, + other_joker = { "por cada {C:attention}comodín{}" }, + before = { "antes de cada {C:attention}mano{}" }, + after = { "después de cada {C:attention}mano{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, + buy_uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, + tarot = { "si la carta es una carta de {C:tarot}tarot{}" }, + planet = { "si la carta es una carta de {C:planet}planeta{}" }, + spectral = { "si la carta es una carta {C:spectral}espectral{}" }, + joker = { "si la carta es un {C:attention}comodín{}" }, + suit = { "si la carta es de {V:1}#3#{}" }, + rank = { "si la carta es un {C:attention}#3#{}" }, + face = { "si la carta es una carta de {C:attention}figura{}" }, + boss = { "si la {C:attention}ciega{} es una {C:attention}ciega jefe{}" }, + non_boss = { "si la {C:attention}ciega{} es una {C:attention}ciega no-jefe{}" }, + small = { "si la {C:attention}ciega{} es una {C:attention}ciega pequeña{}" }, + big = { "si la {C:attention}ciega{} es una {C:attention}ciega grande{}" }, + first = { "si es la {C:attention}primera mano{}" }, + last = { "si es la {C:attention}última mano{}" }, + common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, + uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, + rare = { "si es un {C:attention}comodín{} {C:red}raro{}" }, + poker_hand = { "si la mano es un(a) {C:attention}#3#{}" }, + or_more = { "si la mano contiene {C:attention}#3#{} o más cartas" }, + or_less = { "si la mano contiene {C:attention}#3#{} o menos cartas" }, + hands_left = { "si tienes #3# {C:blue}manos{} restantes al final de la ronda" }, + discards_left = { "si tienes #3# {C:red}descartes{} restantes al final de la ronda" }, + first_discard = { "si es el {C:attention}primer descarte{}" }, + last_discard = { "si es el {C:attention}último descarte{}" }, + odds = { "con {C:green}#4# {C:green}en {C:green}#3#{} probabilidades" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# fichas" }, + a_powmult = { "^#1# multi" }, + a_powchips = { "^#1# fichas" }, + a_powmultchips = { "^#1# multi+fichas" }, + a_round = { "+#1# ronda" }, + a_candy = { "+#1# Candy" }, + a_xchips_minus = { "-X#1# fichas" }, + a_powmult_minus = { "-^#1# multi" }, + a_powchips_minus = { "-^#1# fichas" }, + a_powmultchips_minus = { "-^#1# multi+fichas" }, + a_round_minus = { "-#1# ronda" }, + a_tag_minus = { "-#1# etiqueta" }, + a_tags_minus = { "-#1# etiquetas" }, + a_tag = { "+#1# etiqueta" }, + a_tags = { "+#1# etiquetas" }, - k_cry_epic = "Épico", - k_cry_exotic = "Exótico", - k_cry_candy = "Dulce", - k_cry_cursed = "Maldito", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} multi" }, - plus_chips = { "{C:blue}+#2#{} fichas" }, - x_mult = { "{X:red,C:white} X#2#{} multi" }, - x_chips = { "{X:blue,C:white} X#2#{} fichas" }, - h_size = { "{C:attention}+#2#{} tamaño de mano" }, - money = { "{C:money}+$#2#{} al pago" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Actual: {C:red}+#1#{C:inactive} multi)" }, - plus_chips = { "{C:inactive}(Actual: {C:blue}+#1#{C:inactive} fichas)" }, - x_mult = { "{C:inactive}(Actual: {X:red,C:white} X#1# {C:inactive} multi)" }, - x_chips = { "{C:inactive}(Actual: {X:blue,C:white} X#1# {C:inactive} fichas)" }, - h_size = { "{C:inactive}(Actual: {C:attention}+#1#{C:inactive} tamaño de mano)" }, - money = { "{C:inactive}(Actual: {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Crea {C:attention}#2# comodín(es{}" }, - make_tarot = { "Crea {C:attention}#2#{} carta(s) de {C:tarot}tarot{}" }, - make_planet = { "Crea {C:attention}#2#{} carta(s) de {C:planet}planeta{}" }, - make_spectral = { "Crea {C:attention}#2#{} carta(s) {C:spectral}espectrales{}" }, - add_dollars = { "Gana {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "al abrir un {C:attention}Paquete potenciador{}" }, - buying_card = { "al comprar una carta" }, - selling_self = { "al vender esta carta" }, - selling_card = { "al vender una carta" }, - reroll_shop = { "al renovar" }, - ending_shop = { "al final de la {C:attention}tienda{}" }, - skip_blind = { "al saltar una {C:attention}ciega{}" }, - skipping_booster = { "al saltar un {C:attention}Paquete potenciador{}" }, - playing_card_added = { "al añadir una {C:attention}carta{} a tu baraja" }, - first_hand_drawn = { "al empezar la ronda" }, - setting_blind = { "al seleccionar una {C:attention}ciega{}" }, - remove_playing_cards = { "al destruir una carta" }, - using_consumeable = { "al usar un {C:attention}consumible{}" }, - debuffed_hand = { "si la {C:attention}mano{} no está permitida" }, - pre_discard = { "antes de descartar" }, - discard = { "por cada carta descartada" }, - end_of_round = { "al final de la {C:attention}ronda{}" }, - individual_play = { "por cada carta puntuada" }, - individual_hand_score = { "por cada carta en tu mano al puntuar" }, - individual_hand_end = { "por cada carta en tu mano al terminar la {C:attention}ronda{}" }, - repetition_play = { "Reactiva las cartas puntuadas" }, - repetition_hand = { "Reactiva las cartas en tu mano" }, - other_joker = { "por cada {C:attention}comodín{}" }, - before = { "antes de cada {C:attention}mano{}" }, - after = { "después de cada {C:attention}mano{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, - buy_uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, - tarot = { "si la carta es una carta de {C:tarot}tarot{}" }, - planet = { "si la carta es una carta de {C:planet}planeta{}" }, - spectral = { "si la carta es una carta {C:spectral}espectral{}" }, - joker = { "si la carta es un {C:attention}comodín{}" }, - suit = { "si la carta es de {V:1}#3#{}" }, - rank = { "si la carta es un {C:attention}#3#{}" }, - face = { "si la carta es una carta de {C:attention}figura{}" }, - boss = { "si la {C:attention}ciega{} es una {C:attention}ciega jefe{}" }, - non_boss = { "si la {C:attention}ciega{} es una {C:attention}ciega no-jefe{}" }, - small = { "si la {C:attention}ciega{} es una {C:attention}ciega pequeña{}" }, - big = { "si la {C:attention}ciega{} es una {C:attention}ciega grande{}" }, - first = { "si es la {C:attention}primera mano{}" }, - last = { "si es la {C:attention}última mano{}" }, - common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, - uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, - rare = { "si es un {C:attention}comodín{} {C:red}raro{}" }, - poker_hand = { "si la mano es un(a) {C:attention}#3#{}" }, - or_more = { "si la mano contiene {C:attention}#3#{} o más cartas" }, - or_less = { "si la mano contiene {C:attention}#3#{} o menos cartas" }, - hands_left = { "si tienes #3# {C:blue}manos{} restantes al final de la ronda" }, - discards_left = { "si tienes #3# {C:red}descartes{} restantes al final de la ronda" }, - first_discard = { "si es el {C:attention}primer descarte{}" }, - last_discard = { "si es el {C:attention}último descarte{}" }, - odds = { "con {C:green}#4# {C:green}en {C:green}#3#{} probabilidades" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# fichas"}, - a_powmult = {"^#1# multi"}, - a_powchips = {"^#1# fichas"}, - a_powmultchips = {"^#1# multi+fichas"}, - a_round = {"+#1# ronda"}, - a_candy = {"+#1# Candy"}, - a_xchips_minus = {"-X#1# fichas"}, - a_powmult_minus = {"-^#1# multi"}, - a_powchips_minus = {"-^#1# fichas"}, - a_powmultchips_minus = {"-^#1# multi+fichas"}, - a_round_minus = {"-#1# ronda"}, + cry_sticker_name = { "Pegatina #1#" }, + cry_sticker_desc = { + "Usaste este comodín", + "para ganaer en la dificultad #2##1#", + "#2#Pozo#3#", + }, - a_tag = {"#1# etiqueta"}, - a_tags = {"#1# etiquetas"}, - - cry_sticker_name = {"Pegatina #1#"}, - cry_sticker_desc = { - "Usaste este comodín", - "para ganaer en la dificultad #2##1#", - "#2#Pozo#3#" - }, - - cry_art = {"Arte: #1#"}, - cry_code = {"Código: #1#"}, - cry_idea = {"Idea: #1#"} - - }, - v_text = { - ch_c_cry_all_perishable = {"Todos los comodines son {C:eternal}Perecederos{}"}, - ch_c_cry_all_rental = {"Todos los comodines son {C:eternal}de Alquiler{}"}, - ch_c_cry_all_pinned = {"Todos los comodines son {C:eternal}Fijados{}"}, - ch_c_cry_all_banana = {"Todos los comodines son {C:eternal}Banana{}"}, - ch_c_all_rnj = {"Todos los comodines son {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"Todos los objetos comprables tienen todas las pegatinas"}, - ch_c_cry_rush_hour = {"Todas las ciegas jefe son {C:attention}El reloj{} or {C:attention}Ciclo lavanda"}, - ch_c_cry_rush_hour_ii = {"Todas las ciegas son {C:attention}ciegas jefe{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}El reloj{} y {C:attention}Ciclo lavanda{} aumentan el {C:attention}doble{} de rápido"}, - ch_c_cry_no_tags = {"Saltar ciegas no está {C:attention}permitido{}"}, - ch_c_cry_no_vouchers = {"Los {C:attention}vales{} ya no aparecen en la tienda"}, - ch_c_cry_no_boosters = {"Los {C:attention}paquetes potenciadores{} ya no aparecen en la tienda"}, - ch_c_cry_no_rerolls = {"Las renovaciones no están {C:attention}permitidas{}"}, - ch_c_cry_no_consumables = {"Los {C:attention}consumibles{} ya no aparecen"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + cry_art = { "Arte: #1#" }, + cry_code = { "Código: #1#" }, + cry_idea = { "Idea: #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "Todos los comodines son {C:eternal}Perecederos{}" }, + ch_c_cry_all_rental = { "Todos los comodines son {C:eternal}de Alquiler{}" }, + ch_c_cry_all_pinned = { "Todos los comodines son {C:eternal}Fijados{}" }, + ch_c_cry_all_banana = { "Todos los comodines son {C:eternal}Banana{}" }, + ch_c_all_rnj = { "Todos los comodines son {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "Todos los objetos comprables tienen todas las pegatinas" }, + ch_c_cry_rush_hour = { "Todas las ciegas jefe son {C:attention}El reloj{} or {C:attention}Ciclo lavanda" }, + ch_c_cry_rush_hour_ii = { "Todas las ciegas son {C:attention}ciegas jefe{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}El reloj{} y {C:attention}Ciclo lavanda{} aumentan el {C:attention}doble{} de rápido", + }, + ch_c_cry_no_tags = { "Saltar ciegas no está {C:attention}permitido{}" }, + ch_c_cry_no_vouchers = { "Los {C:attention}vales{} ya no aparecen en la tienda" }, + ch_c_cry_no_boosters = { "Los {C:attention}paquetes potenciadores{} ya no aparecen en la tienda" }, + ch_c_cry_no_rerolls = { "Las renovaciones no están {C:attention}permitidas{}" }, + ch_c_cry_no_consumables = { "Los {C:attention}consumibles{} ya no aparecen" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/es_ES.lua b/Cryptid/localization/es_ES.lua index f7e693b..d07ae93 100644 --- a/Cryptid/localization/es_ES.lua +++ b/Cryptid/localization/es_ES.lua @@ -1,30 +1,30 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Baraja de antimateria", - text = { - "Aplica las {C:legendary,E:1}ventajas{}", - "de {C:attention}todas{} las barajas", - }, - }, - b_cry_beta = { - name = "Baraja nostálgica", - text = { - "Las ranuras de {C:attention}comodín{} y", - "{C:attention}consumibles{} se {C:attention}combinan", - "Las ciegas {C:attention}nostálgicas{} reemplazan", - "sus ciegas actualizadas" - }, - }, - b_cry_blank = { - name = "Baraja en blanco", - text = { - "{C:inactive}¿No hace nada?", - }, - }, + descriptions = { + Back = { + b_cry_antimatter = { + name = "Baraja de antimateria", + text = { + "Aplica las {C:legendary,E:1}ventajas{}", + "de {C:attention}todas{} las barajas", + }, + }, + b_cry_beta = { + name = "Baraja nostálgica", + text = { + "Las ranuras de {C:attention}comodín{} y", + "{C:attention}consumibles{} se {C:attention}combinan", + "Las ciegas {C:attention}nostálgicas{} reemplazan", + "sus ciegas actualizadas", + }, + }, + b_cry_blank = { + name = "Baraja en blanco", + text = { + "{C:inactive}¿No hace nada?", + }, + }, b_cry_bountiful = { name = "Baraja abundante", text = { @@ -32,359 +32,359 @@ return { "de cada {C:attention}mano jugada{} o {C:attention}descarte{}", }, }, - b_cry_CCD = { - name = "Baraja CCD", - text = { - "Todas las cartas también son", - "un consumible {C:attention}aleatorio{}", - }, - }, - b_cry_conveyor = { - name = "Baraja transportadora", - text = { - "Los comodines {C:attention}no{} se pueden mover", - "Al principio de la runda,", - "{C:attention}duplica{} el comodín del extremo derecho", - "y {C:attention}destruye{} el comodín del extremo izquierdo", - }, - }, - b_cry_critical = { - name = "Baraja crítica", - text = { - "Después de cada mano jugada,", - "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", - "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", - }, - }, - b_cry_encoded = { - name = "Baraja codificada", - text = { - "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", - "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", - "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", - }, - }, - b_cry_equilibrium = { - name = "Baraja de equilibrio", - text = { - "Todas las cartas tienen la ", - "{C:attention}misma probabilidad{} de", - "aparecer en las tiendas,", - "comienza la partida con", - "{C:attention,T:v_overstock_plus}Excedente plus", - }, - }, - b_cry_glowing = { - name = "Baraja brillante", - text = { - "Multiplica los valores de", - "todos los comodines por {X:dark_edition,C:white} X1.25 {}", - "cuando se derrota a la {C:attention}ciega jefe{}", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Baraja infinita", - text = { - "Puedes seleccionar {C:attention}cualquier", - "cantidad de cartas", - "{C:attention}+1{} tamaño de mano", - }, - }, - b_cry_misprint = { - name = "Baraja de errata", - text = { - "Los valures de cartas", - "y manos de póker", - "se {C:attention}aleatorizan", - }, - }, - b_cry_redeemed = { - name = "Baraja redimida", - text = { - "Cuando se compra un {C:attention}vale{},", - "obtén sus {C:attention}niveles extras", - }, - }, - b_cry_spooky = { - name = "Baraja espeluznante", - text = { - "Comienza con un {C:attention,T:j_cry_chocolate_dice}Dado de chocolate {C:eternal}eterno{}", - "Después de cada {C:attention}apuesta{}, crea un comodín", - "de {C:cry_candy}dulce{} o {X:cry_cursed,C:white}maldito{}", - } - }, - b_cry_very_fair = { - name = "Baraja Muy Justa", - text = { - "{C:blue}-2{} manos, {C:red}-2{} descartes", - "en cada ronda", - "Los {C:attention}vales{} ya no", - "aparecen en la tienda", - }, - }, - b_cry_wormhole = { - name = "Baraja de agujero de gusano", - text = { - "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", - "Los comodines son {C:attention}20X{} más", - "probables de ser {C:dark_edition}Negativos", - "{C:attention}-2{} ranuras de comodín", - }, - }, - b_cry_legendary = { - name = "Baraja legendaria", - text = { - "Comienza con un comodín {C:legendary}legendario{C:legendary}", - "{C:green}1 en 5{} probabilidades para crear otro", + b_cry_CCD = { + name = "Baraja CCD", + text = { + "Todas las cartas también son", + "un consumible {C:attention}aleatorio{}", + }, + }, + b_cry_conveyor = { + name = "Baraja transportadora", + text = { + "Los comodines {C:attention}no{} se pueden mover", + "Al principio de la runda,", + "{C:attention}duplica{} el comodín del extremo derecho", + "y {C:attention}destruye{} el comodín del extremo izquierdo", + }, + }, + b_cry_critical = { + name = "Baraja crítica", + text = { + "Después de cada mano jugada,", + "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", + "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", + }, + }, + b_cry_encoded = { + name = "Baraja codificada", + text = { + "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", + "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", + "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", + }, + }, + b_cry_equilibrium = { + name = "Baraja de equilibrio", + text = { + "Todas las cartas tienen la ", + "{C:attention}misma probabilidad{} de", + "aparecer en las tiendas,", + "comienza la partida con", + "{C:attention,T:v_overstock_plus}Excedente plus", + }, + }, + b_cry_glowing = { + name = "Baraja brillante", + text = { + "Multiplica los valores de", + "todos los comodines por {X:dark_edition,C:white} X1.25 {}", + "cuando se derrota a la {C:attention}ciega jefe{}", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Baraja infinita", + text = { + "Puedes seleccionar {C:attention}cualquier", + "cantidad de cartas", + "{C:attention}+1{} tamaño de mano", + }, + }, + b_cry_misprint = { + name = "Baraja de errata", + text = { + "Los valures de cartas", + "y manos de póker", + "se {C:attention}aleatorizan", + }, + }, + b_cry_redeemed = { + name = "Baraja redimida", + text = { + "Cuando se compra un {C:attention}vale{},", + "obtén sus {C:attention}niveles extras", + }, + }, + b_cry_spooky = { + name = "Baraja espeluznante", + text = { + "Comienza con un {C:attention,T:j_cry_chocolate_dice}Dado de chocolate {C:eternal}eterno{}", + "Después de cada {C:attention}apuesta{}, crea un comodín", + "de {C:cry_candy}dulce{} o {X:cry_cursed,C:white}maldito{}", + }, + }, + b_cry_very_fair = { + name = "Baraja Muy Justa", + text = { + "{C:blue}-2{} manos, {C:red}-2{} descartes", + "en cada ronda", + "Los {C:attention}vales{} ya no", + "aparecen en la tienda", + }, + }, + b_cry_wormhole = { + name = "Baraja de agujero de gusano", + text = { + "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", + "Los comodines son {C:attention}20X{} más", + "probables de ser {C:dark_edition}Negativos", + "{C:attention}-2{} ranuras de comodín", + }, + }, + b_cry_legendary = { + name = "Baraja legendaria", + text = { + "Comienza con un comodín {C:legendary}legendario{C:legendary}", + "{C:green}1 en 5{} probabilidades para crear otro", "cuando se derrota a la ciega jefe", - "{C:inactive}(debe haber espacio){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "La caja", - text = { - "Todos los comodines comunes", - "se debilitan", - }, - }, - bl_cry_clock = { - name = "El reloj", - text = { - "+0.1X requisitos de ciega por cada", - "3 segundos pasados en esta apuesta", - }, - }, - bl_cry_hammer = { - name = "El martillo", - text = { - "Todas las cartas con rango", - "impar se debilitan", - }, - }, - bl_cry_joke = { - name = "La broma", - text = { - "Si la puntuación excede 2X de los requisitos,", - "establece la apuesta a un múltiplo de #1#", - }, - }, - bl_cry_magic = { - name = "La magia", - text = { - "Todas las cartas con rango", - "par se debilitan", - }, - }, - bl_cry_lavender_loop = { - name = "Ciclo lavanda", - text = { - "1.25X requisitos de ciega por cada", - "1.5 segundos pasados en esta ronda", - }, - }, - bl_cry_obsidian_orb = { - name = "Orbe obsidiana", - text = { - "Aplica las habilidades de", - "todos los jefes derrotados", - }, - }, - bl_cry_oldarm = { - name = "El brazo nostálgico", - text = { - "Debes jugar 4", - "o menos cartas", - }, - }, - bl_cry_oldfish = { - name = "El pez nostálgico", - text = { - "Todas las manos empiezan", - "con 1 multi", - }, - }, - bl_cry_oldflint = { - name = "El pedernal nostálgico", - text = { - "Sin colores", - }, - }, - bl_cry_oldhouse = { - name = "La casa nostálgica", - text = { - "Sin fulls", - }, - }, - bl_cry_oldmanacle = { - name = "El grillete nostálgico", - text = { - "Divide multi por descartes", - }, - }, - bl_cry_oldmark = { - name = "La marca nostálgica", - text = { - "Sin manos que", - "contengan una Pareja", - }, - }, - bl_cry_oldox = { - name = "El buey nostálgico", - text = { - "Todas las manos empiezan", - "con 0 fichas", - }, - }, - bl_cry_oldpillar = { - name = "El pilar nostálgico", - text = { - "Sin escaleras", - }, - }, - bl_cry_oldserpent = { - name = "La serpiente nostálgica", - text = { - "Divide multi por el nivel", - "de la mano de póker jugada", - }, - }, - bl_cry_pin = { - name = "El alfiler", - text = { - "Los comodines épicos o de mayor", - "rareza se debilitan", - }, - }, - bl_cry_pinkbow = { - name = "Moño rosado", - text = { - "Aleatoriza la categoría de las cartas", - "en tu mano al jugar", - }, - }, - bl_cry_sapphire_stamp = { - name = "Estampilla safiro", - text = { - "Selecciona una carta extra, deselecciona", - "una carta aleatoria antes de puntuar", - }, - }, - bl_cry_shackle = { - name = "El eslabón", - text = { - "Todos los comodines negativos", - "se debilitan", - }, - }, - bl_cry_striker = { - name = "El ariete", - text = { - "Todos los comodines raros", - "se debilitan", - }, - }, - bl_cry_tax = { - name = "El impuesto", - text = { - "Puntuación por mano limitado a", - "0.4X requisitos de ciega", - }, - }, - bl_cry_tornado = { - name = "Tornado turquesa", - text = { - "#1# en #2# probabilidades para", - "que la mano jugada no puntúe", - }, - }, - bl_cry_trick = { - name = "El truco", - text = { - "Después de cada mano, voltea todas", - "las cartas boca-arriba en tu mano", - }, - }, - bl_cry_vermillion_virus = { - name = "Virus bermellón", - text = { - "Se reemplaza un comodín", - "al azar en cada mano", - }, - }, - bl_cry_windmill = { - name = "El molino", - text = { - "Todos los comodines inusuales", - "se debilitan", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASE", - text = { - "Convierte {C:cry_code}#1#{} carta seleccionada", - "a una mejora {C:cry_code}a elección{}", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destruye un comodín {C:cry_code}seleccionado{},", - "crea un comodín {C:cry_code}nuevo{}", - "de la {C:cry_code}misma rareza", - }, - }, - c_cry_crash = { - name = "://CHOQUE", - text = { - "{C:cry_code,E:1}No.", - }, - }, - c_cry_ctrl_v = { - name = "://CTRL+V", - text = { - "Crea una {C:cry_code}copia{} de un {C:cry_code}comodín{},", - "carta de juego, o consumible seleccionado" - }, - }, - c_cry_delete = { - name = "://ELIMINAR", - text = { - "Remueve {C:cry_code}permanentemente{} un", - "objeto {C:cry_code}seleccionado{} de la tienda", - "{C:inactive,s:0.8}El objeto no puede aparecer otra vez en esta partida", - }, - }, - c_cry_divide = { - name = "://DIVIDIR", - text = { - "{C:cry_code}Divide en 2{} todos los precios", - "listados en la tienda actual", - }, - }, - c_cry_exploit = { - name = "://EXPLOTAR", - text = { - "Cualquier mano jugada se considera que", - "{C:cry_code}contiene{} una mano de póker {C:cry_code}a elección{},", - "se reinicia al final de la ronda", - "{C:inactive,s:0.8}Las manos secretas deben ser", - "{C:inactive,s:0.8}descubiertas para ser válidas", - }, - }, - c_cry_hook = { - name = "ENGANCHAR://", - text = { - "Selecciona dos comodines para {C:cry_code}engancharlos", - "{C:inactive,s:0.8}Sólo funciona correctamente si los", - "{C:inactive,s:0.8}comodines se activan en el mismo contexto,", - "{C:inactive,s:0.8}(ej. Comodín y El dúo (ambos después de puntuar))", - }, - }, + "{C:inactive}(debe haber espacio){}", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "La caja", + text = { + "Todos los comodines comunes", + "se debilitan", + }, + }, + bl_cry_clock = { + name = "El reloj", + text = { + "+0.1X requisitos de ciega por cada", + "3 segundos pasados en esta apuesta", + }, + }, + bl_cry_hammer = { + name = "El martillo", + text = { + "Todas las cartas con rango", + "impar se debilitan", + }, + }, + bl_cry_joke = { + name = "La broma", + text = { + "Si la puntuación excede 2X de los requisitos,", + "establece la apuesta a un múltiplo de #1#", + }, + }, + bl_cry_magic = { + name = "La magia", + text = { + "Todas las cartas con rango", + "par se debilitan", + }, + }, + bl_cry_lavender_loop = { + name = "Ciclo lavanda", + text = { + "1.25X requisitos de ciega por cada", + "1.5 segundos pasados en esta ronda", + }, + }, + bl_cry_obsidian_orb = { + name = "Orbe obsidiana", + text = { + "Aplica las habilidades de", + "todos los jefes derrotados", + }, + }, + bl_cry_oldarm = { + name = "El brazo nostálgico", + text = { + "Debes jugar 4", + "o menos cartas", + }, + }, + bl_cry_oldfish = { + name = "El pez nostálgico", + text = { + "Todas las manos empiezan", + "con 1 multi", + }, + }, + bl_cry_oldflint = { + name = "El pedernal nostálgico", + text = { + "Sin colores", + }, + }, + bl_cry_oldhouse = { + name = "La casa nostálgica", + text = { + "Sin fulls", + }, + }, + bl_cry_oldmanacle = { + name = "El grillete nostálgico", + text = { + "Divide multi por descartes", + }, + }, + bl_cry_oldmark = { + name = "La marca nostálgica", + text = { + "Sin manos que", + "contengan una Pareja", + }, + }, + bl_cry_oldox = { + name = "El buey nostálgico", + text = { + "Todas las manos empiezan", + "con 0 fichas", + }, + }, + bl_cry_oldpillar = { + name = "El pilar nostálgico", + text = { + "Sin escaleras", + }, + }, + bl_cry_oldserpent = { + name = "La serpiente nostálgica", + text = { + "Divide multi por el nivel", + "de la mano de póker jugada", + }, + }, + bl_cry_pin = { + name = "El alfiler", + text = { + "Los comodines épicos o de mayor", + "rareza se debilitan", + }, + }, + bl_cry_pinkbow = { + name = "Moño rosado", + text = { + "Aleatoriza la categoría de las cartas", + "en tu mano al jugar", + }, + }, + bl_cry_sapphire_stamp = { + name = "Estampilla safiro", + text = { + "Selecciona una carta extra, deselecciona", + "una carta aleatoria antes de puntuar", + }, + }, + bl_cry_shackle = { + name = "El eslabón", + text = { + "Todos los comodines negativos", + "se debilitan", + }, + }, + bl_cry_striker = { + name = "El ariete", + text = { + "Todos los comodines raros", + "se debilitan", + }, + }, + bl_cry_tax = { + name = "El impuesto", + text = { + "Puntuación por mano limitado a", + "0.4X requisitos de ciega", + }, + }, + bl_cry_tornado = { + name = "Tornado turquesa", + text = { + "#1# en #2# probabilidades para", + "que la mano jugada no puntúe", + }, + }, + bl_cry_trick = { + name = "El truco", + text = { + "Después de cada mano, voltea todas", + "las cartas boca-arriba en tu mano", + }, + }, + bl_cry_vermillion_virus = { + name = "Virus bermellón", + text = { + "Se reemplaza un comodín", + "al azar en cada mano", + }, + }, + bl_cry_windmill = { + name = "El molino", + text = { + "Todos los comodines inusuales", + "se debilitan", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASE", + text = { + "Convierte {C:cry_code}#1#{} carta seleccionada", + "a una mejora {C:cry_code}a elección{}", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destruye un comodín {C:cry_code}seleccionado{},", + "crea un comodín {C:cry_code}nuevo{}", + "de la {C:cry_code}misma rareza", + }, + }, + c_cry_crash = { + name = "://CHOQUE", + text = { + "{C:cry_code,E:1}No.", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Crea una {C:cry_code}copia{} de un {C:cry_code}comodín{},", + "carta de juego, o consumible seleccionado", + }, + }, + c_cry_delete = { + name = "://ELIMINAR", + text = { + "Remueve {C:cry_code}permanentemente{} un", + "objeto {C:cry_code}seleccionado{} de la tienda", + "{C:inactive,s:0.8}El objeto no puede aparecer otra vez en esta partida", + }, + }, + c_cry_divide = { + name = "://DIVIDIR", + text = { + "{C:cry_code}Divide en 2{} todos los precios", + "listados en la tienda actual", + }, + }, + c_cry_exploit = { + name = "://EXPLOTAR", + text = { + "Cualquier mano jugada se considera que", + "{C:cry_code}contiene{} una mano de póker {C:cry_code}a elección{},", + "se reinicia al final de la ronda", + "{C:inactive,s:0.8}Las manos secretas deben ser", + "{C:inactive,s:0.8}descubiertas para ser válidas", + }, + }, + c_cry_hook = { + name = "ENGANCHAR://", + text = { + "Selecciona dos comodines para {C:cry_code}engancharlos", + "{C:inactive,s:0.8}Sólo funciona correctamente si los", + "{C:inactive,s:0.8}comodines se activan en el mismo contexto,", + "{C:inactive,s:0.8}(ej. Comodín y El dúo (ambos después de puntuar))", + }, + }, c_cry_inst = { name = "://INSTANCIAR", text = { @@ -394,1590 +394,1591 @@ return { }, }, - c_cry_machinecode = { - name = "://CÓDIGOMÁQUINA", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { - "Añade {C:dark_edition}Erróneo{} a todas", - "las cartas {C:cry_code}en tu mano" }, - }, - c_cry_merge = { - name = "://FUNDIR", - text = { - "Combina un {C:cry_code}consumible{} seleccionado", - "con una {C:cry_code}carta de juego{} seleccionada", - }, - }, - c_cry_multiply = { - name = "://MULTIPLICAR", - text = { - "{C:cry_code}Duplica{} todos los valores de", - "un {C:cry_code}comodín{} seleccionado hasta", - "el final de la ronda", - }, - }, - c_cry_patch = { - name = "://PATCH", - text = { - "Rehabilita y remueve todas las pegatinas", - "de todos los objetos visibles", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "La siguiente ciega derrotada", - "entrega {C:cry_code}X#1#{} interés", - }, - }, - c_cry_oboe = { - name = "://PORUNPASO", - text = { - "El siguiente {C:cry_code}paquete potenciador{} contiene", - "{C:cry_code}#1#{} carta adicional y", - "{C:cry_code}#1#{} opción adicional", - "{C:inactive}(Actual: {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REINICIAR", - text = { - "Reobtiene tus {C:blue}manos{} y {C:red}descartes{},", - "devuelve {C:cry_code}todas{} las cartas a la baraja", - "y saca una {C:cry_code}nueva{} mano", - }, - }, - c_cry_revert = { - name = "://REVERTIR", - text = { - "Establece el {C:cry_code}estado de juego{} al", - "inicio de {C:cry_code}esta apuesta{}", - }, - }, - c_cry_rework = { - name = "://REHACER", - text = { - "Destruye un comodín {C:cry_code}seleccionado{},", - "crea una {C:cry_code}Etiqueta de retrabajo{} con", - "una edición {C:cry_code}mejorada{}", - "{C:inactive,s:0.8}Se mejora usando el orden en la colección", - }, - }, - c_cry_run = { - name = "://CORRER", - text = { - "Visita una {C:cry_code}tienda", - "durante una {C:cry_code}ciega", - }, - }, - c_cry_seed = { - name = "://SEMILLA", - text = { - "Selecciona un comodín", - "o carta de juego", - "para volverla {C:cry_code}amañada", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { - "Termina la {C:cry_code}ciega{} no-jefe actual", - "{C:cry_code}sin{} obtener dinero" - }, - }, - c_cry_spaghetti = { - name = "://ESPAGUETI", - text = { - "Crea un comodín de comida", - "{C:cry_code}erróneo", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convierte {C:cry_code}#1#{} cartas seleccionadas", - "a una categoría {C:cry_code}a elección{}", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} multi", - }, - }, - e_cry_blur = { - name = "Borrosa", - text = { - "{C:attention}Reactiva{} esta", - "carta {C:attention}1{} vez", - "{C:green}#1# en #2#{} probabilidades", - "para reactivar {C:attention}#3#{}", - "vez más", - }, - }, - e_cry_double_sided = { - name = "Doble cara", - text = { - "Esta carta puede ser", - "{C:attention}volteada{} para revelar", - "una carta diferente", - "{C:inactive}(El lado en blanco puede", + c_cry_machinecode = { + name = "://CÓDIGOMÁQUINA", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { + "Añade {C:dark_edition}Erróneo{} a todas", + "las cartas {C:cry_code}en tu mano", + }, + }, + c_cry_merge = { + name = "://FUNDIR", + text = { + "Combina un {C:cry_code}consumible{} seleccionado", + "con una {C:cry_code}carta de juego{} seleccionada", + }, + }, + c_cry_multiply = { + name = "://MULTIPLICAR", + text = { + "{C:cry_code}Duplica{} todos los valores de", + "un {C:cry_code}comodín{} seleccionado hasta", + "el final de la ronda", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Rehabilita y remueve todas las pegatinas", + "de todos los objetos visibles", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "La siguiente ciega derrotada", + "entrega {C:cry_code}X#1#{} interés", + }, + }, + c_cry_oboe = { + name = "://PORUNPASO", + text = { + "El siguiente {C:cry_code}paquete potenciador{} contiene", + "{C:cry_code}#1#{} carta adicional y", + "{C:cry_code}#1#{} opción adicional", + "{C:inactive}(Actual: {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REINICIAR", + text = { + "Reobtiene tus {C:blue}manos{} y {C:red}descartes{},", + "devuelve {C:cry_code}todas{} las cartas a la baraja", + "y saca una {C:cry_code}nueva{} mano", + }, + }, + c_cry_revert = { + name = "://REVERTIR", + text = { + "Establece el {C:cry_code}estado de juego{} al", + "inicio de {C:cry_code}esta apuesta{}", + }, + }, + c_cry_rework = { + name = "://REHACER", + text = { + "Destruye un comodín {C:cry_code}seleccionado{},", + "crea una {C:cry_code}Etiqueta de retrabajo{} con", + "una edición {C:cry_code}mejorada{}", + "{C:inactive,s:0.8}Se mejora usando el orden en la colección", + }, + }, + c_cry_run = { + name = "://CORRER", + text = { + "Visita una {C:cry_code}tienda", + "durante una {C:cry_code}ciega", + }, + }, + c_cry_seed = { + name = "://SEMILLA", + text = { + "Selecciona un comodín", + "o carta de juego", + "para volverla {C:cry_code}amañada", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { + "Termina la {C:cry_code}ciega{} no-jefe actual", + "{C:cry_code}sin{} obtener dinero", + }, + }, + c_cry_spaghetti = { + name = "://ESPAGUETI", + text = { + "Crea un comodín de comida", + "{C:cry_code}erróneo", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convierte {C:cry_code}#1#{} cartas seleccionadas", + "a una categoría {C:cry_code}a elección{}", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} multi", + }, + }, + e_cry_blur = { + name = "Borrosa", + text = { + "{C:attention}Reactiva{} esta", + "carta {C:attention}1{} vez", + "{C:green}#1# en #2#{} probabilidades", + "para reactivar {C:attention}#3#{}", + "vez más", + }, + }, + e_cry_double_sided = { + name = "Doble cara", + text = { + "Esta carta puede ser", + "{C:attention}volteada{} para revelar", + "una carta diferente", + "{C:inactive}(El lado en blanco puede", "{C:inactive}combinarse con otra carta)", - }, - }, - e_cry_glass = { - name = "Frágil", - label = "Frágil", - text = { - "{C:white,X:mult} X#3# {} multi", - "{C:green}#1# en #2#{} probabilidades que", - "esta carta no sea {C:red}destruida", - "al activarse", - }, - }, - e_cry_glitched = { - name = "Errónea", - text = { - "Todos los valores en esta carta", - "son {C:dark_edition}aleatorizados{}", - "entre {C:attention}X0.1{} y {C:attention}X10{}", - "{C:inactive}(si es posible){}", - }, - }, - e_cry_gold = { - name = "Dorada", - label = "Dorada", - text = { - "Gana {C:money}$#1#{} cuando se usa", - "o activa", - }, - }, - e_cry_m = { - name = "Contenta", - text = { - "{C:mult}+#1#{} multi", - "Esta carta se siente", - "bastante {C:attention}contenta{}", - }, - }, - e_cry_mosaic = { - name = "Mosaico", - text = { - "{X:chips,C:white} X#1# {} fichas", - }, - }, - e_cry_noisy = { - name = "Ruidosa", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Sobresaturada", - text = { - "Todos los valores", - "en esta carta", - "son {C:attention}duplicados{}", - "{C:inactive}(si es posible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Carta de eco", - text = { - "{C:green}#2# en #3#{} probabilidades de", - "{C:attention}reactivar{} #1# veces", - "adicionales al puntuar", - }, - }, - }, - Joker = { - j_cry_adroit = { - name = "Comodín hábil", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_altgoogol = { - name = "Carta de Googol Play nostálgica", - text = { - "Vende esta carta para crear", - "{C:attention}2{} copias del {C:attention}Joker{} del extremo izquierdo", - "{C:inactive,s:0.8}No copia otras Cartas de Googol Play nostálgicas{}", - }, - }, - j_cry_antennastoheaven = { - name = "...como antenas al cielo", - text = { - "Este comodín consigue", - "{X:chips,C:white} X#1# {} fichas cuando cada", - "{C:attention}7{} o {C:attention}4{} jugado puntúa", - "{C:inactive}(Actual: {X:chips,C:white}X#2# {C:inactive} fichas)", - }, - }, - j_cry_apjoker = { - name = "Comodín AP", - text = { "{X:mult,C:white} X#1# {} multi contra las {C:attention}ciegas jefe{}" }, - }, - j_cry_astral_bottle = { - name = "Astral en una botella", - text = { - "Al venderse, aplica {C:dark_edition}Astral{}", - "y {C:attention}Perecedero{} a", - "un {C:attention}comodín{} aleatorio", - } - }, + }, + }, + e_cry_glass = { + name = "Frágil", + label = "Frágil", + text = { + "{C:white,X:mult} X#3# {} multi", + "{C:green}#1# en #2#{} probabilidades que", + "esta carta no sea {C:red}destruida", + "al activarse", + }, + }, + e_cry_glitched = { + name = "Errónea", + text = { + "Todos los valores en esta carta", + "son {C:dark_edition}aleatorizados{}", + "entre {C:attention}X0.1{} y {C:attention}X10{}", + "{C:inactive}(si es posible){}", + }, + }, + e_cry_gold = { + name = "Dorada", + label = "Dorada", + text = { + "Gana {C:money}$#1#{} cuando se usa", + "o activa", + }, + }, + e_cry_m = { + name = "Contenta", + text = { + "{C:mult}+#1#{} multi", + "Esta carta se siente", + "bastante {C:attention}contenta{}", + }, + }, + e_cry_mosaic = { + name = "Mosaico", + text = { + "{X:chips,C:white} X#1# {} fichas", + }, + }, + e_cry_noisy = { + name = "Ruidosa", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Sobresaturada", + text = { + "Todos los valores", + "en esta carta", + "son {C:attention}duplicados{}", + "{C:inactive}(si es posible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Carta de eco", + text = { + "{C:green}#2# en #3#{} probabilidades de", + "{C:attention}reactivar{} #1# veces", + "adicionales al puntuar", + }, + }, + }, + Joker = { + j_cry_adroit = { + name = "Comodín hábil", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_altgoogol = { + name = "Carta de Googol Play nostálgica", + text = { + "Vende esta carta para crear", + "{C:attention}2{} copias del {C:attention}Joker{} del extremo izquierdo", + "{C:inactive,s:0.8}No copia otras Cartas de Googol Play nostálgicas{}", + }, + }, + j_cry_antennastoheaven = { + name = "...como antenas al cielo", + text = { + "Este comodín consigue", + "{X:chips,C:white} X#1# {} fichas cuando cada", + "{C:attention}7{} o {C:attention}4{} jugado puntúa", + "{C:inactive}(Actual: {X:chips,C:white}X#2# {C:inactive} fichas)", + }, + }, + j_cry_apjoker = { + name = "Comodín AP", + text = { "{X:mult,C:white} X#1# {} multi contra las {C:attention}ciegas jefe{}" }, + }, + j_cry_astral_bottle = { + name = "Astral en una botella", + text = { + "Al venderse, aplica {C:dark_edition}Astral{}", + "y {C:attention}Perecedero{} a", + "un {C:attention}comodín{} aleatorio", + }, + }, - j_cry_big_cube = { - name = "Cubo grande", - text = { - "{X:chips,C:white} X#1# {} fichas", - }, - }, - j_cry_biggestm = { - name = "Gigante", - text = { - "{X:mult,C:white} X#1# {} multi hasta el final", - "de la ronda si la {C:attention}mano de póker{}", - "es una {C:attention}#2#{}", - "{C:inactive}(Actual: {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}no es obeso, sólo de huesos grandes.", - }, - }, - j_cry_blacklist = { - name = "Lista negra", - text = { - "Si un {C:attention}#1#{} se juega o está en tu mano,", - "establece {C:chips}fichas{} y {C:mult}multi{} a 0", - "{C:red,E:2}se autodestruye{} si no hay un {C:attention}#1#{} en la baraja", - "{C:inactive,s:0.8}La categoría no cambia" - } - }, - j_cry_blender = { - name = "Blender", - text = { - "Crea un consumible", - "{C:attention}aleatorio{} cuando una", - "carta de {C:cry_code}código{} es usada", - "{C:inactive}(debe haber espacio){}", - }, - }, - j_cry_blurred = { - name = "Comodín borroso", - text = { - "Obtén {C:blue}+#1#{} mano(s) al", - "seleccionar una {C:attention}ciega{}", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Cada {C:attention}comodín{} da {C:chips}+#1#{} fichas", - "aumenta la cantidad por {C:chips}+#2#{} si la ", - "{C:attention}mano de póker{} es una {C:attention}#3#{}", - "{C:inactive,s:0.8}Los comodines contentos dan{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}fichas{}", - }, - }, - j_cry_bonkers = { - name = "Comodín trastornado", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_bonusjoker = { - name = "Comodín adicional", - text = { - "{C:green}#1# en #2#{} probabilidades por cada", - "carta {C:attention}adicional{} jugada para aumentar", - "ranuras de {C:attention}comodín{} o {C:attention}consumible", - "por {C:dark_edition}1{} al puntuar", - "{C:red}Funciona 2 veces por runda", - "{C:inactive,s:0.8}(probabilidad igual por cada uno){}", - }, - }, - j_cry_booster = { - name = "Comodín potenciador", - text = { - "{C:attention}+#1#{} ranura de paquete potenciador", - "disponible en la tienda", - }, - }, - j_cry_boredom = { - name = "Aburrimiento", - text = { - "{C:green}#1# en #2#{} probabilidades para", - "{C:attention}reactivar{} cada {C:attention}comodín{}", - "o {C:attention}carta jugada{}", - "{C:inactive,s:0.8}No afecta otros Aburrimientos{}", - }, - }, - j_cry_brittle = { - name = "Dulce frágil", - text = { - "Por las siguientes {C:attention}#1#{} manos,", - "añade {C:attention}Piedra{}, {C:attention}Oro{}, o {C:attention}Acero{} a", - "la carta del extremo derecho que puntúa" - } - }, - j_cry_bubblem = { - name = "Burbuja M", - text = { - "Crea un {C:attention}Comodín contento{} {C:dark_edition}laminado", - "si la mano jugada contiene", - "un {C:attention}#1#{}", - "{C:red,E:2}se autodestruye{}", - }, - }, - j_cry_busdriver = { - name = "Conductor de bus", - text = { - "{C:green}#1# en #3#{} probabilidades", - "para {C:mult}+#2#{} multi", - "{C:green}1 en 4{} probabilidades", - "para {C:mult}-#2#{} multi", - }, - }, - j_cry_candy_basket = { - name = "Cesta de dulces", - text = { - "Vende esta carta para crear {C:attention}#1#{} {C:cry_candy}dulces", - "{C:attention}+#2#{} {C:cry_candy}dulce{} cada {C:attention}2{} ciegas derrotadas", - "{C:attention}+#3#{} {C:cry_candy}dulces{} al derrotar la {C:attention}ciega jefe{}" - } - }, - j_cry_candy_buttons = { - name = "Botones de dulce", - text = { - "Las siguientes {C:attention}#1#{} renovaciones", - "cuestan {C:money}$1{}", - } - }, - j_cry_candy_cane = { - name = "Bastón de dulce", - text = { - "Por las siguientes {C:attention}#1#{} rondas,", - "las cartas de juego otorgan {C:money}$#2#", - "cuando se {C:attention}reactivan" - } - }, - j_cry_candy_dagger = { - name = "Daga de dulce", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la derecha", - "para crear un {C:cry_candy}dulce{}", - } - }, - j_cry_candy_sticks = { - name = "Palos de dulce", - text = { - "El efecto de la siguiente ciega jefe se desactiva", - "hasta que hayas jugado {C:attention}#1#{} msnos", - } - }, - j_cry_canvas = { - name = "Lienzo", - text = { - "{C:attention}Reactiva{} todos los {C:attention}comodines{} a la izquierda", - "una vez por {C:attention}todos{} los {C:attention}comodines{} no-{C:blue}comunes", - "a la derecha de este comodín", - }, - }, - j_cry_caramel = { - name = "Caramelo", - text = { - "Cada carta jugada otorga", - "{X:mult,C:white}X#1#{} multi cuando puntúa", - "por las siguientes {C:attention}#2#{} rondas", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Reactiva el comodín del {C:attention}extremo izquierdo{}", - "{C:attention}#1#{} veces adicionales", - }, - }, - j_cry_chili_pepper = { - name = "Ají picante", - text = { - "Este comodín consigue {X:mult,C:white} X#2# {} multi", - "al final de la ronda,", - "{C:red,E:2}se autodestruye{} después de {C:attention}#3#{} rondas", - "{C:inactive}(Actual:{} {X:mult,C:white} X#1# {} {C:inactive}multi){}", - }, - }, - j_cry_chocolate_dice = { - name = "Dado de chocolate", - text = { - "Gira un {C:green}d10{} al derrotar", - "la {C:attention}ciega jefe{} para", - "empezar un {C:cry_ascendant,E:1}evento", - "{C:inactive}(Actual: #1#)" - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} fichas y {X:dark_edition,C:white}^#1#{} multi", - "si tienes {C:attention}exactamente{} #2#", - "manos restantes", - }, - }, - j_cry_circus = { - name = "Circo", - text = { - "Comodines {C:red}raros{} otorgan {X:mult,C:white} X#1# {} multi", - "Comodines {C:cry_epic}épicos{} otorgan {X:mult,C:white} X#2# {} multi", - "Comodines {C:legendary}legendarios{} otorgan {X:mult,C:white} X#3# {} multi", - "Comodines {C:cry_exotic}exóticos{} otorgan {X:mult,C:white} X#4# {} multi", - }, - }, - j_cry_clash = { - name = "El conflicto", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, + j_cry_big_cube = { + name = "Cubo grande", + text = { + "{X:chips,C:white} X#1# {} fichas", + }, + }, + j_cry_biggestm = { + name = "Gigante", + text = { + "{X:mult,C:white} X#1# {} multi hasta el final", + "de la ronda si la {C:attention}mano de póker{}", + "es una {C:attention}#2#{}", + "{C:inactive}(Actual: {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}no es obeso, sólo de huesos grandes.", + }, + }, + j_cry_blacklist = { + name = "Lista negra", + text = { + "Si un {C:attention}#1#{} se juega o está en tu mano,", + "establece {C:chips}fichas{} y {C:mult}multi{} a 0", + "{C:red,E:2}se autodestruye{} si no hay un {C:attention}#1#{} en la baraja", + "{C:inactive,s:0.8}La categoría no cambia", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Crea un consumible", + "{C:attention}aleatorio{} cuando una", + "carta de {C:cry_code}código{} es usada", + "{C:inactive}(debe haber espacio){}", + }, + }, + j_cry_blurred = { + name = "Comodín borroso", + text = { + "Obtén {C:blue}+#1#{} mano(s) al", + "seleccionar una {C:attention}ciega{}", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Cada {C:attention}comodín{} da {C:chips}+#1#{} fichas", + "aumenta la cantidad por {C:chips}+#2#{} si la ", + "{C:attention}mano de póker{} es una {C:attention}#3#{}", + "{C:inactive,s:0.8}Los comodines contentos dan{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}fichas{}", + }, + }, + j_cry_bonkers = { + name = "Comodín trastornado", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_bonusjoker = { + name = "Comodín adicional", + text = { + "{C:green}#1# en #2#{} probabilidades por cada", + "carta {C:attention}adicional{} jugada para aumentar", + "ranuras de {C:attention}comodín{} o {C:attention}consumible", + "por {C:dark_edition}1{} al puntuar", + "{C:red}Funciona 2 veces por runda", + "{C:inactive,s:0.8}(probabilidad igual por cada uno){}", + }, + }, + j_cry_booster = { + name = "Comodín potenciador", + text = { + "{C:attention}+#1#{} ranura de paquete potenciador", + "disponible en la tienda", + }, + }, + j_cry_boredom = { + name = "Aburrimiento", + text = { + "{C:green}#1# en #2#{} probabilidades para", + "{C:attention}reactivar{} cada {C:attention}comodín{}", + "o {C:attention}carta jugada{}", + "{C:inactive,s:0.8}No afecta otros Aburrimientos{}", + }, + }, + j_cry_brittle = { + name = "Dulce frágil", + text = { + "Por las siguientes {C:attention}#1#{} manos,", + "añade {C:attention}Piedra{}, {C:attention}Oro{}, o {C:attention}Acero{} a", + "la carta del extremo derecho que puntúa", + }, + }, + j_cry_bubblem = { + name = "Burbuja M", + text = { + "Crea un {C:attention}Comodín contento{} {C:dark_edition}laminado", + "si la mano jugada contiene", + "un {C:attention}#1#{}", + "{C:red,E:2}se autodestruye{}", + }, + }, + j_cry_busdriver = { + name = "Conductor de bus", + text = { + "{C:green}#1# en #3#{} probabilidades", + "para {C:mult}+#2#{} multi", + "{C:green}1 en 4{} probabilidades", + "para {C:mult}-#2#{} multi", + }, + }, + j_cry_candy_basket = { + name = "Cesta de dulces", + text = { + "Vende esta carta para crear {C:attention}#1#{} {C:cry_candy}dulces", + "{C:attention}+#2#{} {C:cry_candy}dulce{} cada {C:attention}2{} ciegas derrotadas", + "{C:attention}+#3#{} {C:cry_candy}dulces{} al derrotar la {C:attention}ciega jefe{}", + }, + }, + j_cry_candy_buttons = { + name = "Botones de dulce", + text = { + "Las siguientes {C:attention}#1#{} renovaciones", + "cuestan {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Bastón de dulce", + text = { + "Por las siguientes {C:attention}#1#{} rondas,", + "las cartas de juego otorgan {C:money}$#2#", + "cuando se {C:attention}reactivan", + }, + }, + j_cry_candy_dagger = { + name = "Daga de dulce", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la derecha", + "para crear un {C:cry_candy}dulce{}", + }, + }, + j_cry_candy_sticks = { + name = "Palos de dulce", + text = { + "El efecto de la siguiente ciega jefe se desactiva", + "hasta que hayas jugado {C:attention}#1#{} msnos", + }, + }, + j_cry_canvas = { + name = "Lienzo", + text = { + "{C:attention}Reactiva{} todos los {C:attention}comodines{} a la izquierda", + "una vez por {C:attention}todos{} los {C:attention}comodines{} no-{C:blue}comunes", + "a la derecha de este comodín", + }, + }, + j_cry_caramel = { + name = "Caramelo", + text = { + "Cada carta jugada otorga", + "{X:mult,C:white}X#1#{} multi cuando puntúa", + "por las siguientes {C:attention}#2#{} rondas", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Reactiva el comodín del {C:attention}extremo izquierdo{}", + "{C:attention}#1#{} veces adicionales", + }, + }, + j_cry_chili_pepper = { + name = "Ají picante", + text = { + "Este comodín consigue {X:mult,C:white} X#2# {} multi", + "al final de la ronda,", + "{C:red,E:2}se autodestruye{} después de {C:attention}#3#{} rondas", + "{C:inactive}(Actual:{} {X:mult,C:white} X#1# {} {C:inactive}multi){}", + }, + }, + j_cry_chocolate_dice = { + name = "Dado de chocolate", + text = { + "Gira un {C:green}d10{} al derrotar", + "la {C:attention}ciega jefe{} para", + "empezar un {C:cry_ascendant,E:1}evento", + "{C:inactive}(Actual: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} fichas y {X:dark_edition,C:white}^#1#{} multi", + "si tienes {C:attention}exactamente{} #2#", + "manos restantes", + }, + }, + j_cry_circus = { + name = "Circo", + text = { + "Comodines {C:red}raros{} otorgan {X:mult,C:white} X#1# {} multi", + "Comodines {C:cry_epic}épicos{} otorgan {X:mult,C:white} X#2# {} multi", + "Comodines {C:legendary}legendarios{} otorgan {X:mult,C:white} X#3# {} multi", + "Comodines {C:cry_exotic}exóticos{} otorgan {X:mult,C:white} X#4# {} multi", + }, + }, + j_cry_clash = { + name = "El conflicto", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, - j_cry_CodeJoker = { - name = "Comodín de código", - text = { - "Crea una {C:cry_code}carta de código{}", - "{C:dark_edition}negativa{} cuando se", - "selecciona una {C:attention}ciega{}", - }, - }, - j_cry_coin = { - name = "Moneda crypto", - text = { - "Gana entre", - "{C:money}$#1#{} y {C:money}$#2#{} por", - "cada comodín {C:attention}vendido{}", - }, - }, - j_cry_compound_interest = { - name = "Interés compuesto", - text = { - "Gana {C:money}#1#%{} de tu dinero total", - "al final de la ronda,", - "aumenta por {C:money}#2#%{} por cada", - "pago consecutivo", - }, - }, - j_cry_copypaste = { - name = "Copiar y pegar", - text = { - "Cuando una carta {C:cry_code}código{} se usa,", - "{C:green}#1# en #2#{} probabilidades para añadir", - "una copia a tus consumibles", - "{C:inactive}(debe haber espacio)", - }, - }, - j_cry_cotton_candy = { - name = "Algodón de azúcar", - text = { - "Al venderse, los {C:attention}comodines{}", - "adyacentes se vuelven {C:dark_edition}negativos{}" - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "Este comodín gana {C:chips}+#2#{} fichas", - "por cada {C:attention}renovación{} en la tienda", - "{C:green}Todas las renovaciones son gratis{}", - "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", - }, - }, - j_cry_cryptidmoment = { - name = "Cadena M", - text = { - "Vende esta carta para", - "añadir {C:money}$#1#{} de {C:attention}valor de venta{}", - "a cada {C:attention}comodín{}", - }, - }, - j_cry_cube = { - name = "Cubo", - text = { - "{C:chips}+#1#{} fichas", - }, - }, - j_cry_curse_sob = { - name = "Sollozo", - text = { - "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}correr...{}", - "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}esconderte...{}", - "{C:dark_edition,E:1}no puedes escapar...{}", - "{C:inactive}(debe haber espacio){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "Este comodín gana {C:chips}+#2#{} fichas", - "por cada carta {C:attention}comprada{}", - "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", - }, - }, - j_cry_cut = { - name = "Cortar", - text = { - "Este comodín destruye una", - "carta de {C:cry_code}código{} al azar,", - "y gana {X:mult,C:white} X#1# {} multi", - "al final de la {C:attention}tienda{}", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_delirious = { - name = "Comodín delirante", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_discreet = { - name = "Comodín discreto", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_doodlem = { - name = "Garabato M", - text = { - "Crea 2 {C:attention}consumibles{} {C:dark_edition}negativos{}", - "cuando se selecciona una {C:attention}ciega{}", - "Crea 1 {C:attention}consumibles{} adicional", - "por cada {C:attention}comodín contento{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Escala doble", - text = { - "Los {C:attention}comodines{} escaladores", - "aumentan {C:attention}cuadráticamente", - "{C:inactive,s:0.8}(ej. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(crece por by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Tiro al blanco", - text = { - "Este comodín consigue {X:mult,C:white} X#1# {} multi por", - "cada carta de {V:1}#2#{} jugada que no puntúa,", - "el palo cambia en cada ronda", - "{C:inactive}(Actual: {X:mult,C:white} X#3# {C:inactive} multi)", - }, - }, - j_cry_dubious = { - name = "Comodín dudoso", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_duos = { - name = "Los dúos", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Este comodín gana {X:mult,C:white} X#2# {} multi", - "cuando un {C:attention}comodín{} o", - "carta de juego puntúa", - "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Saca tu {C:green}baraja completa{} a tu mano", - "al seleccionar una {C:attention}ciega{}", - "{C:inactive,s:0.8}\"Si no puedes manejarme a mi 1x,", - "{C:inactive,s:0.8}no me mereces a mi 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "Cuando obtienes una {C:attention}etiqueta{},", - "crea {C:attention}#1#{} copias de ésta,", - "y {C:attention}aumenta{} la cantidad de", - "copias por {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Comodines aparecen usando el", - "orden de la {C:attention}colección{}", - "Crea {C:attention}#1#{} comodín(es) {C:dark_edition}negativos{}", - "al jugar una mano", - "{C:inactive,s:0.8}Comodines {C:cry_exotic,s:0.8}exóticos {C:inactive,s:0.8}o mejores no pueden aparecer", - "{s:0.8}Último comodín generado: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Llama eterna", - text = { - "Este comodín gana {X:mult,C:white} X#1# {} multi", - "por cada carta {C:attention}vendida{}", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_exoplanet = { - name = "Exoplaneta", - text = { - "Las cartas {C:dark_edition}holográficas{}", - "otorgan {C:mult}+#1#{} multi", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", - "cuando se activa {X:red,C:white}Xmulti{}", - "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", - }, - }, - j_cry_exposed = { - name = "Expuesto", - text = { - "Reactiva todas las cartas {C:attention}numéricas{}", - "{C:attention}#1#{} veces adicionales", - "Todas las cartas de {C:attention}figura{} se debilitan", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} multi si", - "las cartas jugadas puntúan", - "{C:attention}#2#{} o menos veces", - }, - }, - j_cry_filler = { - name = "El relleno", - text={ - "{X:mult,C:white} X#1#{} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Dedos fractales", - text = { - "{C:attention}+#1#{} límite de selección de cartas", - }, - }, - j_cry_flip_side = { - name = "Por el otro lado", - text = { - "Los comodines {C:dark_edition}doble cara{} usan", - "su lado trasero para sus efectos", - "en vez de su lado delantero", - "{C:attention}Reactiva{} todos los comodines {C:dark_edition}doble cara{}" - }, - }, - j_cry_foodm = { - name = "M de comida rápida", - text = { - "{C:mult}+#1#{} multi", - "{C:red,E:2}se autodestruye{} en {C:attention}#2#{} ronda(s)", - "Aumenta por {C:attention}#3#{} ronda cuando un", - "{C:attention}comodín contento{} es {C:attention}vendido{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foolhardy = { - name = "Comodín temerario", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_formidiulosus = { - name = "Formidiulosus", - text = { - "Cuando un comodín {X:cry_cursed,C:white}maldito{} es obtenido, destrúyelo", - "Crea {C:attention}#1#{} {C:cry_candy}dulces {C:dark_edition}negativos{} al final de la tienda", - "Gana {X:dark_edition,C:white}^#2#{} multi por cada {C:cry_candy}dulce{} en tu posesión", - "{C:inactive}(Actual: {X:dark_edition,C:white}^#3#{C:inactive} multi)", - }, - }, - j_cry_foxy = { - name = "Comodín astuto", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "Este comodín gana {C:chips}+#2#{} fichas", - "si la mano jugada {C:attention}no es{}", - "la {C:attention}mano de póker{} más jugada", - "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", - }, - }, - j_cry_fuckedup = { - name = "Comodín jodido", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_gardenfork = { - name = "El jardín de las bifurcaciones", - text = { - "Gana {C:money}$#1#{} si la {C:attention}mano jugada{}", - "contiene un {C:attention}As{} y un {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Duplica{} todos los valores", - "del {C:attention}Joker{} del extremo izquierdo", - "al final de la ronda", - }, - }, - j_cry_ghost = { - name = "Fantasma", - text = { - "Al final de la ronda:", - "{C:green}#1# en #2#{} probabilidades para", - "{C:attention}poseer{} un {C:attention}comodín{} aleatorio", - "{C:green}#1# en #3#{} probabilidades para", - "{E:2,C:red}autodestruirse" - } - }, - j_cry_giggly = { - name = "Comodín absurdo", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_goldjoker = { - name = "Comodín de oro", - text = { - "Gana {C:money}#1#%{} de tu dinero", - "total al final de la ronda", - "El pago aumenta por {C:money}#2#%{}", - "cuando cada carta de {C:attention}oro{}", - "jugada puntúa", - }, - }, - j_cry_googol_play = { - name = "Carta de Googol Play", - text = { - "{C:green}#1# en #2#{} probabilidades de", - "{X:red,C:white} X#3# {} multi", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Crea un {C:attention}comodín{} aleatorio", - "al final de la ronda", - "Vende esta carta para", - "crear un {C:attention}comodín{} aleatorio", - "{C:inactive}(debe haber espacio){}", - }, - }, - j_cry_happyhouse = { - name = "Casa feliz", - text = { - "{X:dark_edition,C:white}^#1#{} multi sólo después de", - "jugar {C:attention}114{} manos{}", - "{C:inactive}(Actual: #2#/114){}", - "{C:inactive,s:0.8}¡No hay un lugar como el hugar!{}", - }, - }, - j_cry_home = { - name = "El hogar", - text={ - "{X:mult,C:white} X#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consum-ible", - text = { - "Gana {C:money}$#1#{} cuando", - "usas un {C:attention}consumible{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Reactiva todas las cartas jugadas", - "{C:attention}#2#{} vez,", - "cada carta jugada otorga", - "{X:mult,C:white} X#1# {} multi cuando puntúa", - }, - }, - j_cry_jawbreaker = { - name = "Jawbreaker", - text = { - "Al derrotar la {C:attention}ciega jefe,", - "{C:attention}duplica{} los valores de los comodines adyacentes", - "{E:2,C:red}se autodestruye{}", - } - }, - j_cry_jimball = { - name = "Jimball", - text = { - "Este comodín gana {X:mult,C:white} X#1# {} multi", - "por cada mano jugada {C:attention}consecutiva{}", - "mientras juegas tu", - "{C:attention}mano de póker{} más jugada", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_jollysus = { - name = "¿Comodín contento?", - text = { - "Crea un comodín {C:dark_edition}contento{}", - "cuando un comodín es {C:attention}vendido{}", - "{C:red}Funciona una vez por ronda{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Parece legítimo...{}", - }, - }, - j_cry_kidnap = { - name = "Secuestro", - text = { - "Gana {C:money}$#2#{} al final de la ronda", - "Aumenta el pago por {C:money}$#1#{}", - "cuando un comodín de {C:attention}tipo multi{}", - "o {C:attention}tipo fichas{} es vendido", - }, - }, - j_cry_kooky = { - name = "Comodín raro", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_krustytheclown = { - name = "Krusty el Payaso", - text = { - "Este comodín gana", - "{X:mult,C:white} X#1# {} multi cuando", - "cada {C:attention}carta{} jugada puntúa", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_kscope = { - name = "Caleidoscopio", - text = { - "Agrega {C:dark_edition}policromía{} a", - "un {C:attention}comodín{} aleatorio al", - "derrotar la {C:attention}ciega jefe{}", - }, - }, - j_cry_lightupthenight = { - name = "Ilumina la noche", - text = { - "Cada {C:attention}7{} o {C:attention}2{} jugado", - "otorga {X:mult,C:white}X#1#{} multi cuando puntúa", - }, - }, - j_cry_longboi = { - name = "Monstruo", - text = { - "Otorga futuras copias de", - "este comodín {X:mult,C:white}X#1#{} multi", - "al final de la ronda", - "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Reactiva{} todos los comodines", - "una vez por cada {C:attention}comodín{}", - "{C:attention}contento{} vendido esta ronda", - "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", - "{C:inactive,s:0.8}No había suficiente espacio...{}", - }, - }, - j_cry_lucky_joker = { - name = "Comodín de la suerte", - text = { - "Gana {C:money}$#1#{} cada vez que", - "una carta {C:attention}de la suerte{} se active", - "{C:green}con éxito{}", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "Todos los comodines otorgan", - "{X:chips,C:white} X#1# {} fichas", - }, - }, - j_cry_m = { - name = "m", - text = { - "Este comodín gana {X:mult,C:white} X#1# {} multi", - "cuando un {C:attention}Comodín contento{} es vendido", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Crea un {C:attention}Comodín contento{} ", - "{C:dark_edition}negativo{} cuando se", - "selecciona una {C:attention}ciega{}", - }, - }, - j_cry_macabre = { - name = "Comodín macabro", - text = { - "Al seleccionar una {C:attention}ciega{},", - "destruye todos los {C:attention}comodines{} excepto", - "{C:legendary}comodines M{} y {C:attention}comodines contentos{}", - "y crea 1 {C:attention}comodín contento{}", - "por cada carta destruida", - }, - }, - j_cry_magnet = { - name = "Imán de refrigerador", - text = { - "Gana {C:money}$#1#{} al final de la ronda", - "Obtienes {X:money,C:white} X#2# {} si hay", - "{C:attention}#3#{} o menos {C:attention}comodines{}", - }, - }, - j_cry_manic = { - name = "Comodín maníaco", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Reactiva todos los comodines", - "{C:attention}#1#{} veces adicionales", - }, - }, - j_cry_mask = { - name = "Máscara", - text = { - "Reactiva todas las cartas de {C:attention}figura{}", - "{C:attention}#1#{} veces adicionales", - "Todas las cartas {C:attention}numéricas{} se debilitan", - }, - }, + j_cry_CodeJoker = { + name = "Comodín de código", + text = { + "Crea una {C:cry_code}carta de código{}", + "{C:dark_edition}negativa{} cuando se", + "selecciona una {C:attention}ciega{}", + }, + }, + j_cry_coin = { + name = "Moneda crypto", + text = { + "Gana entre", + "{C:money}$#1#{} y {C:money}$#2#{} por", + "cada comodín {C:attention}vendido{}", + }, + }, + j_cry_compound_interest = { + name = "Interés compuesto", + text = { + "Gana {C:money}#1#%{} de tu dinero total", + "al final de la ronda,", + "aumenta por {C:money}#2#%{} por cada", + "pago consecutivo", + }, + }, + j_cry_copypaste = { + name = "Copiar y pegar", + text = { + "Cuando una carta {C:cry_code}código{} se usa,", + "{C:green}#1# en #2#{} probabilidades para añadir", + "una copia a tus consumibles", + "{C:inactive}(debe haber espacio)", + }, + }, + j_cry_cotton_candy = { + name = "Algodón de azúcar", + text = { + "Al venderse, los {C:attention}comodines{}", + "adyacentes se vuelven {C:dark_edition}negativos{}", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "Este comodín gana {C:chips}+#2#{} fichas", + "por cada {C:attention}renovación{} en la tienda", + "{C:green}Todas las renovaciones son gratis{}", + "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", + }, + }, + j_cry_cryptidmoment = { + name = "Cadena M", + text = { + "Vende esta carta para", + "añadir {C:money}$#1#{} de {C:attention}valor de venta{}", + "a cada {C:attention}comodín{}", + }, + }, + j_cry_cube = { + name = "Cubo", + text = { + "{C:chips}+#1#{} fichas", + }, + }, + j_cry_curse_sob = { + name = "Sollozo", + text = { + "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}correr...{}", + "{C:edition,E:1}no puedes{} {C:cry_ascendant,E:1}esconderte...{}", + "{C:dark_edition,E:1}no puedes escapar...{}", + "{C:inactive}(debe haber espacio){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "Este comodín gana {C:chips}+#2#{} fichas", + "por cada carta {C:attention}comprada{}", + "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", + }, + }, + j_cry_cut = { + name = "Cortar", + text = { + "Este comodín destruye una", + "carta de {C:cry_code}código{} al azar,", + "y gana {X:mult,C:white} X#1# {} multi", + "al final de la {C:attention}tienda{}", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_delirious = { + name = "Comodín delirante", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Comodín discreto", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Garabato M", + text = { + "Crea 2 {C:attention}consumibles{} {C:dark_edition}negativos{}", + "cuando se selecciona una {C:attention}ciega{}", + "Crea 1 {C:attention}consumibles{} adicional", + "por cada {C:attention}comodín contento{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Escala doble", + text = { + "Los {C:attention}comodines{} escaladores", + "aumentan {C:attention}cuadráticamente", + "{C:inactive,s:0.8}(ej. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(crece por by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Tiro al blanco", + text = { + "Este comodín consigue {X:mult,C:white} X#1# {} multi por", + "cada carta de {V:1}#2#{} jugada que no puntúa,", + "el palo cambia en cada ronda", + "{C:inactive}(Actual: {X:mult,C:white} X#3# {C:inactive} multi)", + }, + }, + j_cry_dubious = { + name = "Comodín dudoso", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "Los dúos", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Este comodín gana {X:mult,C:white} X#2# {} multi", + "cuando un {C:attention}comodín{} o", + "carta de juego puntúa", + "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Saca tu {C:green}baraja completa{} a tu mano", + "al seleccionar una {C:attention}ciega{}", + '{C:inactive,s:0.8}"Si no puedes manejarme a mi 1x,', + '{C:inactive,s:0.8}no me mereces a mi 2x"', + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "Cuando obtienes una {C:attention}etiqueta{},", + "crea {C:attention}#1#{} copias de ésta,", + "y {C:attention}aumenta{} la cantidad de", + "copias por {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Comodines aparecen usando el", + "orden de la {C:attention}colección{}", + "Crea {C:attention}#1#{} comodín(es) {C:dark_edition}negativos{}", + "al jugar una mano", + "{C:inactive,s:0.8}Comodines {C:cry_exotic,s:0.8}exóticos {C:inactive,s:0.8}o mejores no pueden aparecer", + "{s:0.8}Último comodín generado: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Llama eterna", + text = { + "Este comodín gana {X:mult,C:white} X#1# {} multi", + "por cada carta {C:attention}vendida{}", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_exoplanet = { + name = "Exoplaneta", + text = { + "Las cartas {C:dark_edition}holográficas{}", + "otorgan {C:mult}+#1#{} multi", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", + "cuando se activa {X:red,C:white}Xmulti{}", + "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", + }, + }, + j_cry_exposed = { + name = "Expuesto", + text = { + "Reactiva todas las cartas {C:attention}numéricas{}", + "{C:attention}#1#{} veces adicionales", + "Todas las cartas de {C:attention}figura{} se debilitan", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} multi si", + "las cartas jugadas puntúan", + "{C:attention}#2#{} o menos veces", + }, + }, + j_cry_filler = { + name = "El relleno", + text = { + "{X:mult,C:white} X#1#{} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Dedos fractales", + text = { + "{C:attention}+#1#{} límite de selección de cartas", + }, + }, + j_cry_flip_side = { + name = "Por el otro lado", + text = { + "Los comodines {C:dark_edition}doble cara{} usan", + "su lado trasero para sus efectos", + "en vez de su lado delantero", + "{C:attention}Reactiva{} todos los comodines {C:dark_edition}doble cara{}", + }, + }, + j_cry_foodm = { + name = "M de comida rápida", + text = { + "{C:mult}+#1#{} multi", + "{C:red,E:2}se autodestruye{} en {C:attention}#2#{} ronda(s)", + "Aumenta por {C:attention}#3#{} ronda cuando un", + "{C:attention}comodín contento{} es {C:attention}vendido{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foolhardy = { + name = "Comodín temerario", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_formidiulosus = { + name = "Formidiulosus", + text = { + "Cuando un comodín {X:cry_cursed,C:white}maldito{} es obtenido, destrúyelo", + "Crea {C:attention}#1#{} {C:cry_candy}dulces {C:dark_edition}negativos{} al final de la tienda", + "Gana {X:dark_edition,C:white}^#2#{} multi por cada {C:cry_candy}dulce{} en tu posesión", + "{C:inactive}(Actual: {X:dark_edition,C:white}^#3#{C:inactive} multi)", + }, + }, + j_cry_foxy = { + name = "Comodín astuto", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "Este comodín gana {C:chips}+#2#{} fichas", + "si la mano jugada {C:attention}no es{}", + "la {C:attention}mano de póker{} más jugada", + "{C:inactive}(Actual: {C:chips}+#1#{C:inactive} fichas)", + }, + }, + j_cry_fuckedup = { + name = "Comodín jodido", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_gardenfork = { + name = "El jardín de las bifurcaciones", + text = { + "Gana {C:money}$#1#{} si la {C:attention}mano jugada{}", + "contiene un {C:attention}As{} y un {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Duplica{} todos los valores", + "del {C:attention}Joker{} del extremo izquierdo", + "al final de la ronda", + }, + }, + j_cry_ghost = { + name = "Fantasma", + text = { + "Al final de la ronda:", + "{C:green}#1# en #2#{} probabilidades para", + "{C:attention}poseer{} un {C:attention}comodín{} aleatorio", + "{C:green}#1# en #3#{} probabilidades para", + "{E:2,C:red}autodestruirse", + }, + }, + j_cry_giggly = { + name = "Comodín absurdo", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Comodín de oro", + text = { + "Gana {C:money}#1#%{} de tu dinero", + "total al final de la ronda", + "El pago aumenta por {C:money}#2#%{}", + "cuando cada carta de {C:attention}oro{}", + "jugada puntúa", + }, + }, + j_cry_googol_play = { + name = "Carta de Googol Play", + text = { + "{C:green}#1# en #2#{} probabilidades de", + "{X:red,C:white} X#3# {} multi", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Crea un {C:attention}comodín{} aleatorio", + "al final de la ronda", + "Vende esta carta para", + "crear un {C:attention}comodín{} aleatorio", + "{C:inactive}(debe haber espacio){}", + }, + }, + j_cry_happyhouse = { + name = "Casa feliz", + text = { + "{X:dark_edition,C:white}^#1#{} multi sólo después de", + "jugar {C:attention}114{} manos{}", + "{C:inactive}(Actual: #2#/114){}", + "{C:inactive,s:0.8}¡No hay un lugar como el hugar!{}", + }, + }, + j_cry_home = { + name = "El hogar", + text = { + "{X:mult,C:white} X#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consum-ible", + text = { + "Gana {C:money}$#1#{} cuando", + "usas un {C:attention}consumible{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Reactiva todas las cartas jugadas", + "{C:attention}#2#{} vez,", + "cada carta jugada otorga", + "{X:mult,C:white} X#1# {} multi cuando puntúa", + }, + }, + j_cry_jawbreaker = { + name = "Jawbreaker", + text = { + "Al derrotar la {C:attention}ciega jefe,", + "{C:attention}duplica{} los valores de los comodines adyacentes", + "{E:2,C:red}se autodestruye{}", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "Este comodín gana {X:mult,C:white} X#1# {} multi", + "por cada mano jugada {C:attention}consecutiva{}", + "mientras juegas tu", + "{C:attention}mano de póker{} más jugada", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_jollysus = { + name = "¿Comodín contento?", + text = { + "Crea un comodín {C:dark_edition}contento{}", + "cuando un comodín es {C:attention}vendido{}", + "{C:red}Funciona una vez por ronda{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Parece legítimo...{}", + }, + }, + j_cry_kidnap = { + name = "Secuestro", + text = { + "Gana {C:money}$#2#{} al final de la ronda", + "Aumenta el pago por {C:money}$#1#{}", + "cuando un comodín de {C:attention}tipo multi{}", + "o {C:attention}tipo fichas{} es vendido", + }, + }, + j_cry_kooky = { + name = "Comodín raro", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty el Payaso", + text = { + "Este comodín gana", + "{X:mult,C:white} X#1# {} multi cuando", + "cada {C:attention}carta{} jugada puntúa", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_kscope = { + name = "Caleidoscopio", + text = { + "Agrega {C:dark_edition}policromía{} a", + "un {C:attention}comodín{} aleatorio al", + "derrotar la {C:attention}ciega jefe{}", + }, + }, + j_cry_lightupthenight = { + name = "Ilumina la noche", + text = { + "Cada {C:attention}7{} o {C:attention}2{} jugado", + "otorga {X:mult,C:white}X#1#{} multi cuando puntúa", + }, + }, + j_cry_longboi = { + name = "Monstruo", + text = { + "Otorga futuras copias de", + "este comodín {X:mult,C:white}X#1#{} multi", + "al final de la ronda", + "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Reactiva{} todos los comodines", + "una vez por cada {C:attention}comodín{}", + "{C:attention}contento{} vendido esta ronda", + "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", + "{C:inactive,s:0.8}No había suficiente espacio...{}", + }, + }, + j_cry_lucky_joker = { + name = "Comodín de la suerte", + text = { + "Gana {C:money}$#1#{} cada vez que", + "una carta {C:attention}de la suerte{} se active", + "{C:green}con éxito{}", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "Todos los comodines otorgan", + "{X:chips,C:white} X#1# {} fichas", + }, + }, + j_cry_m = { + name = "m", + text = { + "Este comodín gana {X:mult,C:white} X#1# {} multi", + "cuando un {C:attention}Comodín contento{} es vendido", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Crea un {C:attention}Comodín contento{} ", + "{C:dark_edition}negativo{} cuando se", + "selecciona una {C:attention}ciega{}", + }, + }, + j_cry_macabre = { + name = "Comodín macabro", + text = { + "Al seleccionar una {C:attention}ciega{},", + "destruye todos los {C:attention}comodines{} excepto", + "{C:legendary}comodines M{} y {C:attention}comodines contentos{}", + "y crea 1 {C:attention}comodín contento{}", + "por cada carta destruida", + }, + }, + j_cry_magnet = { + name = "Imán de refrigerador", + text = { + "Gana {C:money}$#1#{} al final de la ronda", + "Obtienes {X:money,C:white} X#2# {} si hay", + "{C:attention}#3#{} o menos {C:attention}comodines{}", + }, + }, + j_cry_manic = { + name = "Comodín maníaco", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Reactiva todos los comodines", + "{C:attention}#1#{} veces adicionales", + }, + }, + j_cry_mask = { + name = "Máscara", + text = { + "Reactiva todas las cartas de {C:attention}figura{}", + "{C:attention}#1#{} veces adicionales", + "Todas las cartas {C:attention}numéricas{} se debilitan", + }, + }, - j_cry_maximized = { - name = "Maximizado", - text = { - "Todas las cartas de {C:attention}figura{}", - "son consideradas {C:attention}Reyes{},", - "todas las cartas de {C:attention}número{}", - "son consideradas {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Laberinto", - text = { - "Todas las manos son consideradas la", - "{C:attention}primera mano{} de cada ronda,", - "todos los descartes son considerados el", - "{C:attention}primer descarte{} de cada ronda", - }, - }, - j_cry_Megg = { - name = "Muevo", - text = { - "Vende esta carta para crear", - "{C:attention}#2#{} Comodines contentos, aumenta", - "por {C:attention}#1#{} al final de la ronda", - }, - }, - j_cry_mellowcreme = { - name = "Mellowcreme", - text = { - "Vende esta carta para {C:attention}multiplicar", - "el valor de venta de todos los", - "{C:attention}consumibles{} por {X:attention,C:white}X#1#" - } - }, - j_cry_membershipcard = { - name = "Carta de afiliación", - text = { - "{X:mult,C:white}X#1#{} multi por cada miembro", - "en el {C:attention}Discord de Cryptid{}", - "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Carta de miembro antigua", --renamed it for making it distinct - text = { - "{C:chips}+#1#{} fichas por cada miembro", - "en el {C:attention}Discord de Cryptid{}", - "{C:inactive}(Actual: {C:chips}+#2#{C:inactive} fichas)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Lluvia de meteoros", - text = { - "Las cartas {C:dark_edition}laminadas{}", - "otorgan {C:chips}+#1#{} fichas", - }, - }, - j_cry_mneon = { - name = "M neón", - text = { - "Gana {C:money}$#2#{} al final de la ronda", - "Aumenta el pago por", - "{C:money}$#1#{} por cada {C:attention}Comodín contento{}", - "o {C:legendary}comodín M{} al", - "final de la ronda", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "Este comodín consigue {X:mult,C:white}X#1#{} multi", - "si no se usaron {C:attention}descartes{}", - "en esta ronda", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_monkey_dagger = { - name = "Daga de mono", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la izquierda", - "y agrega para siempre {C:attention}10 veces", - "de valor de venta a estas {C:chips}fichas{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_monopoly_money = { - name = "Dinero de monopolio", - text = { - "{C:green}#1# en #2#{} probabilidades para", - "{C:attention}destruir{} objetos comprados", - "Divide tu dinero en 2 cuando se {C:attention}vende", - } - }, - j_cry_morse = { - name = "Código morse", - text = { - "Gana {C:money}$#2#{} al final de la ronda", - "Aumenta el pago por {C:money}$#1#{} al", - "vender una carta con una {C:attention}edición{}", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Crea un {C:legendary}comodín M{} al final de la ronda", - "Cada {C:attention}Comodín contento{} o {C:legendary}comodín M", - "otorga {X:dark_edition,C:white}^#1#{} multi", - "Aumenta el valor por {X:dark_edition,C:white}^#2#{}", - "cuando un {C:attention}Comodín contento{} es {C:attention}vendido", - "{C:inactive,s:0.8}(Tredecim excluido)", - }, - }, - j_cry_mstack = { - name = "Pila de Ms", - text = { - "Reactiva todas las cartas jugadas", - "una vez por cada", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}comodines contentos{} vendidos", - "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", - }, - }, - j_cry_multjoker = { - name = "Comodín multi", - text = { - "{C:green}#1# en #2#{} probabilidades por cada", - "carta {C:attention}multi{} jugada para que cree", - "una carta {C:spectral}Críptido{} al anotar", - "{C:inactive}(Debe haber espacio)", - }, - }, - j_cry_necromancer = { - name = "Nigromante", - text = { - "Cuando un comodín es {C:attention}vendido{} por un precio mayor que {C:attention}$0{},", - "gana un comodín {C:attention}aleatorio{} {C:attention}vendido{} en esta partida", - "y establece su {C:attention}valor de venta{} a {C:attention}$0{}", - }, - }, - j_cry_negative = { - name = "Comodín negativo", - text = { - "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} fichas si la mano jugada", - "contiene un {C:attention}6{} y un {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Noche", - text = { - "{X:dark_edition,C:white}^#1#{} multi en la", - "última mano de la ronda", - "{E:2,C:red}se autodestruye{} en", - "la última mano de la ronda", - }, - }, - j_cry_nosound = { - name = "Sin sonido, sin memoria", - text = { - "Reactiva cada {C:attention}7{} jugado", - "{C:attention:}#1#{} veces adicionales", - }, - }, - j_cry_notebook = { - name = "Cuaderno", - text = { - "{C:green} #1# en #2#{} probabilidades para conseguir {C:dark_edition}+1{} ranura", - "de comodín por cada {C:attention}renovación{} en la tienda", - "{C:green}Siempre se activa{} si hay", - "{C:attention}#5#{} o más {C:attention}Comodines contentos{}", - "{C:red}Funciona una vez por ronda{}", - "{C:inactive}(Actual: {C:dark_edition}+#3#{}{C:inactive} y #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Bloques numerados", - text = { - "Gana {C:money}$#1#{} al final de la ronda", - "Aumenta el pago por {C:money}$#2#{}", - "por cada {C:attention}#3#{} en tu mano,", - "la categoría cambia cada ronda", - }, - }, - j_cry_nuts = { - name = "El loco", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "una {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Comodín loco", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_oil_lamp = { - name = "Lámpara de aceite", - text = { - "Al final de la ronda, aumenta los valores", - "del comodín a la {C:attention}derecha{} por {X:attention,C:white}X#1#{}" - }, - }, + j_cry_maximized = { + name = "Maximizado", + text = { + "Todas las cartas de {C:attention}figura{}", + "son consideradas {C:attention}Reyes{},", + "todas las cartas de {C:attention}número{}", + "son consideradas {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Laberinto", + text = { + "Todas las manos son consideradas la", + "{C:attention}primera mano{} de cada ronda,", + "todos los descartes son considerados el", + "{C:attention}primer descarte{} de cada ronda", + }, + }, + j_cry_Megg = { + name = "Muevo", + text = { + "Vende esta carta para crear", + "{C:attention}#2#{} Comodines contentos, aumenta", + "por {C:attention}#1#{} al final de la ronda", + }, + }, + j_cry_mellowcreme = { + name = "Mellowcreme", + text = { + "Vende esta carta para {C:attention}multiplicar", + "el valor de venta de todos los", + "{C:attention}consumibles{} por {X:attention,C:white}X#1#", + }, + }, + j_cry_membershipcard = { + name = "Carta de afiliación", + text = { + "{X:mult,C:white}X#1#{} multi por cada miembro", + "en el {C:attention}Discord de Cryptid{}", + "{C:inactive}(Actual: {X:mult,C:white}X#2#{C:inactive} multi)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Carta de miembro antigua", --renamed it for making it distinct + text = { + "{C:chips}+#1#{} fichas por cada miembro", + "en el {C:attention}Discord de Cryptid{}", + "{C:inactive}(Actual: {C:chips}+#2#{C:inactive} fichas)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Lluvia de meteoros", + text = { + "Las cartas {C:dark_edition}laminadas{}", + "otorgan {C:chips}+#1#{} fichas", + }, + }, + j_cry_mneon = { + name = "M neón", + text = { + "Gana {C:money}$#2#{} al final de la ronda", + "Aumenta el pago por", + "{C:money}$#1#{} por cada {C:attention}Comodín contento{}", + "o {C:legendary}comodín M{} al", + "final de la ronda", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "Este comodín consigue {X:mult,C:white}X#1#{} multi", + "si no se usaron {C:attention}descartes{}", + "en esta ronda", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_monkey_dagger = { + name = "Daga de mono", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la izquierda", + "y agrega para siempre {C:attention}10 veces", + "de valor de venta a estas {C:chips}fichas{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_monopoly_money = { + name = "Dinero de monopolio", + text = { + "{C:green}#1# en #2#{} probabilidades para", + "{C:attention}destruir{} objetos comprados", + "Divide tu dinero en 2 cuando se {C:attention}vende", + }, + }, + j_cry_morse = { + name = "Código morse", + text = { + "Gana {C:money}$#2#{} al final de la ronda", + "Aumenta el pago por {C:money}$#1#{} al", + "vender una carta con una {C:attention}edición{}", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Crea un {C:legendary}comodín M{} al final de la ronda", + "Cada {C:attention}Comodín contento{} o {C:legendary}comodín M", + "otorga {X:dark_edition,C:white}^#1#{} multi", + "Aumenta el valor por {X:dark_edition,C:white}^#2#{}", + "cuando un {C:attention}Comodín contento{} es {C:attention}vendido", + "{C:inactive,s:0.8}(Tredecim excluido)", + }, + }, + j_cry_mstack = { + name = "Pila de Ms", + text = { + "Reactiva todas las cartas jugadas", + "una vez por cada", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}comodines contentos{} vendidos", + "{C:inactive}(Actual:{}{C:attention:} #1#{}{C:inactive} reactivaciones){}", + }, + }, + j_cry_multjoker = { + name = "Comodín multi", + text = { + "{C:green}#1# en #2#{} probabilidades por cada", + "carta {C:attention}multi{} jugada para que cree", + "una carta {C:spectral}Críptido{} al anotar", + "{C:inactive}(Debe haber espacio)", + }, + }, + j_cry_necromancer = { + name = "Nigromante", + text = { + "Cuando un comodín es {C:attention}vendido{} por un precio mayor que {C:attention}$0{},", + "gana un comodín {C:attention}aleatorio{} {C:attention}vendido{} en esta partida", + "y establece su {C:attention}valor de venta{} a {C:attention}$0{}", + }, + }, + j_cry_negative = { + name = "Comodín negativo", + text = { + "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} fichas si la mano jugada", + "contiene un {C:attention}6{} y un {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Noche", + text = { + "{X:dark_edition,C:white}^#1#{} multi en la", + "última mano de la ronda", + "{E:2,C:red}se autodestruye{} en", + "la última mano de la ronda", + }, + }, + j_cry_nosound = { + name = "Sin sonido, sin memoria", + text = { + "Reactiva cada {C:attention}7{} jugado", + "{C:attention:}#1#{} veces adicionales", + }, + }, + j_cry_notebook = { + name = "Cuaderno", + text = { + "{C:green} #1# en #2#{} probabilidades para conseguir {C:dark_edition}+1{} ranura", + "de comodín por cada {C:attention}renovación{} en la tienda", + "{C:green}Siempre se activa{} si hay", + "{C:attention}#5#{} o más {C:attention}Comodines contentos{}", + "{C:red}Funciona una vez por ronda{}", + "{C:inactive}(Actual: {C:dark_edition}+#3#{}{C:inactive} y #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Bloques numerados", + text = { + "Gana {C:money}$#1#{} al final de la ronda", + "Aumenta el pago por {C:money}$#2#{}", + "por cada {C:attention}#3#{} en tu mano,", + "la categoría cambia cada ronda", + }, + }, + j_cry_nuts = { + name = "El loco", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Comodín loco", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_oil_lamp = { + name = "Lámpara de aceite", + text = { + "Al final de la ronda, aumenta los valores", + "del comodín a la {C:attention}derecha{} por {X:attention,C:white}X#1#{}", + }, + }, - j_cry_oldblueprint = { - name = "Plano viejo", - text = { - "Copia la habilidad del", - "{C:attention}comodín{} de la derecha", - "{C:green}#1# en #2#{} probabilidades", - "de que la carta se destruya", - "al final de la ronda", - }, - }, - j_cry_oldcandy = { - name = "Dulce nostálgico", - text = { - "Vende esta carta para ganar", - "{C:attention}+#1#{} tamaño de mano", - "de forma permanente", - }, - }, - j_cry_oldinvisible = { - name = "Comodín invisible nostálgico", - text = { - "{C:attention}Duplioca{} un {C:attention}comodín{}", - "aleatorio cada {C:attention}4", - "cartas de comodín vendidas", - "{s:0.8}Comodín invisible nostálgico excluido{}", - "{C:inactive}(Actual: #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panóptico", - text = { - "Todas las manos son consideradas la", - "{C:attention}última mano{} de cada ronda", -- +4 dabloons - }, - }, - j_cry_penetrating = { - name = "Comodín penetrante", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_pickle = { --holy shit dethklok reference - name = "Pepinillo", - text = { - "Al saltar una {C:attention}ciega{}, crea", - "{C:attention}#1#{} etiquetas, disminuye por", - "{C:red}#2#{} cuando se selecciona una {C:attention}ciega{}", - }, - }, - j_cry_pirate_dagger = { - name = "Daga de pirata", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la derecha", - "y agraga {C:attention}un cuarto{} del", - "valor de venta a {X:chips,C:white} Xfichas {}", - "{C:inactive}(Actual: {X:chips,C:white} X#1# {C:inactive} fichas)", - }, - }, + j_cry_oldblueprint = { + name = "Plano viejo", + text = { + "Copia la habilidad del", + "{C:attention}comodín{} de la derecha", + "{C:green}#1# en #2#{} probabilidades", + "de que la carta se destruya", + "al final de la ronda", + }, + }, + j_cry_oldcandy = { + name = "Dulce nostálgico", + text = { + "Vende esta carta para ganar", + "{C:attention}+#1#{} tamaño de mano", + "de forma permanente", + }, + }, + j_cry_oldinvisible = { + name = "Comodín invisible nostálgico", + text = { + "{C:attention}Duplioca{} un {C:attention}comodín{}", + "aleatorio cada {C:attention}4", + "cartas de comodín vendidas", + "{s:0.8}Comodín invisible nostálgico excluido{}", + "{C:inactive}(Actual: #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panóptico", + text = { + "Todas las manos son consideradas la", + "{C:attention}última mano{} de cada ronda", -- +4 dabloons + }, + }, + j_cry_penetrating = { + name = "Comodín penetrante", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_pickle = { --holy shit dethklok reference + name = "Pepinillo", + text = { + "Al saltar una {C:attention}ciega{}, crea", + "{C:attention}#1#{} etiquetas, disminuye por", + "{C:red}#2#{} cuando se selecciona una {C:attention}ciega{}", + }, + }, + j_cry_pirate_dagger = { + name = "Daga de pirata", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la derecha", + "y agraga {C:attention}un cuarto{} del", + "valor de venta a {X:chips,C:white} Xfichas {}", + "{C:inactive}(Actual: {X:chips,C:white} X#1# {C:inactive} fichas)", + }, + }, j_cry_pity_prize = { name = "Premio de compasión", text = { "Al saltar un {C:attention}paquete potenciador{},", - "gana una {C:attention}etiqueta{} al azar" + "gana una {C:attention}etiqueta{} al azar", }, }, - j_cry_pot_of_jokes = { - name = "Olla de las bromas", - text = { - "{C:attention}#1#{} tamaño de mano,", - "aumenta por", - "{C:blue}#2#{} cada runda", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", - "si todas las cartas en la mano jugada son", - "{C:attention}Ases{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, o {C:attention}7s{}", - "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "Este comodín gana", - "{X:mult,C:white} X#1# {} multi cuando una", - "carta de {C:cry_code}código{} se usa", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_queens_gambit = { - name = "Gambito de dama", - text = { - "Si {C:attention}la mano de póker{} es una", - "{C:attention}Escalera real{}, destruye la", - "{C:attention}reina{} puntuada y crea un", - "{C:attention}comodín{} {C:red}raro{} {C:dark_edition}negativo{}", - }, - }, - j_cry_quintet = { - name = "El quinteto", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Bloon rojo", - text = { - "Gana {C:money}$#1#{} en {C:attention}#2#{} ronda(s)", - "{C:red,E:2}se autodestruye{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} apuesta al gastar", - "{C:money}$#2#{} {C:inactive}($#3#){}", - "{s:0.8}Requisitos aumentan", - "{C:attention,s:0.8}exponencialmente{s:0.8} por cada uso", - "{C:money,s:0.8}Siguiente aumento: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "Cuando un {C:attention}comodín{} es vendido,", - "añade sus efectos a", - "todos los otros comodines", - "{C:inactive,s:0.8}No afecta a otros Rescribere{}" - } - }, - j_cry_reverse = { - name = "Carta de reversa", - text = { - "Rellena todos las ranuras de comodín vacías {C:inactive}(Max 100){}", - "con {C:attention}Comodines contentos{} {C:dark_edition}holográficos{} si", - "la {C:attention}mano de póker descartada{} es una {C:attention}#1#{}", - "{C:red,E:2}se autodestruye{}", - "{C:inactive,s:0.8}¡El regreso SUPREMO!{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Aleatoriza abilidades por cada {C:attention}apuesta{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrificio", - text = { - "Crea un comodín {C:green}inusual{}", - "y 3 {C:attention}Comodines contentos{} al", - "usar una carta {C:spectral}espectral{}", - "{C:red}Funciona una vez por ronda{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Brote", - text = { - "Después de puntuar {C:attention}#2#{} {C:inactive}[#1#]{} cartas", - "mejoradas, vende esta carta para", - "crear un {C:attention}comodín{} {C:cry_epic}épico{} ", - "{C:inactive,s:0.8}Creará un {C:attention,s:0.8}comodín{} {C:red,s:0.8}raro{} si los", - "{C:inactive,s:0.8}comodines {C:cry_epic,s:0.8}épicos{} {C:inactive,s:0.8}están desactivados{}", - }, - }, - j_cry_savvy = { - name = "Comodín inteligente", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Los {C:attention}comodines{} escalan", - "como un polinomio grado-{C:attention}#1#{},", - "aumenta el grado por {C:attention}#2#{}", - "al final de la ronda", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluido)", - }, - }, - j_cry_scrabble = { - name = "Teja de Scrabble", - text = { - "{C:green}#1# en #2#{} probabilidades de crear", - "un comodín {C:green}inusual{} {C:dark_edition}contento", - "al jugar una mano", - }, - }, - j_cry_seal_the_deal = { - name = "Sellar el acuerdo", - text = { - "Añade un {C:attention}sello al azar{} a cada carta", - "puntuada en la {C:attention}última mano{} de la ronda", - }, - }, - j_cry_shrewd = { - name = "Comodín perspicaz", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_silly = { - name = "Comodín bobo", - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_smallestm = { - name = "Diminuto", - text = { - "Crea una {C:cry_jolly}Etiqueta MM", - "si la {C:attention}mano de póker{} jugada", - "es una {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so básicamente soy muy peque", - }, - }, - j_cry_soccer = { - name = "Uno para todos", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} ranura de comodín", - "{C:attention}+#1#{} ranura de paquete potenciador", - "{C:attention}+#1#{} tamaño de mano", - "{C:attention}+#1#{} ranura de consumible", - "{C:attention}+#1#{} ranura de carta en la tienda", - }, - }, - j_cry_fleshpanopticon = { - name = "Panóptico de carne", - text = { - "{C:red}X#1#{} tamaño de {C:attention}ciegas jefe{}", - "Al derrotar una {C:attention}ciega jefe{},", - "{C:red}se autodestruye{}, y crea", - "una carta de {C:spectral}Portal{} {C:dark_edition}negativa{}", - "{C:inactive,s:0.8}\"Esta prisión... para mantenerme...?\"" - }, - }, + j_cry_pot_of_jokes = { + name = "Olla de las bromas", + text = { + "{C:attention}#1#{} tamaño de mano,", + "aumenta por", + "{C:blue}#2#{} cada runda", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "Este comodín gana {X:dark_edition,C:white} ^#1# {} multi", + "si todas las cartas en la mano jugada son", + "{C:attention}Ases{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, o {C:attention}7s{}", + "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "Este comodín gana", + "{X:mult,C:white} X#1# {} multi cuando una", + "carta de {C:cry_code}código{} se usa", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_queens_gambit = { + name = "Gambito de dama", + text = { + "Si {C:attention}la mano de póker{} es una", + "{C:attention}Escalera real{}, destruye la", + "{C:attention}reina{} puntuada y crea un", + "{C:attention}comodín{} {C:red}raro{} {C:dark_edition}negativo{}", + }, + }, + j_cry_quintet = { + name = "El quinteto", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Bloon rojo", + text = { + "Gana {C:money}$#1#{} en {C:attention}#2#{} ronda(s)", + "{C:red,E:2}se autodestruye{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} apuesta al gastar", + "{C:money}$#2#{} {C:inactive}($#3#){}", + "{s:0.8}Requisitos aumentan", + "{C:attention,s:0.8}exponencialmente{s:0.8} por cada uso", + "{C:money,s:0.8}Siguiente aumento: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "Cuando un {C:attention}comodín{} es vendido,", + "añade sus efectos a", + "todos los otros comodines", + "{C:inactive,s:0.8}No afecta a otros Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Carta de reversa", + text = { + "Rellena todos las ranuras de comodín vacías {C:inactive}(Max 100){}", + "con {C:attention}Comodines contentos{} {C:dark_edition}holográficos{} si", + "la {C:attention}mano de póker descartada{} es una {C:attention}#1#{}", + "{C:red,E:2}se autodestruye{}", + "{C:inactive,s:0.8}¡El regreso SUPREMO!{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Aleatoriza abilidades por cada {C:attention}apuesta{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrificio", + text = { + "Crea un comodín {C:green}inusual{}", + "y 3 {C:attention}Comodines contentos{} al", + "usar una carta {C:spectral}espectral{}", + "{C:red}Funciona una vez por ronda{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Brote", + text = { + "Después de puntuar {C:attention}#2#{} {C:inactive}[#1#]{} cartas", + "mejoradas, vende esta carta para", + "crear un {C:attention}comodín{} {C:cry_epic}épico{} ", + "{C:inactive,s:0.8}Creará un {C:attention,s:0.8}comodín{} {C:red,s:0.8}raro{} si los", + "{C:inactive,s:0.8}comodines {C:cry_epic,s:0.8}épicos{} {C:inactive,s:0.8}están desactivados{}", + }, + }, + j_cry_savvy = { + name = "Comodín inteligente", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Los {C:attention}comodines{} escalan", + "como un polinomio grado-{C:attention}#1#{},", + "aumenta el grado por {C:attention}#2#{}", + "al final de la ronda", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluido)", + }, + }, + j_cry_scrabble = { + name = "Teja de Scrabble", + text = { + "{C:green}#1# en #2#{} probabilidades de crear", + "un comodín {C:green}inusual{} {C:dark_edition}contento", + "al jugar una mano", + }, + }, + j_cry_seal_the_deal = { + name = "Sellar el acuerdo", + text = { + "Añade un {C:attention}sello al azar{} a cada carta", + "puntuada en la {C:attention}última mano{} de la ronda", + }, + }, + j_cry_shrewd = { + name = "Comodín perspicaz", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Comodín bobo", + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Diminuto", + text = { + "Crea una {C:cry_jolly}Etiqueta MM", + "si la {C:attention}mano de póker{} jugada", + "es una {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so básicamente soy muy peque", + }, + }, + j_cry_soccer = { + name = "Uno para todos", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} ranura de comodín", + "{C:attention}+#1#{} ranura de paquete potenciador", + "{C:attention}+#1#{} tamaño de mano", + "{C:attention}+#1#{} ranura de consumible", + "{C:attention}+#1#{} ranura de carta en la tienda", + }, + }, + j_cry_fleshpanopticon = { + name = "Panóptico de carne", + text = { + "{C:red}X#1#{} tamaño de {C:attention}ciegas jefe{}", + "Al derrotar una {C:attention}ciega jefe{},", + "{C:red}se autodestruye{}, y crea", + "una carta de {C:spectral}Portal{} {C:dark_edition}negativa{}", + '{C:inactive,s:0.8}"Esta prisión... para mantenerme...?"', + }, + }, - j_cry_spaceglobe = { - name = "Esfera celestial", - text = { - "Este comodín gana {X:chips,C:white}X#2#{} fichas", - "si la {C:attention}mano de póker{} es un(a) {C:attention}#3#{},", - "mano cambia después de aumentar{}", - "{C:inactive}(Actual:{} {X:chips,C:white}X#1#{} {C:inactive}fichas){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Crea una copia {C:dark_edition}negativa{}", - "de un {C:attention}comodín{} aleatorio", - "al final de la {C:attention}tienda", - "{C:inactive,s:0.8}No copia otros Speculo{}", - }, - }, - j_cry_spy = { - name = "Espía", - text = { - "{X:mult,C:white} X#2# {} multi, {C:dark_edition}+1{} ranura de {C:attention}comodín{}", - "{C:inactive}¡Ese #1# es un espía!", - }, - }, - j_cry_stardust = { - name = "Polvo de estrellas", - text = { - "Las cartas {C:dark_edition}policromas{}", - "otorgan {X:mult,C:white}X#1#{} multi", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "Este comodín destruye una", - "carta de {C:planet}planeta{} al azar", - "y gana {X:dark_edition,C:white} ^#1# {} multi", - "al final de la {C:attention}tienda{}", - "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", - }, - }, - j_cry_stronghold = { - name = "La fortaleza", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, + j_cry_spaceglobe = { + name = "Esfera celestial", + text = { + "Este comodín gana {X:chips,C:white}X#2#{} fichas", + "si la {C:attention}mano de póker{} es un(a) {C:attention}#3#{},", + "mano cambia después de aumentar{}", + "{C:inactive}(Actual:{} {X:chips,C:white}X#1#{} {C:inactive}fichas){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Crea una copia {C:dark_edition}negativa{}", + "de un {C:attention}comodín{} aleatorio", + "al final de la {C:attention}tienda", + "{C:inactive,s:0.8}No copia otros Speculo{}", + }, + }, + j_cry_spy = { + name = "Espía", + text = { + "{X:mult,C:white} X#2# {} multi, {C:dark_edition}+1{} ranura de {C:attention}comodín{}", + "{C:inactive}¡Ese #1# es un espía!", + }, + }, + j_cry_stardust = { + name = "Polvo de estrellas", + text = { + "Las cartas {C:dark_edition}policromas{}", + "otorgan {X:mult,C:white}X#1#{} multi", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "Este comodín destruye una", + "carta de {C:planet}planeta{} al azar", + "y gana {X:dark_edition,C:white} ^#1# {} multi", + "al final de la {C:attention}tienda{}", + "{C:inactive}(Actual: {X:dark_edition,C:white} ^#2# {C:inactive} multi)", + }, + }, + j_cry_stronghold = { + name = "La fortaleza", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, - j_cry_subtle = { - name = "Comodín sutil", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} fichas, {C:mult}+#1#{} multi,", - "{X:chips,C:white}X#2#{} fichas, {X:mult,C:white}X#2#{} multi", - "Gana {C:money}$#3#{} al", - "final de la ronda", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "Al final de la ronda, crea", - "una {C:attention}copia{} de una carta", - "aleatoria {C:attention}en tu mano{},", - "destruye las demás", - "{C:attention,s:0.8}Reyes{s:0.8} de {C:hearts,s:0.8}corazones{s:0.8} son priorizados", - }, - }, - j_cry_swarm = { - name = "El enjambre", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Catalizador de sincronización", - text = { - "Equilibra las {C:blue}fichas{} y el {C:red}multi{}", - "{C:inactive,s:0.8}¡Hey! ¡Yo he visto esto antes!", - }, - }, + j_cry_subtle = { + name = "Comodín sutil", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} fichas, {C:mult}+#1#{} multi,", + "{X:chips,C:white}X#2#{} fichas, {X:mult,C:white}X#2#{} multi", + "Gana {C:money}$#3#{} al", + "final de la ronda", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "Al final de la ronda, crea", + "una {C:attention}copia{} de una carta", + "aleatoria {C:attention}en tu mano{},", + "destruye las demás", + "{C:attention,s:0.8}Reyes{s:0.8} de {C:hearts,s:0.8}corazones{s:0.8} son priorizados", + }, + }, + j_cry_swarm = { + name = "El enjambre", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Catalizador de sincronización", + text = { + "Equilibra las {C:blue}fichas{} y el {C:red}multi{}", + "{C:inactive,s:0.8}¡Hey! ¡Yo he visto esto antes!", + }, + }, j_cry_tax_fraud = { name = "Evasión fiscal", text = { @@ -1985,1971 +1986,1971 @@ return { "al final de la ronda", }, }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín{}", - "Gana {C:money}$#2#{} al final de la ronda", - }, - }, - j_cry_translucent = { - name = "Comodín translúcido", - text = { - "Vende esta carta para crear", - "una copia {C:attention}Banana Perecedera{}", - "de un {C:attention}comodín{} aleatorio", - "{s:0.8,C:inactive}(La copia evita compat. de perecedero)", - }, - }, - j_cry_treacherous = { - name = "Comodín traicionero", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_trick_or_treat = { - name = "Dulce o truco", - text = { - "Al {C:attention}venderse{}:", - "{C:green}#1# en #2#{} probabilidades de crear {C:attention}2{} {C:cry_candy}dulces", - "Si no, crea un comodín {X:cry_cursed,C:white}maldito{}", - "{C:inactive}(puede desbordarse)" - } - }, - j_cry_tricksy = { - name = "Comodín tramposo", - text = { - "{C:chips}+#1#{} fichas", - "si la mano contiene", - "una {C:attention}#2#", - } - }, - j_cry_triplet_rhythm = { - name = "Ritmo triple", - text = { - "{X:mult,C:white} X#1# {} multi si la mano", - "contiene {C:attention}exactamente{} tres {C:attention}3s", - }, - }, - j_cry_tropical_smoothie = { - name = "Zalamero tropical", - text = { - "Vende esta carta para", - "{C:attention}multiplicar{} los valores de los", - "comodines conseguidos por {X:attention,C:white}X1.5{}", - }, - }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{} ranuras de {C:attention}comodín{}", + "Gana {C:money}$#2#{} al final de la ronda", + }, + }, + j_cry_translucent = { + name = "Comodín translúcido", + text = { + "Vende esta carta para crear", + "una copia {C:attention}Banana Perecedera{}", + "de un {C:attention}comodín{} aleatorio", + "{s:0.8,C:inactive}(La copia evita compat. de perecedero)", + }, + }, + j_cry_treacherous = { + name = "Comodín traicionero", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_trick_or_treat = { + name = "Dulce o truco", + text = { + "Al {C:attention}venderse{}:", + "{C:green}#1# en #2#{} probabilidades de crear {C:attention}2{} {C:cry_candy}dulces", + "Si no, crea un comodín {X:cry_cursed,C:white}maldito{}", + "{C:inactive}(puede desbordarse)", + }, + }, + j_cry_tricksy = { + name = "Comodín tramposo", + text = { + "{C:chips}+#1#{} fichas", + "si la mano contiene", + "una {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Ritmo triple", + text = { + "{X:mult,C:white} X#1# {} multi si la mano", + "contiene {C:attention}exactamente{} tres {C:attention}3s", + }, + }, + j_cry_tropical_smoothie = { + name = "Zalamero tropical", + text = { + "Vende esta carta para", + "{C:attention}multiplicar{} los valores de los", + "comodines conseguidos por {X:attention,C:white}X1.5{}", + }, + }, - j_cry_unity = { - name = "La unidad", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - j_cry_universe = { - name = "Universo", - text = { - "Las cartas {C:dark_edition}astrales{}", - "otorgan {X:dark_edition,C:white}^#1#{} multi", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "Las {C:attention}manos de póker{} ganan", - "{X:red,C:white} X#1# {} multi y {X:blue,C:white} X#1# {} fichas", - "al subir de nivel", - }, - }, - j_cry_unjust_dagger = { - name = "Daga injusta", - text = { - "Cuando se selecciona la {C:attention}ciega{},", - "destruye al comodín de la izquierda", - "y agraga {C:attention}un quinto{} del", - "valor de venta a {X:mult,C:white} Xmulti {}", - "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "Cuando cualquier probabilidad", - "es activada {C:green}con éxito{},", - "este comodín gana {X:red,C:white}Xmulti{}", - "igual a sus {C:attention}probabilidades{} listadas", - "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "Este comodín gana {C:money}$#1#{} de {C:attention}valor de venta{}", - "si la {C:attention}mano de póker{} contiene una {C:attention}#2#{}", - "Vende esta carta para crear un", - "{C:attention}comodín contento{} {C:dark_edition}policroma{} por", - "cada {C:money}$4{} de {C:attention}valor de venta{} {C:inactive}(min. 1){}", - }, - }, - j_cry_wacky = { - name = "Comodín chalado", --too many freaking name collisions - text = { - "{C:red}+#1#{} multi", - "si la mano contiene", - "un {C:attention}#2#", - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "Todos los comodines otorgan", - "{X:mult,C:white} X#1# {} multi", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "Todos los comodines otorgan", - "{C:money}$#1#{} al activarse", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "Este comodín gana", - "{C:mult}+#2#{} multi cuando cada", - "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, o {C:attention}8{}", - "jugado puntúa", - "{C:inactive}(Actual: {C:mult}+#1#{C:inactive} multi)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Reactica cada {C:attention}2{} jugado", --wee gaming - "{C:attention:}#1#{} veces adicionales", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", --wee gaming :) - }, - }, - j_cry_wheelhope = { - name = "La rueda de la esperanza", - text = { - "Este comodín gana", - "{X:mult,C:white} X#1# {} multi al fallar", - "una {C:attention}Rueda de la fortuna{}", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_whip = { - name = "El LÁTIGO", - text = { - "Este comodín gana {X:mult,C:white}X#1#{} multi", - "si la {C:attention}mano jugada{} contiene un", - "{C:attention}2{} y {C:attention}7{} de diferentes palos", - "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", - }, - }, - j_cry_wrapped = { - name = "Dulce envuelto", - text = { - "Crea un {C:attention}comodín de comida{}", - "en {C:attention}#1#{} ronda(s)", - "{C:red,E:2}se autodestruye{}", - }, - }, - j_cry_wtf = { - name = "¡¿Qué rayos?!", - text = { - "{X:mult,C:white} X#1# {} multi", - "si la mano contiene", - "un {C:attention}#2#", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_Kaikki = { - name = "Kaikki", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Estrella de neutrones", - text = { - "Mejora una mano de póker", - "al azar por", - "{C:attention}1{} nivel por cada", - "{C:attention}estrella de neutrones{} usada", - "en esta partida", - "{C:inactive}(Actual:{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planeta.lua", - text = { - "{C:green}#1# en #2#{} probabilidades para", - "aumentar todas las", - "{C:legendary,E:1}manos de póker{}", - "por {C:attention}1{} nivel", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", - "Aumento de nivel", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "y {C:attention}#3#{}", - }, - }, - c_cry_marsmoons = { - name = 'Phobos y Deimos', - text = { - "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", - "{C:attention}#2#", - "{C:mult}+#3#{} multi y", - "{C:chips}+#4#{} fichas", - } - }, - c_cry_void = { - name = 'Vacío', - text = { - "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", - "{C:attention}#2#", - "{C:mult}+#3#{} multi y", - "{C:chips}+#4#{} fichas", - } - }, - c_cry_asteroidbelt = { - name = 'Cinturón de asteroides', - text = { - "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", - "{C:attention}#2#", - "{C:mult}+#3#{} multi y", - "{C:chips}+#4#{} fichas", - } - }, - c_cry_universe = { - name = 'El universo en su puta totalidad', - text = { - "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", - "{C:attention}#2#", - "{C:mult}+#3#{} multi y", - "{C:chips}+#4#{} fichas", - } - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "Manga CCD", - text = { - "Todas las cartas también son", - "un consumible {C:attention}aleatorio{}", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Manga transportadora", - text = { - "Los comodines {C:attention}no{} se pueden mover", - "Al principio de la runda,", - "{C:attention}duplica{} el comodín del extremo derecho", - "y {C:attention}destruye{} el comodín del extremo izquierdo", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Manga crítica", - text = { - "Después de cada mano jugada,", - "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", - "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Manga codificada", - text = { - "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", - "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", - "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Manga balanceada", - text = { - "Todas las cartas tienen la ", - "{C:attention}misma probabilidad{} de", - "aparecer en las tiendas,", - "comienza la partida con", - "{C:attention,T:v_overstock_plus}+2 ranuras de carta", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Baraja infinita", - text = { - "Puedes seleccionar {C:attention}cualquier", - "cantidad de cartas", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Manga de errata", - text = { - "Los valures de cartas", - "se {C:attention}aleatorizan", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Manga redimida", - text = { - "Cuando se compra un {C:attention}vale{},", - "obtén sus {C:attention}niveles extras", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Manga de agujero de gusano", - text = { - "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", - "Los comodines son {C:attention}20X{} más", - "probables de ser {C:dark_edition}Negativos", - "{C:attention}-2{} ranuras de comodín", - }, - }, + j_cry_unity = { + name = "La unidad", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_universe = { + name = "Universo", + text = { + "Las cartas {C:dark_edition}astrales{}", + "otorgan {X:dark_edition,C:white}^#1#{} multi", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "Las {C:attention}manos de póker{} ganan", + "{X:red,C:white} X#1# {} multi y {X:blue,C:white} X#1# {} fichas", + "al subir de nivel", + }, + }, + j_cry_unjust_dagger = { + name = "Daga injusta", + text = { + "Cuando se selecciona la {C:attention}ciega{},", + "destruye al comodín de la izquierda", + "y agraga {C:attention}un quinto{} del", + "valor de venta a {X:mult,C:white} Xmulti {}", + "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "Cuando cualquier probabilidad", + "es activada {C:green}con éxito{},", + "este comodín gana {X:red,C:white}Xmulti{}", + "igual a sus {C:attention}probabilidades{} listadas", + "{C:inactive}(Actual: {X:mult,C:white} X#1# {C:inactive} multi)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "Este comodín gana {C:money}$#1#{} de {C:attention}valor de venta{}", + "si la {C:attention}mano de póker{} contiene una {C:attention}#2#{}", + "Vende esta carta para crear un", + "{C:attention}comodín contento{} {C:dark_edition}policroma{} por", + "cada {C:money}$4{} de {C:attention}valor de venta{} {C:inactive}(min. 1){}", + }, + }, + j_cry_wacky = { + name = "Comodín chalado", --too many freaking name collisions + text = { + "{C:red}+#1#{} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "Todos los comodines otorgan", + "{X:mult,C:white} X#1# {} multi", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "Todos los comodines otorgan", + "{C:money}$#1#{} al activarse", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "Este comodín gana", + "{C:mult}+#2#{} multi cuando cada", + "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, o {C:attention}8{}", + "jugado puntúa", + "{C:inactive}(Actual: {C:mult}+#1#{C:inactive} multi)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Reactica cada {C:attention}2{} jugado", --wee gaming + "{C:attention:}#1#{} veces adicionales", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", --wee gaming :) + }, + }, + j_cry_wheelhope = { + name = "La rueda de la esperanza", + text = { + "Este comodín gana", + "{X:mult,C:white} X#1# {} multi al fallar", + "una {C:attention}Rueda de la fortuna{}", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_whip = { + name = "El LÁTIGO", + text = { + "Este comodín gana {X:mult,C:white}X#1#{} multi", + "si la {C:attention}mano jugada{} contiene un", + "{C:attention}2{} y {C:attention}7{} de diferentes palos", + "{C:inactive}(Actual: {X:mult,C:white} X#2# {C:inactive} multi)", + }, + }, + j_cry_wrapped = { + name = "Dulce envuelto", + text = { + "Crea un {C:attention}comodín de comida{}", + "en {C:attention}#1#{} ronda(s)", + "{C:red,E:2}se autodestruye{}", + }, + }, + j_cry_wtf = { + name = "¡¿Qué rayos?!", + text = { + "{X:mult,C:white} X#1# {} multi", + "si la mano contiene", + "un {C:attention}#2#", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_Kaikki = { + name = "Kaikki", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Estrella de neutrones", + text = { + "Mejora una mano de póker", + "al azar por", + "{C:attention}1{} nivel por cada", + "{C:attention}estrella de neutrones{} usada", + "en esta partida", + "{C:inactive}(Actual:{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planeta.lua", + text = { + "{C:green}#1# en #2#{} probabilidades para", + "aumentar todas las", + "{C:legendary,E:1}manos de póker{}", + "por {C:attention}1{} nivel", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}nvl.#4#{})({V:2}nvl.#5#{})({V:3}nvl.#6#{})", + "Aumento de nivel", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "y {C:attention}#3#{}", + }, + }, + c_cry_marsmoons = { + name = "Phobos y Deimos", + text = { + "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", + "{C:attention}#2#", + "{C:mult}+#3#{} multi y", + "{C:chips}+#4#{} fichas", + }, + }, + c_cry_void = { + name = "Vacío", + text = { + "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", + "{C:attention}#2#", + "{C:mult}+#3#{} multi y", + "{C:chips}+#4#{} fichas", + }, + }, + c_cry_asteroidbelt = { + name = "Cinturón de asteroides", + text = { + "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", + "{C:attention}#2#", + "{C:mult}+#3#{} multi y", + "{C:chips}+#4#{} fichas", + }, + }, + c_cry_universe = { + name = "El universo en su puta totalidad", + text = { + "{S:0.8}({S:0.8,V:1}nvl. #1#{S:0.8}){} Aumento de nivel", + "{C:attention}#2#", + "{C:mult}+#3#{} multi y", + "{C:chips}+#4#{} fichas", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "Manga CCD", + text = { + "Todas las cartas también son", + "un consumible {C:attention}aleatorio{}", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Manga transportadora", + text = { + "Los comodines {C:attention}no{} se pueden mover", + "Al principio de la runda,", + "{C:attention}duplica{} el comodín del extremo derecho", + "y {C:attention}destruye{} el comodín del extremo izquierdo", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Manga crítica", + text = { + "Después de cada mano jugada,", + "{C:green}#1# en 4{} probabilidades para {X:dark_edition,C:white} ^2 {} multi", + "{C:green}#1# en 8{} probabilidades para {X:dark_edition,C:white} ^0.5 {} multi", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Manga codificada", + text = { + "Comienza con un {C:cry_code,T:j_cry_CodeJoker}Comodín de código{}", + "y {C:cry_code,T:j_cry_copypaste}Copiar y pegar{}", + "Sólo aparecen {C:cry_code}cartas de código{} en la tienda", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Manga balanceada", + text = { + "Todas las cartas tienen la ", + "{C:attention}misma probabilidad{} de", + "aparecer en las tiendas,", + "comienza la partida con", + "{C:attention,T:v_overstock_plus}+2 ranuras de carta", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Baraja infinita", + text = { + "Puedes seleccionar {C:attention}cualquier", + "cantidad de cartas", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Manga de errata", + text = { + "Los valures de cartas", + "se {C:attention}aleatorizan", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Manga redimida", + text = { + "Cuando se compra un {C:attention}vale{},", + "obtén sus {C:attention}niveles extras", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Manga de agujero de gusano", + text = { + "Comienza con un comodín {C:cry_exotic}exótico{C:attention}", + "Los comodines son {C:attention}20X{} más", + "probables de ser {C:dark_edition}Negativos", + "{C:attention}-2{} ranuras de comodín", + }, + }, sleeve_cry_legendary_sleeve = { - name = "Manga legendaria<", - text = { - "Comienza con un comodín {C:legendary}legendario{C:legendary}", - "{C:green}1 en 5{} probabilidades para crear otro", + name = "Manga legendaria<", + text = { + "Comienza con un comodín {C:legendary}legendario{C:legendary}", + "{C:green}1 en 5{} probabilidades para crear otro", "cuando se derrota a la ciega jefe", - "{C:inactive}(debe haber espacio){}", - }, - }, - }, - Spectral = { - c_cry_adversary = { - name = "Adversario", - text = { - "{C:red}Todos{} tus {C:attention}comodines{} se vuelven {C:dark_edition}negativos{},", - "{C:red}todos{} los {C:attention}comodines{} en la tienda cuestan", - "el {C:red}doble{} por el resto de la partida", - }, - }, - c_cry_analog = { - name = "Análogo", - text = { - "Crea {C:attention}#1#{} copias de un", - "{C:attention}comodín{} aleatorio, destruye", - "los demás, {C:attention}+#2#{} apuesta", - }, - }, - c_cry_chambered = { - name = "Recámara", - text = { - "Crea {C:attention}#1#{} copias", - "{C:dark_edition}negativas{} de un", - "consumible {C:attention}al azar{}", - "{C:inactive,s:0.8}No copia otros Recámara{}" - }, - }, - c_cry_conduit = { - name = "Conducto", - text = { - "Intercambia las {C:attention}ediciones{} de", - "{C:attention}2{} cartas o {C:attention}comodines{} seleccionados", - }, - }, + "{C:inactive}(debe haber espacio){}", + }, + }, + }, + Spectral = { + c_cry_adversary = { + name = "Adversario", + text = { + "{C:red}Todos{} tus {C:attention}comodines{} se vuelven {C:dark_edition}negativos{},", + "{C:red}todos{} los {C:attention}comodines{} en la tienda cuestan", + "el {C:red}doble{} por el resto de la partida", + }, + }, + c_cry_analog = { + name = "Análogo", + text = { + "Crea {C:attention}#1#{} copias de un", + "{C:attention}comodín{} aleatorio, destruye", + "los demás, {C:attention}+#2#{} apuesta", + }, + }, + c_cry_chambered = { + name = "Recámara", + text = { + "Crea {C:attention}#1#{} copias", + "{C:dark_edition}negativas{} de un", + "consumible {C:attention}al azar{}", + "{C:inactive,s:0.8}No copia otros Recámara{}", + }, + }, + c_cry_conduit = { + name = "Conducto", + text = { + "Intercambia las {C:attention}ediciones{} de", + "{C:attention}2{} cartas o {C:attention}comodines{} seleccionados", + }, + }, - c_cry_gateway = { - name = "Portal", - text = { - "Crea un {C:attention}comodín", - "{C:cry_exotic,E:1}exótico{}, destruye", - "los demás", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Aplica {C:attention}consumibles{} aleatorios", - "como si fueran {C:dark_edition}mejoras{}", - "a las cartas en la mano", - }, - }, - c_cry_lock = { - name = "Cerradura", - text = { - "Remueve {C:red}todas{} las pegatinas", - "de {C:red}todos{} los comodines,", - "y aplica {C:purple,E:1}Eterno{}", - "a un {C:attention}comodín{} aleatorio", - }, - }, - c_cry_pointer = { - name = "PUNTERO://", - text = { - "Crea una carta", - "de {C:cry_code}tu elección", - "{C:inactive,s:0.8}(Comodines exóticos #1#excluidos)", - }, - }, - c_cry_replica = { - name = "Réplica", - text = { - "Convierte todas las cartas", - "en tu mano", - "a una carta {C:attention}aleatoria{}", - "en tu mano", - }, - }, - c_cry_ritual = { - name = "Ritual", - text = { - "Aplica {C:dark_edition}Negativo{}, {C:dark_edition}Mosaico{},", - "o {C:dark_edition}Astral{} a {C:attention}#1#{}", - "carta de tu mano seleccionada", - }, - }, - c_cry_source = { - name = "Origen", - text = { - "Agrega un {C:cry_code}sello verde{}", - "a {C:attention}1{} carta seleccionada", - "de tu mano al azar", - }, - }, - c_cry_summoning = { - name = "Evocación", - text = { - "Crea un {C:joker}comodín{}", - "{C:cry_epic}épico{} aleatorio, destruye", - "un {C:joker}comodín{} al azar", - }, - }, - c_cry_trade = { - name = "Intercambio", - text = { - "{C:attention}Pierde{} un vale aleatorio,", - "gana {C:attention}2{} vales aleatorios", - }, - }, - c_cry_typhoon = { - name = "Tifón", - text = { - "Agrega un {C:cry_azure}sello azur{}", - "a {C:attention}1{} carta seleccionada", - "de tu mano al azar", - }, - }, - c_cry_vacuum = { - name = "Vacío", - text = { - "Remueve {C:red}todas{} las {C:green}modificaciones{}", - "de {C:red}todas{} las cartas en tu mano,", - "gana {C:money}$#1#{} por cada {C:green}modificación{} removida", - "{C:inactive,s:0.7}(ej. mejoras, sellos, ediciones)", - }, - }, - c_cry_white_hole = { - name = "Agujero blanco", - text = { - "{C:attention}Remueve{} todos los niveles de mano,", - "mejora la mano de póker {C:legendary,E:1}más jugada{}", - "por {C:attention}3{} por cada nivel removido", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pozo rosa", - colour = "rosa", --this is used for auto-generated sticker localization - text = { - "Escalas de puntos requeridas más rápidas", - "para cada {C:attention}apuesta inicial", - }, - }, - stake_cry_brown = { - name = "Pozo marrón", - colour = "marrón", - text = { - "Todas las {C:attention}pegatinas{} son", - "compatibles entre sí", - }, - }, - stake_cry_yellow = { - name = "Pozo amarillo", - colour = "amarilla", - text = { - "Las {C:attention}pegatinas{} pueden aparecer", - "en todos los objetos comprables", - }, - }, - stake_cry_jade = { - name = "Pozo jade", - colour = "jade", - text = { - "Las cartas pueden sacarse {C:attention}boca abajo{}", - }, - }, - stake_cry_cyan = { - name = "Pozo celeste", - colour = "celeste", - text = { - "Comodines {C:green}inusuales{} y {C:red}raros{} son", - "menos probables de aparecer", - }, - }, - stake_cry_gray = { - name = "Pozo gris", - colour = "gris", - text = { - "Las renovaciones aumentan por {C:attention}$2{} cada una", - }, - }, - stake_cry_crimson = { - name = "Pozo carmesí", - colour = "carmesí", - text = { - "Los vales reaparecen en apuestas {C:attention}pares{}", - }, - }, - stake_cry_diamond = { - name = "Pozo diamante", - colour = "diamante", - text = { - "Debes vencer la apuesta {C:attention}10{} para ganar", - }, - }, - stake_cry_amber = { - name = "Pozo ámbar", - colour = "ambar", - text = { - "{C:attention}-1{} ranuras de paquete potenciador", - }, - }, - stake_cry_bronze = { - name = "Pozo bronce", - colour = "bronce", - text = { - "Los vales son {C:attention}50%{} más caros", - }, - }, - stake_cry_quartz = { - name = "Pozo cuarzo", - colour = "cuarzo", - text = { - "Los comodines pueden ser {C:attention}Fijados{}", - "{s:0.8,C:inactive}(Se queda fijado al extremo izquierdo){}", - }, - }, - stake_cry_ruby = { - name = "Pozo rubí", - colour = "rubí", - text = { - "Ciegas {C:attention}grandes{} pueden ser", - "ciegas {C:attention}jefes{}", - }, - }, - stake_cry_glass = { - name = "Pozo de vidrio", - colour = "de vidrio", - text = { - "Las cartas pueden {C:attention}destruirse{} al puntuar", - }, - }, - stake_cry_sapphire = { - name = "Pozo safiro", - colour = "safiro", - text = { - "Pierde {C:attention}25%{} del dinero actual", - "al final de la apuesta", - "{s:0.8,C:inactive}(máx. $10){}", - }, - }, - stake_cry_emerald = { - name = "Pozo esmeralda", - colour = "esmeralda", - text = { - "Cartas, paquetes y vales", - "pueden estar {C:attention}boca abajo{}", - "{s:0.8,C:inactive}(No se pueden ver hasta ser comprados){}", - }, - }, - stake_cry_platinum = { - name = "Pozo platino", - colour = "platina", - text = { - "Las ciegas pequeñas son {C:attention}removidas{}", - }, - }, - stake_cry_twilight = { - name = "Pozo crepúsculo", - colour = "crepúsculo", - text = { - "Las cartas pueden ser {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 en 10 probabilidades de ser destruidas cada ronda){}", - }, - }, - stake_cry_verdant = { - name = "Pozo verdoso", - colour = "verdosa", - text = { - "Escalas de puntos requeridas más rápidas", - "para cada {C:attention}apuesta inicial", - }, - }, - stake_cry_ember = { - name = "Pozo ascua", - colour = "ascua", - text = { - "Todos los objetos no entregan dinero al venderse", - }, - }, - stake_cry_dawn = { - name = "Pozo alba", - colour = "alba", - text = { - "Cartas tarot y espectrales seleccionan {C:attention}1", - "carta menos", - "{s:0.8,C:inactive}(mín. 1){}", - }, - }, - stake_cry_horizon = { - name = "Pozo del horizonte", - colour = "del horizonte", - text = { - "Agrega una {C:attention}carta al azar{}", - "a tu baraja al", - "seleccionar una {C:attention}ciega{}", - }, - }, - stake_cry_blossom = { - name = "Pozo florido", - colour = "florida", - text = { - "Las ciegas {C:attention}finales{} pueden aparecer", - "en {C:attention}cualquier{} apuesta", - }, - }, - stake_cry_azure = { - name = "Pozo azur", - colour = "azur", - text = { - "Los valores en comodines se reducen", - "por {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Pozo ascendente", - colour = "ascendente", - text = { - "{C:attention}-1{} ranura de carta en la tienda", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Etiqueta astral", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Etiqueta banana", - text = { - "Crea {C:attention}#1#", - "{C:inactive}(Debe haber espacio){}", - }, - }, - tag_cry_bettertop_up = { - name = "Mejor etiqueta de recarga", - text = { - "Genera hasta {C:attention}#1#", - "comodines {C:green}inusuales{}", - "{C:inactive}(Debe haber espacio)", - }, - }, - tag_cry_better_voucher = { - name = "Etiqueta de vale dorado", - text = { - "Agrega un {C:voucher}vale{} de nivel {C:attention}#1#{}", - "en la siguiente tienda", - }, - }, - tag_cry_blur = { - name = "Etiqueta borrosa", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Borroso{}", - }, - }, - tag_cry_booster = { - name = "Etiqueta potenciadora", - text = { - "El siguiente {C:cry_code}paquete potenciador{} contiene", - "el {C:attention}doble{} de cartas y", - "el {C:attention}doble{} de opciones", - }, - }, - tag_cry_bundle = { - name = "Etiqueta de manojo", - text = { - "Crea una {C:attention}Etiqueta estándar{}, {C:tarot}Etiqueta encantada{},", - "{C:attention}Etiqueta de bufón{}, y {C:planet}Etiqueta de meteoro", - }, - }, - tag_cry_cat = { - name = "Etiqueta de gato", - text = { "miau :3", "{C:inactive}Nivel {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Etiqueta de consola", - text = { - "Otorga gratis un", - "{C:cry_code}paquete de programa", - }, - }, - tag_cry_double_m = { - name = "Etiqueta MM", - text = { - "En la tienda hay", - "un {C:legendary}comodín M{} {C:dark_edition}contento", - }, - }, - tag_cry_empowered = { - name = "Etiqueta empoderada", - text = { - "Otorga un {C:spectral}paquete espectral gratis", - "con {C:legendary,E:1}El alma{} y {C:cry_exotic,E:1}Portal{}", - }, - }, - tag_cry_epic = { - name = "Etiqueta épica", - text = { - "En la tienda hay un {C:cry_epic}comodín épico{}", - "a mitad de precio", - }, - }, - tag_cry_gambler = { - name = "Etiqueta del jugador", - text = { - "{C:green}#1# en #2#{} probabilidades de crear", - "una {C:cry_exotic,E:1}Etiqueta empoderada", - }, - }, - tag_cry_glass = { - name = "Etiqueta frágil", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Frágil{}", - }, - }, - tag_cry_glitched = { - name = "Etiqueta errónea", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Erróneo{}", - }, - }, - tag_cry_gold = { - name = "Etiqueta dorada", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Dorado{}", - }, - }, - tag_cry_gourmand = { - name = "Etiqueta gourmand", - text = { - "En la tienda hay un", - "{C:attention}comodín de comida{} gratis", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Otorga gratis", - "un {C:cry_ascendant}Paquete meme", - }, - }, - tag_cry_m = { - name = "Etiqueta contenta", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Contento{}", - }, - }, - tag_cry_memory = { - name = "Etiqueta de memoria", - text = { - "Crea {C:attention}#1#{} copias de", - "la última {C:attention}etiqueta{} usada", - "durante esta partida", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - "{s:0.8,C:inactive}Actual: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Etiqueta mosaico", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Mosaico{}", - }, - }, - tag_cry_oversat = { - name = "Etiqueta sobresaturada", - text = { - "El siguiente comodín de la tienda", - "de la edición base es gratuito", - "y se convierte en {C:dark_edition}Sobresaturado{}", - }, - }, - tag_cry_quadruple = { - name = "Etiqueta cuádruple", - text = { - "Otorga {C:attention}#1#{} copias de la", - "siguiente {C:attention}Tag{} seleccionada", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - }, - }, - tag_cry_quintuple = { - name = "Etiqueta quíntuple", - text = { - "Otorga {C:attention}#1#{} copias de la", - "siguiente {C:attention}Tag{} seleccionada", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - }, - }, - tag_cry_rework = { - name = "Etiqueta de retrabajo", - text = { - "La tienda tiene un", - "{C:cry_code}#2#{} {C:dark_edition}#1#", - }, - }, - tag_cry_schematic = { - name = "Etiqueta de esquemáticas", - text = { - "La tienda tiene una", - "{C:attention}Lluvia de ideas", - }, - }, - tag_cry_scope = { - name = "Etiqueta de alcance", - text = { - "{C:attention}+#1# {C:blue}manos{} y {C:red}descartes{}", - "en la siguiente ronda", - }, - }, - tag_cry_triple = { - name = "Etiqueta triple", - text = { - "Otorga {C:attention}#1#{} copias de la", - "siguiente {C:attention}Tag{} seleccionada", - "{s:0.8,C:inactive}Etiquetas de copia excluidas", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "El autómata", - text = { - "Genera hasta {C:attention}#1#", - "cartas de {C:cry_code}código{} al azar", - "{C:inactive}(Debe haber espacio)", - }, - }, - c_cry_eclipse = { - name = "El eclipse", - text = { - "Mejora {C:attention}#1#{} carta", - "seleccionada a", - "una {C:attention}Carta de eco", - }, - }, - c_cry_meld = { - name = "Fusionar", - text = { - "Selecciona un {C:attention}comodín{} o", - "{C:attention}carta de juego{} para", - "hacerla {C:dark_edition}Doble cara", - }, - }, - c_cry_theblessing = { - name = "La bendición", - text = { - "Crea {C:attention}1{}", - "{C:attention}consumible{} aleatorio", - "{C:inactive}(Debe haber espacio){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglífico", - text = { - "Establece la apuesta a {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Lienzo en blanco", - text = { - "{C:attention}+#1#{} tamaño de mano", - }, - }, - v_cry_clone_machine = { - name = "Máquina de clonar", - text = { - "Las etiqueta dobles se vuelven", - "{C:attention}Etiquetas quíntuples{} y", - "son {C:attention}4X{} más comunes", - }, - }, - v_cry_command_prompt = { - name = "Símbolo del sistema", - text = { - "Las cartas de {C:cry_code}código{}", - "pueden aparecer", - "en la {C:attention}tienda{}", - }, - }, - v_cry_copies = { - name = "Copias", - text = { - "Las etiqueta dobles se vuelven", - "{C:attention}Etiquetas triples{} y son", - "son {C:attention}2X{} más comunes", - }, - }, - v_cry_curate = { - name = "Cura", - text = { - "Todas las cartas", - "aparecen con", - "una {C:dark_edition}edición{}", - }, - }, - v_cry_dexterity = { - name = "Destreza", - text = { - "Gana para siempre", - "{C:blue}+#1#{} mano(s)", - "por ronda", - }, - }, - v_cry_double_down = { - name = "Doble de apuesta", - text = { - "Después de cada ronda,", - "{X:dark_edition,C:white} X1.5 {} a todos los valores", - "en la parte trasera de las", - "cartas {C:dark_edition}doble cara{}" - }, - }, - v_cry_double_slit = { - name = "Abertura doble", - text = { - "{C:attention}Fusionar{} puede aparecer", - "en la tienda y", - "paquetes arcanos", - }, - }, - v_cry_double_vision = { - name = "Doble visión", - text = { - "Cartas {C:dark_edition}doble cara{} aparecen", - "{C:attention}4X{} más frecuentemente", - }, - }, - v_cry_fabric = { - name = "Fábrica universal", - text = { - "{C:dark_edition}+#1#{} ranura(s) de comodín", - }, - }, - v_cry_massproduct = { - name = "Producción en masa", - text = { - "Todas las cartas y paquetes", - "en la tienca cuestan {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Aumenta el límite", - "del interés obtenido en cada ronda", - "hasta {C:money}#1#${}", - }, - }, - v_cry_overstock_multi = { - name = "Multicapital", - text = { - "{C:attention}+#1#{} ranura(s) de carta y", - "{C:attention}+#1#{} ranura(s) de paquetes potenciadores", - "disponibles en la tienda", - }, - }, - v_cry_pacclimator = { - name = "Aclamador de planetas", - text = { - "Las cartas de {C:planet}planeta{} aparecen", - "{C:attention}#1# X{} veces más seguido", - "en la tienda", - "Todas las cartas de {C:planet}planeta{}", - "futuras son {C:green}gratis{}", - }, - }, - v_cry_pairamount_plus = { - name = "Parejamiento plus", --this is the best translation you get - text = { - "{C:attention}Reactiva{} todos los comodines M", - "ona vez por cada Pareja", - "{C:attention}contenida{} en la mano jugada", - }, - }, - v_cry_pairing = { - name = "Parejamiento", - text = { - "{C:attention}Reactiva{} todos los comodines M", - "si la mano jugada es una {C:attention}Pareja", - }, - }, - v_cry_quantum_computing = { - name = "Computación cuántica", - text = { - "Las cartas de {C:cry_code}código{} pueden aparecer", - "con edición {C:dark_edition}negativa{}", - }, - }, - v_cry_repair_man = { - name = "Reparejador", --ditto - text = { - "{C:attention}Reactiva{} todos los comodines M", - "si la mano jugada contiene una {C:attention}Pareja", - }, - }, - v_cry_rerollexchange = { - name = "Intercambio de renovaciones", - text = { - "Todas las renovaciones", - "cuestan {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Enlace satelital", - text = { - "Las cartas de {C:cry_code}código{} pueden", - "aparecer en cualquier", - "{C:attention}paquete celestial", - }, - }, - v_cry_scope = { - name = "Alcance galáctico", - text = { - "Crea la carta de {C:planet}planeta", - "por la {C:attention}mano de póker{} jugada", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Aclamador de tarot", - text = { - "Las cartas de {C:tarot}tarot{} aparecen", - "{C:attention}#1# X{} veces más seguido", - "en la tienda", - "Todas las cartas de {C:tarot}tarot{}", - "futuras son {C:green}gratis{}", - }, - }, - v_cry_tag_printer = { - name = "Impresor de etiquetas", - text = { - "Las etiqueta dobles se vuelven", - "{C:attention}Etiquetas cuadrúples{} y son", - "son {C:attention}3X{} más comunes", - }, - }, - v_cry_threers = { - name = "Las 3 Rs", - text={ - "Consigue {C:red}+#1#{}", - "descartes en cada ronda", - "de forma permanente", - }, - }, - v_cry_stickyhand = { - name = "Mano pegajosa", - text = { - "{C:attention}+#1#{} límite de", - "selección de cartas", - }, - }, - v_cry_grapplinghook = { - name = "Gancho de agarre", - text = { - "{C:attention}+#1#{} límite de", - "selección de cartas", - "{C:inactive,s:0.7}Puedes hacer mucho más con esto de lo que tú crees.{}", + c_cry_gateway = { + name = "Portal", + text = { + "Crea un {C:attention}comodín", + "{C:cry_exotic,E:1}exótico{}, destruye", + "los demás", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Aplica {C:attention}consumibles{} aleatorios", + "como si fueran {C:dark_edition}mejoras{}", + "a las cartas en la mano", + }, + }, + c_cry_lock = { + name = "Cerradura", + text = { + "Remueve {C:red}todas{} las pegatinas", + "de {C:red}todos{} los comodines,", + "y aplica {C:purple,E:1}Eterno{}", + "a un {C:attention}comodín{} aleatorio", + }, + }, + c_cry_pointer = { + name = "PUNTERO://", + text = { + "Crea una carta", + "de {C:cry_code}tu elección", + "{C:inactive,s:0.8}(Comodines exóticos #1#excluidos)", + }, + }, + c_cry_replica = { + name = "Réplica", + text = { + "Convierte todas las cartas", + "en tu mano", + "a una carta {C:attention}aleatoria{}", + "en tu mano", + }, + }, + c_cry_ritual = { + name = "Ritual", + text = { + "Aplica {C:dark_edition}Negativo{}, {C:dark_edition}Mosaico{},", + "o {C:dark_edition}Astral{} a {C:attention}#1#{}", + "carta de tu mano seleccionada", + }, + }, + c_cry_source = { + name = "Origen", + text = { + "Agrega un {C:cry_code}sello verde{}", + "a {C:attention}1{} carta seleccionada", + "de tu mano al azar", + }, + }, + c_cry_summoning = { + name = "Evocación", + text = { + "Crea un {C:joker}comodín{}", + "{C:cry_epic}épico{} aleatorio, destruye", + "un {C:joker}comodín{} al azar", + }, + }, + c_cry_trade = { + name = "Intercambio", + text = { + "{C:attention}Pierde{} un vale aleatorio,", + "gana {C:attention}2{} vales aleatorios", + }, + }, + c_cry_typhoon = { + name = "Tifón", + text = { + "Agrega un {C:cry_azure}sello azur{}", + "a {C:attention}1{} carta seleccionada", + "de tu mano al azar", + }, + }, + c_cry_vacuum = { + name = "Vacío", + text = { + "Remueve {C:red}todas{} las {C:green}modificaciones{}", + "de {C:red}todas{} las cartas en tu mano,", + "gana {C:money}$#1#{} por cada {C:green}modificación{} removida", + "{C:inactive,s:0.7}(ej. mejoras, sellos, ediciones)", + }, + }, + c_cry_white_hole = { + name = "Agujero blanco", + text = { + "{C:attention}Remueve{} todos los niveles de mano,", + "mejora la mano de póker {C:legendary,E:1}más jugada{}", + "por {C:attention}3{} por cada nivel removido", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pozo rosa", + colour = "rosa", --this is used for auto-generated sticker localization + text = { + "Escalas de puntos requeridas más rápidas", + "para cada {C:attention}apuesta inicial", + }, + }, + stake_cry_brown = { + name = "Pozo marrón", + colour = "marrón", + text = { + "Todas las {C:attention}pegatinas{} son", + "compatibles entre sí", + }, + }, + stake_cry_yellow = { + name = "Pozo amarillo", + colour = "amarilla", + text = { + "Las {C:attention}pegatinas{} pueden aparecer", + "en todos los objetos comprables", + }, + }, + stake_cry_jade = { + name = "Pozo jade", + colour = "jade", + text = { + "Las cartas pueden sacarse {C:attention}boca abajo{}", + }, + }, + stake_cry_cyan = { + name = "Pozo celeste", + colour = "celeste", + text = { + "Comodines {C:green}inusuales{} y {C:red}raros{} son", + "menos probables de aparecer", + }, + }, + stake_cry_gray = { + name = "Pozo gris", + colour = "gris", + text = { + "Las renovaciones aumentan por {C:attention}$2{} cada una", + }, + }, + stake_cry_crimson = { + name = "Pozo carmesí", + colour = "carmesí", + text = { + "Los vales reaparecen en apuestas {C:attention}pares{}", + }, + }, + stake_cry_diamond = { + name = "Pozo diamante", + colour = "diamante", + text = { + "Debes vencer la apuesta {C:attention}10{} para ganar", + }, + }, + stake_cry_amber = { + name = "Pozo ámbar", + colour = "ambar", + text = { + "{C:attention}-1{} ranuras de paquete potenciador", + }, + }, + stake_cry_bronze = { + name = "Pozo bronce", + colour = "bronce", + text = { + "Los vales son {C:attention}50%{} más caros", + }, + }, + stake_cry_quartz = { + name = "Pozo cuarzo", + colour = "cuarzo", + text = { + "Los comodines pueden ser {C:attention}Fijados{}", + "{s:0.8,C:inactive}(Se queda fijado al extremo izquierdo){}", + }, + }, + stake_cry_ruby = { + name = "Pozo rubí", + colour = "rubí", + text = { + "Ciegas {C:attention}grandes{} pueden ser", + "ciegas {C:attention}jefes{}", + }, + }, + stake_cry_glass = { + name = "Pozo de vidrio", + colour = "de vidrio", + text = { + "Las cartas pueden {C:attention}destruirse{} al puntuar", + }, + }, + stake_cry_sapphire = { + name = "Pozo safiro", + colour = "safiro", + text = { + "Pierde {C:attention}25%{} del dinero actual", + "al final de la apuesta", + "{s:0.8,C:inactive}(máx. $10){}", + }, + }, + stake_cry_emerald = { + name = "Pozo esmeralda", + colour = "esmeralda", + text = { + "Cartas, paquetes y vales", + "pueden estar {C:attention}boca abajo{}", + "{s:0.8,C:inactive}(No se pueden ver hasta ser comprados){}", + }, + }, + stake_cry_platinum = { + name = "Pozo platino", + colour = "platina", + text = { + "Las ciegas pequeñas son {C:attention}removidas{}", + }, + }, + stake_cry_twilight = { + name = "Pozo crepúsculo", + colour = "crepúsculo", + text = { + "Las cartas pueden ser {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 en 10 probabilidades de ser destruidas cada ronda){}", + }, + }, + stake_cry_verdant = { + name = "Pozo verdoso", + colour = "verdosa", + text = { + "Escalas de puntos requeridas más rápidas", + "para cada {C:attention}apuesta inicial", + }, + }, + stake_cry_ember = { + name = "Pozo ascua", + colour = "ascua", + text = { + "Todos los objetos no entregan dinero al venderse", + }, + }, + stake_cry_dawn = { + name = "Pozo alba", + colour = "alba", + text = { + "Cartas tarot y espectrales seleccionan {C:attention}1", + "carta menos", + "{s:0.8,C:inactive}(mín. 1){}", + }, + }, + stake_cry_horizon = { + name = "Pozo del horizonte", + colour = "del horizonte", + text = { + "Agrega una {C:attention}carta al azar{}", + "a tu baraja al", + "seleccionar una {C:attention}ciega{}", + }, + }, + stake_cry_blossom = { + name = "Pozo florido", + colour = "florida", + text = { + "Las ciegas {C:attention}finales{} pueden aparecer", + "en {C:attention}cualquier{} apuesta", + }, + }, + stake_cry_azure = { + name = "Pozo azur", + colour = "azur", + text = { + "Los valores en comodines se reducen", + "por {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Pozo ascendente", + colour = "ascendente", + text = { + "{C:attention}-1{} ranura de carta en la tienda", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Etiqueta astral", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Etiqueta banana", + text = { + "Crea {C:attention}#1#", + "{C:inactive}(Debe haber espacio){}", + }, + }, + tag_cry_bettertop_up = { + name = "Mejor etiqueta de recarga", + text = { + "Genera hasta {C:attention}#1#", + "comodines {C:green}inusuales{}", + "{C:inactive}(Debe haber espacio)", + }, + }, + tag_cry_better_voucher = { + name = "Etiqueta de vale dorado", + text = { + "Agrega un {C:voucher}vale{} de nivel {C:attention}#1#{}", + "en la siguiente tienda", + }, + }, + tag_cry_blur = { + name = "Etiqueta borrosa", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Borroso{}", + }, + }, + tag_cry_booster = { + name = "Etiqueta potenciadora", + text = { + "El siguiente {C:cry_code}paquete potenciador{} contiene", + "el {C:attention}doble{} de cartas y", + "el {C:attention}doble{} de opciones", + }, + }, + tag_cry_bundle = { + name = "Etiqueta de manojo", + text = { + "Crea una {C:attention}Etiqueta estándar{}, {C:tarot}Etiqueta encantada{},", + "{C:attention}Etiqueta de bufón{}, y {C:planet}Etiqueta de meteoro", + }, + }, + tag_cry_cat = { + name = "Etiqueta de gato", + text = { "miau :3", "{C:inactive}Nivel {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Etiqueta de consola", + text = { + "Otorga gratis un", + "{C:cry_code}paquete de programa", + }, + }, + tag_cry_double_m = { + name = "Etiqueta MM", + text = { + "En la tienda hay", + "un {C:legendary}comodín M{} {C:dark_edition}contento", + }, + }, + tag_cry_empowered = { + name = "Etiqueta empoderada", + text = { + "Otorga un {C:spectral}paquete espectral gratis", + "con {C:legendary,E:1}El alma{} y {C:cry_exotic,E:1}Portal{}", + }, + }, + tag_cry_epic = { + name = "Etiqueta épica", + text = { + "En la tienda hay un {C:cry_epic}comodín épico{}", + "a mitad de precio", + }, + }, + tag_cry_gambler = { + name = "Etiqueta del jugador", + text = { + "{C:green}#1# en #2#{} probabilidades de crear", + "una {C:cry_exotic,E:1}Etiqueta empoderada", + }, + }, + tag_cry_glass = { + name = "Etiqueta frágil", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Frágil{}", + }, + }, + tag_cry_glitched = { + name = "Etiqueta errónea", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Erróneo{}", + }, + }, + tag_cry_gold = { + name = "Etiqueta dorada", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Dorado{}", + }, + }, + tag_cry_gourmand = { + name = "Etiqueta gourmand", + text = { + "En la tienda hay un", + "{C:attention}comodín de comida{} gratis", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Otorga gratis", + "un {C:cry_ascendant}Paquete meme", + }, + }, + tag_cry_m = { + name = "Etiqueta contenta", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Contento{}", + }, + }, + tag_cry_memory = { + name = "Etiqueta de memoria", + text = { + "Crea {C:attention}#1#{} copias de", + "la última {C:attention}etiqueta{} usada", + "durante esta partida", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + "{s:0.8,C:inactive}Actual: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Etiqueta mosaico", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Mosaico{}", + }, + }, + tag_cry_oversat = { + name = "Etiqueta sobresaturada", + text = { + "El siguiente comodín de la tienda", + "de la edición base es gratuito", + "y se convierte en {C:dark_edition}Sobresaturado{}", + }, + }, + tag_cry_quadruple = { + name = "Etiqueta cuádruple", + text = { + "Otorga {C:attention}#1#{} copias de la", + "siguiente {C:attention}Tag{} seleccionada", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + }, + }, + tag_cry_quintuple = { + name = "Etiqueta quíntuple", + text = { + "Otorga {C:attention}#1#{} copias de la", + "siguiente {C:attention}Tag{} seleccionada", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + }, + }, + tag_cry_rework = { + name = "Etiqueta de retrabajo", + text = { + "La tienda tiene un", + "{C:cry_code}#2#{} {C:dark_edition}#1#", + }, + }, + tag_cry_schematic = { + name = "Etiqueta de esquemáticas", + text = { + "La tienda tiene una", + "{C:attention}Lluvia de ideas", + }, + }, + tag_cry_scope = { + name = "Etiqueta de alcance", + text = { + "{C:attention}+#1# {C:blue}manos{} y {C:red}descartes{}", + "en la siguiente ronda", + }, + }, + tag_cry_triple = { + name = "Etiqueta triple", + text = { + "Otorga {C:attention}#1#{} copias de la", + "siguiente {C:attention}Tag{} seleccionada", + "{s:0.8,C:inactive}Etiquetas de copia excluidas", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "El autómata", + text = { + "Genera hasta {C:attention}#1#", + "cartas de {C:cry_code}código{} al azar", + "{C:inactive}(Debe haber espacio)", + }, + }, + c_cry_eclipse = { + name = "El eclipse", + text = { + "Mejora {C:attention}#1#{} carta", + "seleccionada a", + "una {C:attention}Carta de eco", + }, + }, + c_cry_meld = { + name = "Fusionar", + text = { + "Selecciona un {C:attention}comodín{} o", + "{C:attention}carta de juego{} para", + "hacerla {C:dark_edition}Doble cara", + }, + }, + c_cry_theblessing = { + name = "La bendición", + text = { + "Crea {C:attention}1{}", + "{C:attention}consumible{} aleatorio", + "{C:inactive}(Debe haber espacio){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglífico", + text = { + "Establece la apuesta a {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Lienzo en blanco", + text = { + "{C:attention}+#1#{} tamaño de mano", + }, + }, + v_cry_clone_machine = { + name = "Máquina de clonar", + text = { + "Las etiqueta dobles se vuelven", + "{C:attention}Etiquetas quíntuples{} y", + "son {C:attention}4X{} más comunes", + }, + }, + v_cry_command_prompt = { + name = "Símbolo del sistema", + text = { + "Las cartas de {C:cry_code}código{}", + "pueden aparecer", + "en la {C:attention}tienda{}", + }, + }, + v_cry_copies = { + name = "Copias", + text = { + "Las etiqueta dobles se vuelven", + "{C:attention}Etiquetas triples{} y son", + "son {C:attention}2X{} más comunes", + }, + }, + v_cry_curate = { + name = "Cura", + text = { + "Todas las cartas", + "aparecen con", + "una {C:dark_edition}edición{}", + }, + }, + v_cry_dexterity = { + name = "Destreza", + text = { + "Gana para siempre", + "{C:blue}+#1#{} mano(s)", + "por ronda", + }, + }, + v_cry_double_down = { + name = "Doble de apuesta", + text = { + "Después de cada ronda,", + "{X:dark_edition,C:white} X1.5 {} a todos los valores", + "en la parte trasera de las", + "cartas {C:dark_edition}doble cara{}", + }, + }, + v_cry_double_slit = { + name = "Abertura doble", + text = { + "{C:attention}Fusionar{} puede aparecer", + "en la tienda y", + "paquetes arcanos", + }, + }, + v_cry_double_vision = { + name = "Doble visión", + text = { + "Cartas {C:dark_edition}doble cara{} aparecen", + "{C:attention}4X{} más frecuentemente", + }, + }, + v_cry_fabric = { + name = "Fábrica universal", + text = { + "{C:dark_edition}+#1#{} ranura(s) de comodín", + }, + }, + v_cry_massproduct = { + name = "Producción en masa", + text = { + "Todas las cartas y paquetes", + "en la tienca cuestan {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Aumenta el límite", + "del interés obtenido en cada ronda", + "hasta {C:money}#1#${}", + }, + }, + v_cry_overstock_multi = { + name = "Multicapital", + text = { + "{C:attention}+#1#{} ranura(s) de carta y", + "{C:attention}+#1#{} ranura(s) de paquetes potenciadores", + "disponibles en la tienda", + }, + }, + v_cry_pacclimator = { + name = "Aclamador de planetas", + text = { + "Las cartas de {C:planet}planeta{} aparecen", + "{C:attention}#1# X{} veces más seguido", + "en la tienda", + "Todas las cartas de {C:planet}planeta{}", + "futuras son {C:green}gratis{}", + }, + }, + v_cry_pairamount_plus = { + name = "Parejamiento plus", --this is the best translation you get + text = { + "{C:attention}Reactiva{} todos los comodines M", + "ona vez por cada Pareja", + "{C:attention}contenida{} en la mano jugada", + }, + }, + v_cry_pairing = { + name = "Parejamiento", + text = { + "{C:attention}Reactiva{} todos los comodines M", + "si la mano jugada es una {C:attention}Pareja", + }, + }, + v_cry_quantum_computing = { + name = "Computación cuántica", + text = { + "Las cartas de {C:cry_code}código{} pueden aparecer", + "con edición {C:dark_edition}negativa{}", + }, + }, + v_cry_repair_man = { + name = "Reparejador", --ditto + text = { + "{C:attention}Reactiva{} todos los comodines M", + "si la mano jugada contiene una {C:attention}Pareja", + }, + }, + v_cry_rerollexchange = { + name = "Intercambio de renovaciones", + text = { + "Todas las renovaciones", + "cuestan {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Enlace satelital", + text = { + "Las cartas de {C:cry_code}código{} pueden", + "aparecer en cualquier", + "{C:attention}paquete celestial", + }, + }, + v_cry_scope = { + name = "Alcance galáctico", + text = { + "Crea la carta de {C:planet}planeta", + "por la {C:attention}mano de póker{} jugada", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Aclamador de tarot", + text = { + "Las cartas de {C:tarot}tarot{} aparecen", + "{C:attention}#1# X{} veces más seguido", + "en la tienda", + "Todas las cartas de {C:tarot}tarot{}", + "futuras son {C:green}gratis{}", + }, + }, + v_cry_tag_printer = { + name = "Impresor de etiquetas", + text = { + "Las etiqueta dobles se vuelven", + "{C:attention}Etiquetas cuadrúples{} y son", + "son {C:attention}3X{} más comunes", + }, + }, + v_cry_threers = { + name = "Las 3 Rs", + text = { + "Consigue {C:red}+#1#{}", + "descartes en cada ronda", + "de forma permanente", + }, + }, + v_cry_stickyhand = { + name = "Mano pegajosa", + text = { + "{C:attention}+#1#{} límite de", + "selección de cartas", + }, + }, + v_cry_grapplinghook = { + name = "Gancho de agarre", + text = { + "{C:attention}+#1#{} límite de", + "selección de cartas", + "{C:inactive,s:0.7}Puedes hacer mucho más con esto de lo que tú crees.{}", + }, + }, + v_cry_hyperspacetether = { + name = "Cuerda hiperespacial", + text = { + "{C:attention}+#1#{} límite de ", + "selección de cartas", + "{C:inactive,s:0.7}NOTA: Tendrá más funcionalidades después{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# en #2#{} probabilidades de ser", + "destruida en cada ronda", + }, + }, + cry_rigged = { + name = "Amañada", + text = { + "Todas las probabilidades {C:cry_code}enumeradas{}", + "son {C:cry_code}garantizadas", + }, + }, + cry_hooked = { + name = "Enganchada", + text = { + "Cuando este comodín se {C:cry_code}activa{},", + "activa {C:cry_code}#1#", + }, + }, + cry_flickering = { + name = "Parpadeante", + text = { + "Destruido después de", + "{C:attention}#1#{} activaciones", + "{C:inactive}({C:attention}#2#{C:inactive} restantes)", + }, + }, + cry_flickering_desc = { --used by choco dice + name = "Parpadeante", + text = { + "Destruido después de", + "{C:attention}#1#{} activaciones", + }, + }, + cry_possessed = { + name = "Poseída", + text = { + "{C:attention}Deshabilita{} e {C:attention}invierte{}", + "los efectos, si es posible", + "Se destruye junto con {C:attention}Fantasma", + }, + }, + food_jokers = { + name = "Comodines de comida", + text = { + "{s:0.8}Banano, Huevo, Helado, Cavendish, Habichuela negra,", + "{s:0.8}Cola sin azúcar, Palomitas de maíz, Ramen,", + "{s:0.8}Agua con gas, Pickle, Ají picante, Caramelo,", + "{s:0.8}Dulce nostálgico, M de comida rápida, etc.", + }, + }, + ev_cry_choco0 = { + name = "", + text = { + "Detalles de un {C:cry_ascendant,E:1}evento{}", + "activo aparecerán aquí", + }, + }, + ev_cry_choco1 = { + name = "1: Posesión", + text = { + "{C:attention}Comodines{} y cartas de juego tienen", + "{C:green}1 en 3{} probabilidades of ser Parpadeantes", + "Crea un {C:attention}Fantasma", + "{C:inactive,s:0.7}Has sido poseído por un fantasma, y tu", + "{C:inactive,s:0.7}consciencia está parpadeando.", + }, + }, + ev_cry_choco2 = { + name = "2: Casa embrujada", + text = { + "No puedes saltar {C:attention}ciegas{}", + "Sólo una {C:attention}renovación{} permitida por tienda", + "Los precios de {C:attention}vales{} se duplican", + "{C:inactive,s:0.7}¡Los espíritus espeluznantes han tomado el control!", + "{C:inactive,s:0.7}¡No toques nada y sale lo más rápido que puedas!", + }, + }, + ev_cry_choco3 = { + name = "3: Brebajes de bruja", + text = { + "Crea 3 {C:attention}Pociones", + "Usa una antes del final de la {C:attention}ciega pequeña{},", + "o {C:attention}todos{} los efectos malos se aplicarán en esta {C:attention}apuesta", + "{C:inactive,s:0.7}¡Has sido secuestrado por una bruja!", + "{C:inactive,s:0.7}Ella te ofrece 3 pociones, mirándote de cerca.", + "{C:inactive,s:0.7}Escoje una, para que ella no escoja por tí.", + }, + }, + ev_cry_choco4 = { + name = "4: Abismo lunar", + text = { + "Las cartas jugadas tienen una {C:green}1 en 4{} probabilidades", + "de convertirse en una figura de {C:club}tréboles{} al azar", + "Divide {C:attention}multi{} por la cantidad de cartas de figura jugadas", + "{C:inactive,s:0.7}Hasta un hombre que es puro al corazón", + "{C:inactive,s:0.7}y dice sus oraciones a la noche...", + }, + }, + ev_cry_choco5 = { + name = "5: Chupasangre", + text = { + "Remueve {C:attention}mejoras{} de todas las cartas jugadas", + "{C:green}1 en 3{} chance de destruir", + "cartas de {C:heart}corazones{} y {C:diamond}diamantes{}", + "{C:inactive,s:0.7}Ten cuidado en la oscuridad de la noche, por", + "{C:inactive,s:0.7,E:1}ellos en las sombras{C:inactive,s:0.7} buscan saciar su sed...", + }, + }, + ev_cry_choco6 = { + name = "6: Por favor toma uno", + text = { + "Al {C:attention}terminar una ronda{}, abre un", + "paquete {C:attention}potenciador{} al azar", + "{C:inactive,s:0.7}Mientras paseas por las calles, ves una", + "{C:inactive,s:0.7}caja de varios paquetes potenciadores. ¡Mejor agarrar uno!", + }, + }, + ev_cry_choco7 = { + name = "7: Ambiente festivo", + text = { + "Crea 3 {C:attention}Dulce o truco{} y 1 {C:attention}Cesto de dulce", + "Las tiendas tienen un {C:attention}Dulce o truco{} cada ronda", + "Los {C:cry_candy}dulces{} otorgan {C:money}$3{} al obtenerse", + "{C:inactive,s:0.7}Toda la vecindad está decorada por el empeño espeluznante,", + "{C:inactive,s:0.7}¡ven a disfrutar del ambiente festivo!", + }, + }, + ev_cry_choco8 = { + name = "8: Lluvia de dulces", + text = { + "Al derrotar una {C:attention}ciega{}, consigue 1 {C:cry_candy}dulce{}", + "por cada mano restante; obtén un {C:attention}comodín de comida{}", + "cuando un {C:cry_candy}dulce{} es generado", + "{C:inactive,s:0.7}¡Los dulces llueven del cielo! Rápido,", + "{C:inactive,s:0.7,E:1}¡agarra lo más que puedas!", + }, + }, + ev_cry_choco9 = { + name = "9: Riquezas fantasmales", + text = { + "Gana {C:money}$20", + "Todo el {C:money}dinero{} conseguido {C:attention}duplicado", + "{C:inactive,s:0.7}¡El espectro de un pariente desaparecido tuyo", + "{C:inactive,s:0.7}te visita en el medio de la noche!", + "{C:inactive,s:0.7}Sin una palabra, colocan una bolsa de dinero en tus manos,", + "{C:inactive,s:0.7}sonríen cálidamente, y se despiden mientras se desvanecen en el aire.", + }, + }, + ev_cry_choco10 = { + name = "10: Antigüedad venerada", + text = { + "Un {C:attention}comodín{} {C:legendary}legendario{} aparece", + "en la ranura de {C:attention}vales{} por {C:money}$50", + "Sólo comprable como el {C:attention}último{} objeto en la tienda", + "{C:inactive,s:0.7}Has atraído la atención del espíritu de una rélica,", + "{C:inactive,s:0.7}pero no va a ser fácil de calmar.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Actualizaciones{s:0.7} están deshabilitadas por defecto ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eterno", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Eternos{}", + }, + }, + cry_perishable_booster = { + name = "Perecedero", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Perecederos{}", + }, + }, + cry_rental_booster = { + name = "De alquiler", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Fijado", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Fijados{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "Todas las cartas en el paquete", + "son {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eterno", + text = { + "No puede ser intercambiado", + }, + }, + cry_perishable_voucher = { + name = "Perecedero", + text = { + "Se agota al cabo de ", + "{C:attention}#1#{} rondas", + "{C:inactive}({C:attention}#2#{C:inactive} restantes)", + }, + }, + cry_rental_voucher = { + name = "De alquiler", + text = { + "Pierdes {C:money}#1#${}", + "al final de la ronda", + }, + }, + cry_pinned_voucher = { + name = "Fijado", + text = { + "Se mantiene en la tienda", + "hasta que sea redimido", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# en #2#{} probabilidades de ser", + "perdido en cada ronda", + }, + }, + cry_perishable_consumeable = { + name = "Perecedero", + text = { + "Se agota al", + "final de la ronda", + }, + }, + cry_rental_consumeable = { + name = "De alquiler", + text = { + "Pierdes {C:money}#1#${}", + "al final de la ronda, y en uso", + }, + }, + cry_pinned_consumeable = { + name = "Fijado", + text = { + "No puedes usar consumibles", + "no-{C:attention}fijados{}", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# en #2#{} probabilidades de", + "no hacer nada en uso", + }, + }, + p_cry_code_normal_1 = { + name = "Paquete de programa", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_code_normal_2 = { + name = "Paquete de programa", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_code_jumbo_1 = { + name = "Paquete de programa jumbo", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_code_mega_1 = { + name = "Paquete de programa mega", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas{} de {C:cry_code}código{}", + }, + }, + p_cry_empowered = { + name = "Paquete espectral [Etiqueta empoderada]", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas {C:spectral}espectrales{}", + "{s:0.8,C:inactive}(Generado por Etiqueta empoderada)", + }, + }, + p_cry_meme_1 = { + name = "Paquete meme", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas de {C:joker}comodín meme{}", + }, + }, + p_cry_meme_two = { + name = "Paquete meme", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas de {C:joker}comodín meme{}", + }, + }, + p_cry_meme_three = { + name = "Paquete meme", + text = { + "Elige {C:attention}#1#{} de hasta", + "{C:attention}#2# cartas de {C:joker}comodín meme{}", + }, + }, + undiscovered_code = { + name = "Por descubrir", + text = { + "Compra o usa", + "esta carta", + "en una partida sin códigos", + "para saber lo que hace", + }, + }, + undiscovered_unique = { + name = "Por descubrir", + text = { + "Compra o usa", + "esta carta", + "en una partida sin códigos", + "para saber lo que hace", + }, + }, + cry_green_seal = { + name = "Sello verde", + text = { + "Crea una carta de {C:cry_code}código{}", + "cuando se juega y no puntúa", + "{C:inactive}(Debe haver espacio)", + }, + }, + cry_azure_seal = { + name = "Sello azur", + text = { + "Crea {C:attention}#1#{} {C:planet}planetas{}", + "{C:dark_edition}negativas{} por la {C:attention}mano de póker{}", + "jugada, y {C:red}destruye{} esta carta", + }, + }, + blurred_sdm0 = { + name = "a", + text = { + '{C:inactive,s:0.8}"Odio esta carta" - SDM_0, 2024{}', + }, + }, + }, + Unique = { + c_cry_potion = { + name = "Poción", + text = { + "Aplica un {C:attention}efecto malo{}", + "desconocido al usarse", + "{C:inactive,s:0.7}Obtenido por Dado de chocolate", + }, + }, + }, + }, + misc = { + poker_hands = { + ["cry_Bulwark"] = "Baluarte", + ["cry_Clusterfuck"] = "Lío de mierda", + ["cry_UltPair"] = "Pareja suprema", + ["cry_WholeDeck"] = "Toda la puta baraja", + }, + poker_hand_descriptions = { + ["cry_Bulwark"] = { + "5 cartas, sin categoría ni palo", + }, + ["cry_Clusterfuck"] = { + "Al menos 8 cartas que no", + "contengan una Pareja, Color o Escalera", + }, + ["cry_UltPair"] = { + "Dos Doble pareja, donde cada", + "Doble pareja es un palo único, por un total", + "de 2 palos entre las dos", + }, + ["cry_WholeDeck"] = { + "Una mano que contenga cada", + "carta en una baraja de 52 cartas.", + "¿Estás loco?", + }, + }, + achievement_names = { + ach_cry_ace_in_crash = "Un ACE En Mi Bolsillo", + ach_cry_blurred_blurred_joker = "Legalmente Ciego", + ach_cry_bullet_hell = "Shooter Maníaco", + ach_cry_break_infinity = "Rompe El Infinito", + ach_cry_cryptid_the_cryptid = "Criptida El Críptido", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Pase De Googol Play", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Corredor De Bienes Raíces", + ach_cry_jokes_on_you = "La Broma Es Para Tí, Amigo!", + ach_cry_niw_uoy = "!ETSANAG¡", + ach_cry_now_the_fun_begins = "Ahora Se Pone Lo Bueno", + ach_cry_patience_virtue = "La Paciencia Es Una Virtud", + ach_cry_perfectly_balanced = "Perfectamente Balanceado", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Atasco De Tráfico", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "Te Dijimos Que No Lo Hagas", + ach_cry_what_have_you_done = "¡¿QUÉ ACABAS DE HACER?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Consigue Comodín Borroso borroso", + ach_cry_bullet_hell = "Consigue 15 comodines AP", + ach_cry_break_infinity = "Puntúa 1.79e308 fichas en una sola mano", + ach_cry_cryptid_the_cryptid = "Usa Críptido en Críptido", + ach_cry_exodia = "Consigue 5 comodines exóticos", + ach_cry_freak_house = "Juega un Full de color consistiendo de 6s y 9s de corazones mientras tienes a Nice", + ach_cry_googol_play_pass = "Amaña una Carta de Googol Play", + ach_cry_haxxor = "Usa un código de trampas", + ach_cry_home_realtor = "Activa Casa Feliz antes de la apuesta 8 (sin BdE/Antimateria)", + ach_cry_jokes_on_you = "Activa el efecto de La Broma en la apuesta 1 y gana la partida", + ach_cry_niw_uoy = "Llega a la apuesta -8", + ach_cry_now_the_fun_begins = "Consigue a Lienzo", + ach_cry_patience_virtue = "Espera a Ciclo Lavanda por 2 minutos antes de jugar la primera mano y vence la ciega", + ach_cry_perfectly_balanced = "Completa la Baraja Muy Justa en Ascendant Stake", + ach_cry_pull_request = "Haz que ://COMMIT haga aparecer el mismo comodín que destruyó", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Gana en 1 ronda", + ach_cry_used_crash = "Usa ://CHOQUE", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Características", + cry_set_music = "Música", + cry_set_enable_features = "Selecciona las características para activar (se aplica al reiniciar):", + cry_feat_achievements = "Logros", + ["cry_feat_antimatter deck"] = "Baraja de antimateria", + cry_feat_blinds = "Ciegas", + cry_feat_challenges = "Desafíos", + ["cry_feat_code cards"] = "Cartas de código", + ["cry_feat_misc. decks"] = "Barajas misceláneas", + ["cry_feat_https module"] = "Módulo HTTPS", + ["cry_feat_timer mechanics"] = "Mecánicas de temporizador", + ["cry_feat_enhanced decks"] = "Barajas mejoradas", + ["cry_feat_epic jokers"] = "Comodines épicos", + ["cry_feat_exotic jokers"] = "Comodines exóticos", + ["cry_feat_m jokers"] = "Comodines M", + cry_feat_menu = "Menú principal personalizado", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Comodines misceláneos", + cry_feat_planets = "Planetas", + cry_feat_jokerdisplay = "JokerDisplay (no hace nada)", + cry_feat_tags = "Etiquetas", + cry_feat_sleeves = "Mangas", + cry_feat_spectrals = "Espectrales", + cry_feat_spooky = "Actualización espeluznante", + ["cry_feat_more stakes"] = "Pozos", + cry_feat_vouchers = "Vales", + cry_mus_jimball = "Jimball (Funkytown por Lipps Inc. - Copyrighted)", + cry_mus_code = "Cartas de código (://LETS_BREAK_THE_GAME por HexaCryonic)", + cry_mus_exotic = "Comodines exóticos (Joker in Latin por AlexZGreat)", + cry_mus_high_score = "Alto puntaje (Final Boss [For Your Computer] por AlexZGreat)", - }, - }, - v_cry_hyperspacetether = { - name = "Cuerda hiperespacial", - text = { - "{C:attention}+#1#{} límite de ", - "selección de cartas", - "{C:inactive,s:0.7}NOTA: Tendrá más funcionalidades después{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# en #2#{} probabilidades de ser", - "destruida en cada ronda", - }, - }, - cry_rigged = { - name = "Amañada", - text = { - "Todas las probabilidades {C:cry_code}enumeradas{}", - "son {C:cry_code}garantizadas", - }, - }, - cry_hooked = { - name = "Enganchada", - text = { - "Cuando este comodín se {C:cry_code}activa{},", - "activa {C:cry_code}#1#", - }, - }, - cry_flickering = { - name = "Parpadeante", - text = { - "Destruido después de", - "{C:attention}#1#{} activaciones", - "{C:inactive}({C:attention}#2#{C:inactive} restantes)" - }, - }, - cry_flickering_desc = { --used by choco dice - name = "Parpadeante", - text = { - "Destruido después de", - "{C:attention}#1#{} activaciones", - }, - }, - cry_possessed = { - name = "Poseída", - text = { - "{C:attention}Deshabilita{} e {C:attention}invierte{}", - "los efectos, si es posible", - "Se destruye junto con {C:attention}Fantasma" - }, - }, - food_jokers = { - name = "Comodines de comida", - text = { - "{s:0.8}Banano, Huevo, Helado, Cavendish, Habichuela negra,", - "{s:0.8}Cola sin azúcar, Palomitas de maíz, Ramen,", - "{s:0.8}Agua con gas, Pickle, Ají picante, Caramelo,", - "{s:0.8}Dulce nostálgico, M de comida rápida, etc.", - }, - }, - ev_cry_choco0 = { - name = "", - text = { - "Detalles de un {C:cry_ascendant,E:1}evento{}", - "activo aparecerán aquí" - } - }, - ev_cry_choco1 = { - name = "1: Posesión", - text = { - "{C:attention}Comodines{} y cartas de juego tienen", - "{C:green}1 en 3{} probabilidades of ser Parpadeantes", - "Crea un {C:attention}Fantasma", - "{C:inactive,s:0.7}Has sido poseído por un fantasma, y tu", - "{C:inactive,s:0.7}consciencia está parpadeando." - } - }, - ev_cry_choco2 = { - name = "2: Casa embrujada", - text = { - "No puedes saltar {C:attention}ciegas{}", - "Sólo una {C:attention}renovación{} permitida por tienda", - "Los precios de {C:attention}vales{} se duplican", - "{C:inactive,s:0.7}¡Los espíritus espeluznantes han tomado el control!", - "{C:inactive,s:0.7}¡No toques nada y sale lo más rápido que puedas!", - } - }, - ev_cry_choco3 = { - name = "3: Brebajes de bruja", - text = { - "Crea 3 {C:attention}Pociones", - "Usa una antes del final de la {C:attention}ciega pequeña{},", - "o {C:attention}todos{} los efectos malos se aplicarán en esta {C:attention}apuesta", - "{C:inactive,s:0.7}¡Has sido secuestrado por una bruja!", - "{C:inactive,s:0.7}Ella te ofrece 3 pociones, mirándote de cerca.", - "{C:inactive,s:0.7}Escoje una, para que ella no escoja por tí.", - } - }, - ev_cry_choco4 = { - name = "4: Abismo lunar", - text = { - "Las cartas jugadas tienen una {C:green}1 en 4{} probabilidades", - "de convertirse en una figura de {C:club}tréboles{} al azar", - "Divide {C:attention}multi{} por la cantidad de cartas de figura jugadas", - "{C:inactive,s:0.7}Hasta un hombre que es puro al corazón", - "{C:inactive,s:0.7}y dice sus oraciones a la noche..." - } - }, - ev_cry_choco5 = { - name = "5: Chupasangre", - text = { - "Remueve {C:attention}mejoras{} de todas las cartas jugadas", - "{C:green}1 en 3{} chance de destruir", - "cartas de {C:heart}corazones{} y {C:diamond}diamantes{}", - "{C:inactive,s:0.7}Ten cuidado en la oscuridad de la noche, por", - "{C:inactive,s:0.7,E:1}ellos en las sombras{C:inactive,s:0.7} buscan saciar su sed..." - } - }, - ev_cry_choco6 = { - name = "6: Por favor toma uno", - text = { - "Al {C:attention}terminar una ronda{}, abre un", - "paquete {C:attention}potenciador{} al azar", - "{C:inactive,s:0.7}Mientras paseas por las calles, ves una", - "{C:inactive,s:0.7}caja de varios paquetes potenciadores. ¡Mejor agarrar uno!" - } - }, - ev_cry_choco7 = { - name = "7: Ambiente festivo", - text = { - "Crea 3 {C:attention}Dulce o truco{} y 1 {C:attention}Cesto de dulce", - "Las tiendas tienen un {C:attention}Dulce o truco{} cada ronda", - "Los {C:cry_candy}dulces{} otorgan {C:money}$3{} al obtenerse", - "{C:inactive,s:0.7}Toda la vecindad está decorada por el empeño espeluznante,", - "{C:inactive,s:0.7}¡ven a disfrutar del ambiente festivo!" - } - }, - ev_cry_choco8 = { - name = "8: Lluvia de dulces", - text = { - "Al derrotar una {C:attention}ciega{}, consigue 1 {C:cry_candy}dulce{}", - "por cada mano restante; obtén un {C:attention}comodín de comida{}", - "cuando un {C:cry_candy}dulce{} es generado", - "{C:inactive,s:0.7}¡Los dulces llueven del cielo! Rápido,", - "{C:inactive,s:0.7,E:1}¡agarra lo más que puedas!" - } - }, - ev_cry_choco9 = { - name = "9: Riquezas fantasmales", - text = { - "Gana {C:money}$20", - "Todo el {C:money}dinero{} conseguido {C:attention}duplicado", - "{C:inactive,s:0.7}¡El espectro de un pariente desaparecido tuyo", - "{C:inactive,s:0.7}te visita en el medio de la noche!", - "{C:inactive,s:0.7}Sin una palabra, colocan una bolsa de dinero en tus manos,", - "{C:inactive,s:0.7}sonríen cálidamente, y se despiden mientras se desvanecen en el aire.", - } - }, - ev_cry_choco10 = { - name = "10: Antigüedad venerada", - text = { - "Un {C:attention}comodín{} {C:legendary}legendario{} aparece", - "en la ranura de {C:attention}vales{} por {C:money}$50", - "Sólo comprable como el {C:attention}último{} objeto en la tienda", - "{C:inactive,s:0.7}Has atraído la atención del espíritu de una rélica,", - "{C:inactive,s:0.7}pero no va a ser fácil de calmar.", - } - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Actualizaciones{s:0.7} están deshabilitadas por defecto ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eterno", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Eternos{}", - }, - }, - cry_perishable_booster = { - name = "Perecedero", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Perecederos{}", - }, - }, - cry_rental_booster = { - name = "De alquiler", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Fijado", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Fijados{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "Todas las cartas en el paquete", - "son {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eterno", - text = { - "No puede ser intercambiado", - }, - }, - cry_perishable_voucher = { - name = "Perecedero", - text = { - "Se agota al cabo de ", - "{C:attention}#1#{} rondas", - "{C:inactive}({C:attention}#2#{C:inactive} restantes)", - }, - }, - cry_rental_voucher = { - name = "De alquiler", - text = { - "Pierdes {C:money}#1#${}", - "al final de la ronda", - }, - }, - cry_pinned_voucher = { - name = "Fijado", - text = { - "Se mantiene en la tienda", - "hasta que sea redimido", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# en #2#{} probabilidades de ser", - "perdido en cada ronda", - }, - }, - cry_perishable_consumeable = { - name = "Perecedero", - text = { - "Se agota al", - "final de la ronda", - }, - }, - cry_rental_consumeable = { - name = "De alquiler", - text = { - "Pierdes {C:money}#1#${}", - "al final de la ronda, y en uso", - }, - }, - cry_pinned_consumeable = { - name = "Fijado", - text = { - "No puedes usar consumibles", - "no-{C:attention}fijados{}", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# en #2#{} probabilidades de", - "no hacer nada en uso", - }, - }, - p_cry_code_normal_1 = { - name = "Paquete de programa", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_code_normal_2 = { - name = "Paquete de programa", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_code_jumbo_1 = { - name = "Paquete de programa jumbo", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_code_mega_1 = { - name = "Paquete de programa mega", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas{} de {C:cry_code}código{}", - }, - }, - p_cry_empowered = { - name = "Paquete espectral [Etiqueta empoderada]", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas {C:spectral}espectrales{}", - "{s:0.8,C:inactive}(Generado por Etiqueta empoderada)", - }, - }, - p_cry_meme_1 = { - name = "Paquete meme", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas de {C:joker}comodín meme{}", - }, - }, - p_cry_meme_two = { - name = "Paquete meme", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas de {C:joker}comodín meme{}", - }, - }, - p_cry_meme_three = { - name = "Paquete meme", - text = { - "Elige {C:attention}#1#{} de hasta", - "{C:attention}#2# cartas de {C:joker}comodín meme{}", - }, - }, - undiscovered_code = { - name = "Por descubrir", - text = { - "Compra o usa", - "esta carta", - "en una partida sin códigos", - "para saber lo que hace", - }, - }, - undiscovered_unique = { - name = "Por descubrir", - text = { - "Compra o usa", - "esta carta", - "en una partida sin códigos", - "para saber lo que hace", - } - }, - cry_green_seal = { - name = "Sello verde", - text = { - "Crea una carta de {C:cry_code}código{}", - "cuando se juega y no puntúa", - "{C:inactive}(Debe haver espacio)", - }, - }, - cry_azure_seal = { - name = "Sello azur", - text = { - "Crea {C:attention}#1#{} {C:planet}planetas{}", - "{C:dark_edition}negativas{} por la {C:attention}mano de póker{}", - "jugada, y {C:red}destruye{} esta carta", - }, - }, - blurred_sdm0 = { - name = "a", - text = { - "{C:inactive,s:0.8}\"Odio esta carta\" - SDM_0, 2024{}", - }, - }, + k_cry_program_pack = "Paquete de programa", + k_cry_meme_pack = "Paquete meme", - }, - Unique = { - c_cry_potion = { - name = "Poción", - text = { - "Aplica un {C:attention}efecto malo{}", - "desconocido al usarse", - "{C:inactive,s:0.7}Obtenido por Dado de chocolate" - } - } - } - }, - misc = { - poker_hands = { - ['cry_Bulwark'] = "Baluarte", - ['cry_Clusterfuck'] = "Lío de mierda", - ['cry_UltPair'] = "Pareja suprema", - ['cry_WholeDeck'] = "Toda la puta baraja", - }, - poker_hand_descriptions = { - ['cry_Bulwark'] = { - '5 cartas, sin categoría ni palo', - }, - ['cry_Clusterfuck'] = { - 'Al menos 8 cartas que no', - 'contengan una Pareja, Color o Escalera', - }, - ['cry_UltPair'] = { - 'Dos Doble pareja, donde cada', - 'Doble pareja es un palo único, por un total', - 'de 2 palos entre las dos', - }, - ['cry_WholeDeck'] = { - 'Una mano que contenga cada', - 'carta en una baraja de 52 cartas.', - '¿Estás loco?', - }, - }, - achievement_names = { - ach_cry_ace_in_crash = "Un ACE En Mi Bolsillo", - ach_cry_blurred_blurred_joker = "Legalmente Ciego", - ach_cry_bullet_hell = "Shooter Maníaco", - ach_cry_break_infinity = "Rompe El Infinito", - ach_cry_cryptid_the_cryptid = "Criptida El Críptido", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Pase De Googol Play", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Corredor De Bienes Raíces", - ach_cry_jokes_on_you = "La Broma Es Para Tí, Amigo!", - ach_cry_niw_uoy = "!ETSANAG¡", - ach_cry_now_the_fun_begins = "Ahora Se Pone Lo Bueno", - ach_cry_patience_virtue = "La Paciencia Es Una Virtud", - ach_cry_perfectly_balanced = "Perfectamente Balanceado", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Atasco De Tráfico", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "Te Dijimos Que No Lo Hagas", - ach_cry_what_have_you_done = "¡¿QUÉ ACABAS DE HACER?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Consigue Comodín Borroso borroso", - ach_cry_bullet_hell = "Consigue 15 comodines AP", - ach_cry_break_infinity = "Puntúa 1.79e308 fichas en una sola mano", - ach_cry_cryptid_the_cryptid = "Usa Críptido en Críptido", - ach_cry_exodia = "Consigue 5 comodines exóticos", - ach_cry_freak_house = "Juega un Full de color consistiendo de 6s y 9s de corazones mientras tienes a Nice", - ach_cry_googol_play_pass = "Amaña una Carta de Googol Play", - ach_cry_haxxor = "Usa un código de trampas", - ach_cry_home_realtor = "Activa Casa Feliz antes de la apuesta 8 (sin BdE/Antimateria)", - ach_cry_jokes_on_you = "Activa el efecto de La Broma en la apuesta 1 y gana la partida", - ach_cry_niw_uoy = "Llega a la apuesta -8", - ach_cry_now_the_fun_begins = "Consigue a Lienzo", - ach_cry_patience_virtue = "Espera a Ciclo Lavanda por 2 minutos antes de jugar la primera mano y vence la ciega", - ach_cry_perfectly_balanced = "Completa la Baraja Muy Justa en Ascendant Stake", - ach_cry_pull_request = "Haz que ://COMMIT haga aparecer el mismo comodín que destruyó", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Gana en 1 ronda", - ach_cry_used_crash = "Usa ://CHOQUE", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Características", - cry_set_music = "Música", - cry_set_enable_features = "Selecciona las características para activar (se aplica al reiniciar):", - cry_feat_achievements = "Logros", - ["cry_feat_antimatter deck"] = "Baraja de antimateria", - cry_feat_blinds = "Ciegas", - cry_feat_challenges = "Desafíos", - ["cry_feat_code cards"] = "Cartas de código", - ["cry_feat_misc. decks"] = "Barajas misceláneas", - ["cry_feat_https module"] = "Módulo HTTPS", - ["cry_feat_timer mechanics"] = "Mecánicas de temporizador", - ["cry_feat_enhanced decks"] = "Barajas mejoradas", - ["cry_feat_epic jokers"] = "Comodines épicos", - ["cry_feat_exotic jokers"] = "Comodines exóticos", - ["cry_feat_m jokers"] = "Comodines M", - cry_feat_menu = "Menú principal personalizado", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Comodines misceláneos", - cry_feat_planets = "Planetas", - cry_feat_jokerdisplay = "JokerDisplay (no hace nada)", - cry_feat_tags = "Etiquetas", - cry_feat_sleeves = "Mangas", - cry_feat_spectrals = "Espectrales", - cry_feat_spooky = "Actualización espeluznante", - ["cry_feat_more stakes"] = "Pozos", - cry_feat_vouchers = "Vales", - cry_mus_jimball = "Jimball (Funkytown por Lipps Inc. - Copyrighted)", - cry_mus_code = "Cartas de código (://LETS_BREAK_THE_GAME por HexaCryonic)", - cry_mus_exotic = "Comodines exóticos (Joker in Latin por AlexZGreat)", - cry_mus_high_score = "Alto puntaje (Final Boss [For Your Computer] por AlexZGreat)", + cry_critical_hit_ex = "¡Golpe crítico!", + cry_critical_miss_ex = "Fallo crítico...", - k_cry_program_pack = "Paquete de programa", - k_cry_meme_pack = "Paquete meme", + cry_potion1 = "-1 a todos los niveles de mano", + cry_potion2 = "X1.15 tamaño de ciega", + cry_potion3 = "-1 mano y descarte", - cry_critical_hit_ex = "¡Golpe crítico!", - cry_critical_miss_ex = "Fallo crítico...", + cry_debuff_oldhouse = "Sin fulls", + cry_debuff_oldarm = "Debes jugar 4 o menos cartas", + cry_debuff_oldpillar = "Sin escaleras", + cry_debuff_oldflint = "Sin colores", + cry_debuff_oldmark = "Sin manos que contengan una Pareja", + cry_debuff_obsidian_orb = "Aplica las habilidades de todos los jefes derrotados", - cry_potion1 = "-1 a todos los niveles de mano", - cry_potion2 = "X1.15 tamaño de ciega", - cry_potion3 = "-1 mano y descarte", + k_code = "Código", + k_unique = "Único", + b_code_cards = "Cartas de código", + b_unique_cards = "Cartas únicas", + b_pull = "TIRAR", + cry_hooked_ex = "Enganchada!", + k_end_blind = "terminar_ciega", - cry_debuff_oldhouse = "Sin fulls", - cry_debuff_oldarm = "Debes jugar 4 o menos cartas", - cry_debuff_oldpillar = "Sin escaleras", - cry_debuff_oldflint = "Sin colores", - cry_debuff_oldmark = "Sin manos que contengan una Pareja", - cry_debuff_obsidian_orb = "Aplica las habilidades de todos los jefes derrotados", + cry_code_rank = "INGRESAR CATEGORÍA", + cry_code_enh = "INGRESAR MEJORA", + cry_code_hand = "INGRESAR MANO DE PÓKER", + cry_code_enter_card = "INGRESAR CARTA", + cry_code_apply = "APLICAR", + cry_code_apply_previous = "APLICAR ANTERIOR", + cry_code_exploit = "EXPLOTAR", + cry_code_exploit_previous = "EXPLOTAR ANTERIOR", + cry_code_create = "CREAR", + cry_code_create_previous = "CREAR ANTERIOR", + cry_code_execute = "EJECUTAR", + cry_code_cancel = "CANCELAR", - k_code = "Código", - k_unique = "Único", - b_code_cards = "Cartas de código", - b_unique_cards = "Cartas únicas", - b_pull = "TIRAR", - cry_hooked_ex = "Enganchada!", - k_end_blind = "terminar_ciega", + b_flip = "VOLTEAR", + b_merge = "COMBINAR", - cry_code_rank = "INGRESAR CATEGORÍA", - cry_code_enh = "INGRESAR MEJORA", - cry_code_hand = "INGRESAR MANO DE PÓKER", - cry_code_enter_card = "INGRESAR CARTA", - cry_code_apply = "APLICAR", - cry_code_apply_previous = "APLICAR ANTERIOR", - cry_code_exploit = "EXPLOTAR", - cry_code_exploit_previous = "EXPLOTAR ANTERIOR", - cry_code_create = "CREAR", - cry_code_create_previous = "CREAR ANTERIOR", - cry_code_execute = "EJECUTAR", - cry_code_cancel = "CANCELAR", + cry_hand_bulwark = "Baluarte", + cry_hand_clusterfuck = "Lío de mierda", + cry_hand_ultpair = "Pareja suprema", - b_flip = "VOLTEAR", - b_merge = "COMBINAR", + cry_again_q = "¿Otra vez?", + cry_curse = "Maldición", + cry_curse_ex = "¡Maldición!", + cry_sobbing = "Ayúdame...", + cry_gaming = "Gaming", + cry_gaming_ex = "¡Gaming!", + cry_good_luck_ex = "¡Buena suerte!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 ronda", + cry_plus_cryptid = "+1 críptido", + cry_no_triggers = "¡Sin activaciones restantes!", + cry_unredeemed = "Desredimido...", + cry_active = "Activo", + cry_inactive = "Inactivo", - cry_hand_bulwark = "Baluarte", - cry_hand_clusterfuck = "Lío de mierda", - cry_hand_ultpair = "Pareja suprema", + k_disable_music = "Desactivar música", - cry_again_q = "¿Otra vez?", - cry_curse = "Maldición", - cry_curse_ex = "¡Maldición!", - cry_sobbing = "Ayúdame...", - cry_gaming = "Gaming", - cry_gaming_ex = "¡Gaming!", - cry_good_luck_ex = "¡Buena suerte!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 ronda", - cry_plus_cryptid = "+1 críptido", - cry_no_triggers = "¡Sin activaciones restantes!", - cry_unredeemed = "Desredimido...", - cry_active = "Activo", - cry_inactive = "Inactivo", + k_cry_epic = "Épico", + k_cry_exotic = "Exótico", + k_cry_candy = "Dulce", + k_cry_cursed = "Maldito", + k_planet_disc = "Disco circunestelar", + k_planet_satellite = "Satélites naturales", + k_planet_universe = "El puto Universo Real", - k_disable_music = "Desactivar música", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Nota de copyright", + cry_notif_jimball_d1 = 'Jimball reproduce la canción "Funkytown",', + cry_notif_jimball_d2 = "la cual tiene copyright y no puede ser", + cry_notif_jimball_d3 = "usada por streams y videos.", + }, + labels = { + food_jokers = "Comodines de comida", + banana = "Banana", + code = "Código", + unique = "Único", + cry_rigged = "Amañada", + cry_hooked = "Enganchada", + cry_flickering = "Parpadeante", + cry_possessed = "Poseída", - k_cry_epic = "Épico", - k_cry_exotic = "Exótico", - k_cry_candy = "Dulce", - k_cry_cursed = "Maldito", - k_planet_disc = "Disco circunestelar", - k_planet_satellite = "Satélites naturales", - k_planet_universe = "El puto Universo Real", + cry_green_seal = "Sello verde", + cry_azure_seal = "Sello azur", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Nota de copyright", - cry_notif_jimball_d1 = "Jimball reproduce la canción \"Funkytown\",", - cry_notif_jimball_d2 = "la cual tiene copyright y no puede ser", - cry_notif_jimball_d3 = "usada por streams y videos.", - }, - labels = { - food_jokers = "Comodines de comida", - banana = "Banana", - code = "Código", - unique = "Único", - cry_rigged = "Amañada", - cry_hooked = "Enganchada", - cry_flickering = "Parpadeante", - cry_possessed = "Poseída", + cry_astral = "Astral", + cry_blur = "Borroso", + cry_double_sided = "Doble cara", + cry_glass = "Frágil", + cry_glitched = "Errónea", + cry_gold = "Dorada", + cry_m = "Contenta", + cry_mosaic = "Mosaico", + cry_noisy = "Ruidosa", + cry_oversat = "Sobresaturada", - cry_green_seal = "Sello verde", - cry_azure_seal = "Sello azur", + k_cry_epic = "Épico", + k_cry_exotic = "Exótico", + k_cry_candy = "Dulce", + k_cry_cursed = "Maldito", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} multi" }, + plus_chips = { "{C:blue}+#2#{} fichas" }, + x_mult = { "{X:red,C:white} X#2#{} multi" }, + x_chips = { "{X:blue,C:white} X#2#{} fichas" }, + h_size = { "{C:attention}+#2#{} tamaño de mano" }, + money = { "{C:money}+$#2#{} al pago" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Actual: {C:red}+#1#{C:inactive} multi)" }, + plus_chips = { "{C:inactive}(Actual: {C:blue}+#1#{C:inactive} fichas)" }, + x_mult = { "{C:inactive}(Actual: {X:red,C:white} X#1# {C:inactive} multi)" }, + x_chips = { "{C:inactive}(Actual: {X:blue,C:white} X#1# {C:inactive} fichas)" }, + h_size = { "{C:inactive}(Actual: {C:attention}+#1#{C:inactive} tamaño de mano)" }, + money = { "{C:inactive}(Actual: {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Crea {C:attention}#2# comodín(es{}" }, + make_tarot = { "Crea {C:attention}#2#{} carta(s) de {C:tarot}tarot{}" }, + make_planet = { "Crea {C:attention}#2#{} carta(s) de {C:planet}planeta{}" }, + make_spectral = { "Crea {C:attention}#2#{} carta(s) {C:spectral}espectrales{}" }, + add_dollars = { "Gana {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "al abrir un {C:attention}Paquete potenciador{}" }, + buying_card = { "al comprar una carta" }, + selling_self = { "al vender esta carta" }, + selling_card = { "al vender una carta" }, + reroll_shop = { "al renovar" }, + ending_shop = { "al final de la {C:attention}tienda{}" }, + skip_blind = { "al saltar una {C:attention}ciega{}" }, + skipping_booster = { "al saltar un {C:attention}Paquete potenciador{}" }, + playing_card_added = { "al añadir una {C:attention}carta{} a tu baraja" }, + first_hand_drawn = { "al empezar la ronda" }, + setting_blind = { "al seleccionar una {C:attention}ciega{}" }, + remove_playing_cards = { "al destruir una carta" }, + using_consumeable = { "al usar un {C:attention}consumible{}" }, + debuffed_hand = { "si la {C:attention}mano{} no está permitida" }, + pre_discard = { "antes de descartar" }, + discard = { "por cada carta descartada" }, + end_of_round = { "al final de la {C:attention}ronda{}" }, + individual_play = { "por cada carta puntuada" }, + individual_hand_score = { "por cada carta en tu mano al puntuar" }, + individual_hand_end = { "por cada carta en tu mano al terminar la {C:attention}ronda{}" }, + repetition_play = { "Reactiva las cartas puntuadas" }, + repetition_hand = { "Reactiva las cartas en tu mano" }, + other_joker = { "por cada {C:attention}comodín{}" }, + before = { "antes de cada {C:attention}mano{}" }, + after = { "después de cada {C:attention}mano{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, + buy_uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, + tarot = { "si la carta es una carta de {C:tarot}tarot{}" }, + planet = { "si la carta es una carta de {C:planet}planeta{}" }, + spectral = { "si la carta es una carta {C:spectral}espectral{}" }, + joker = { "si la carta es un {C:attention}comodín{}" }, + suit = { "si la carta es de {V:1}#3#{}" }, + rank = { "si la carta es un {C:attention}#3#{}" }, + face = { "si la carta es una carta de {C:attention}figura{}" }, + boss = { "si la {C:attention}ciega{} es una {C:attention}ciega jefe{}" }, + non_boss = { "si la {C:attention}ciega{} es una {C:attention}ciega no-jefe{}" }, + small = { "si la {C:attention}ciega{} es una {C:attention}ciega pequeña{}" }, + big = { "si la {C:attention}ciega{} es una {C:attention}ciega grande{}" }, + first = { "si es la {C:attention}primera mano{}" }, + last = { "si es la {C:attention}última mano{}" }, + common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, + uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, + rare = { "si es un {C:attention}comodín{} {C:red}raro{}" }, + poker_hand = { "si la mano es un(a) {C:attention}#3#{}" }, + or_more = { "si la mano contiene {C:attention}#3#{} o más cartas" }, + or_less = { "si la mano contiene {C:attention}#3#{} o menos cartas" }, + hands_left = { "si tienes #3# {C:blue}manos{} restantes al final de la ronda" }, + discards_left = { "si tienes #3# {C:red}descartes{} restantes al final de la ronda" }, + first_discard = { "si es el {C:attention}primer descarte{}" }, + last_discard = { "si es el {C:attention}último descarte{}" }, + odds = { "con {C:green}#4# {C:green}en {C:green}#3#{} probabilidades" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# fichas" }, + a_powmult = { "^#1# multi" }, + a_powchips = { "^#1# fichas" }, + a_powmultchips = { "^#1# multi+fichas" }, + a_round = { "+#1# ronda" }, + a_candy = { "+#1# Candy" }, + a_xchips_minus = { "-X#1# fichas" }, + a_powmult_minus = { "-^#1# multi" }, + a_powchips_minus = { "-^#1# fichas" }, + a_powmultchips_minus = { "-^#1# multi+fichas" }, + a_round_minus = { "-#1# ronda" }, + a_tag_minus = { "-#1# etiqueta" }, + a_tags_minus = { "-#1# etiquetas" }, + a_tag = { "+#1# etiqueta" }, + a_tags = { "+#1# etiquetas" }, - cry_astral = "Astral", - cry_blur = "Borroso", - cry_double_sided = "Doble cara", - cry_glass = "Frágil", - cry_glitched = "Errónea", - cry_gold = "Dorada", - cry_m = "Contenta", - cry_mosaic = "Mosaico", - cry_noisy = "Ruidosa", - cry_oversat = "Sobresaturada", + cry_sticker_name = { "Pegatina #1#" }, + cry_sticker_desc = { + "Usaste este comodín", + "para ganaer en la dificultad #2##1#", + "#2#Pozo#3#", + }, - k_cry_epic = "Épico", - k_cry_exotic = "Exótico", - k_cry_candy = "Dulce", - k_cry_cursed = "Maldito", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} multi" }, - plus_chips = { "{C:blue}+#2#{} fichas" }, - x_mult = { "{X:red,C:white} X#2#{} multi" }, - x_chips = { "{X:blue,C:white} X#2#{} fichas" }, - h_size = { "{C:attention}+#2#{} tamaño de mano" }, - money = { "{C:money}+$#2#{} al pago" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Actual: {C:red}+#1#{C:inactive} multi)" }, - plus_chips = { "{C:inactive}(Actual: {C:blue}+#1#{C:inactive} fichas)" }, - x_mult = { "{C:inactive}(Actual: {X:red,C:white} X#1# {C:inactive} multi)" }, - x_chips = { "{C:inactive}(Actual: {X:blue,C:white} X#1# {C:inactive} fichas)" }, - h_size = { "{C:inactive}(Actual: {C:attention}+#1#{C:inactive} tamaño de mano)" }, - money = { "{C:inactive}(Actual: {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Crea {C:attention}#2# comodín(es{}" }, - make_tarot = { "Crea {C:attention}#2#{} carta(s) de {C:tarot}tarot{}" }, - make_planet = { "Crea {C:attention}#2#{} carta(s) de {C:planet}planeta{}" }, - make_spectral = { "Crea {C:attention}#2#{} carta(s) {C:spectral}espectrales{}" }, - add_dollars = { "Gana {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "al abrir un {C:attention}Paquete potenciador{}" }, - buying_card = { "al comprar una carta" }, - selling_self = { "al vender esta carta" }, - selling_card = { "al vender una carta" }, - reroll_shop = { "al renovar" }, - ending_shop = { "al final de la {C:attention}tienda{}" }, - skip_blind = { "al saltar una {C:attention}ciega{}" }, - skipping_booster = { "al saltar un {C:attention}Paquete potenciador{}" }, - playing_card_added = { "al añadir una {C:attention}carta{} a tu baraja" }, - first_hand_drawn = { "al empezar la ronda" }, - setting_blind = { "al seleccionar una {C:attention}ciega{}" }, - remove_playing_cards = { "al destruir una carta" }, - using_consumeable = { "al usar un {C:attention}consumible{}" }, - debuffed_hand = { "si la {C:attention}mano{} no está permitida" }, - pre_discard = { "antes de descartar" }, - discard = { "por cada carta descartada" }, - end_of_round = { "al final de la {C:attention}ronda{}" }, - individual_play = { "por cada carta puntuada" }, - individual_hand_score = { "por cada carta en tu mano al puntuar" }, - individual_hand_end = { "por cada carta en tu mano al terminar la {C:attention}ronda{}" }, - repetition_play = { "Reactiva las cartas puntuadas" }, - repetition_hand = { "Reactiva las cartas en tu mano" }, - other_joker = { "por cada {C:attention}comodín{}" }, - before = { "antes de cada {C:attention}mano{}" }, - after = { "después de cada {C:attention}mano{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, - buy_uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, - tarot = { "si la carta es una carta de {C:tarot}tarot{}" }, - planet = { "si la carta es una carta de {C:planet}planeta{}" }, - spectral = { "si la carta es una carta {C:spectral}espectral{}" }, - joker = { "si la carta es un {C:attention}comodín{}" }, - suit = { "si la carta es de {V:1}#3#{}" }, - rank = { "si la carta es un {C:attention}#3#{}" }, - face = { "si la carta es una carta de {C:attention}figura{}" }, - boss = { "si la {C:attention}ciega{} es una {C:attention}ciega jefe{}" }, - non_boss = { "si la {C:attention}ciega{} es una {C:attention}ciega no-jefe{}" }, - small = { "si la {C:attention}ciega{} es una {C:attention}ciega pequeña{}" }, - big = { "si la {C:attention}ciega{} es una {C:attention}ciega grande{}" }, - first = { "si es la {C:attention}primera mano{}" }, - last = { "si es la {C:attention}última mano{}" }, - common = { "si es un {C:attention}comodín{} {C:blue}común{}" }, - uncommon = { "si es un {C:attention}comodín{} {C:green}inusual{}" }, - rare = { "si es un {C:attention}comodín{} {C:red}raro{}" }, - poker_hand = { "si la mano es un(a) {C:attention}#3#{}" }, - or_more = { "si la mano contiene {C:attention}#3#{} o más cartas" }, - or_less = { "si la mano contiene {C:attention}#3#{} o menos cartas" }, - hands_left = { "si tienes #3# {C:blue}manos{} restantes al final de la ronda" }, - discards_left = { "si tienes #3# {C:red}descartes{} restantes al final de la ronda" }, - first_discard = { "si es el {C:attention}primer descarte{}" }, - last_discard = { "si es el {C:attention}último descarte{}" }, - odds = { "con {C:green}#4# {C:green}en {C:green}#3#{} probabilidades" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# fichas"}, - a_powmult = {"^#1# multi"}, - a_powchips = {"^#1# fichas"}, - a_powmultchips = {"^#1# multi+fichas"}, - a_round = {"+#1# ronda"}, - a_candy = {"+#1# Candy"}, - a_xchips_minus = {"-X#1# fichas"}, - a_powmult_minus = {"-^#1# multi"}, - a_powchips_minus = {"-^#1# fichas"}, - a_powmultchips_minus = {"-^#1# multi+fichas"}, - a_round_minus = {"-#1# ronda"}, - - a_tag = {"#1# etiqueta"}, - a_tags = {"#1# etiquetas"}, - - cry_sticker_name = {"Pegatina #1#"}, - cry_sticker_desc = { - "Usaste este comodín", - "para ganaer en la dificultad #2##1#", - "#2#Pozo#3#" - }, - - cry_art = {"Arte: #1#"}, - cry_code = {"Código: #1#"}, - cry_idea = {"Idea: #1#"} - - }, - v_text = { - ch_c_cry_all_perishable = {"Todos los comodines son {C:eternal}Perecederos{}"}, - ch_c_cry_all_rental = {"Todos los comodines son {C:eternal}de Alquiler{}"}, - ch_c_cry_all_pinned = {"Todos los comodines son {C:eternal}Fijados{}"}, - ch_c_cry_all_banana = {"Todos los comodines son {C:eternal}Banana{}"}, - ch_c_all_rnj = {"Todos los comodines son {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"Todos los objetos comprables tienen todas las pegatinas"}, - ch_c_cry_rush_hour = {"Todas las ciegas jefe son {C:attention}El reloj{} or {C:attention}Ciclo lavanda"}, - ch_c_cry_rush_hour_ii = {"Todas las ciegas son {C:attention}ciegas jefe{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}El reloj{} y {C:attention}Ciclo lavanda{} aumentan el {C:attention}doble{} de rápido"}, - ch_c_cry_no_tags = {"Saltar ciegas no está {C:attention}permitido{}"}, - ch_c_cry_no_vouchers = {"Los {C:attention}vales{} ya no aparecen en la tienda"}, - ch_c_cry_no_boosters = {"Los {C:attention}paquetes potenciadores{} ya no aparecen en la tienda"}, - ch_c_cry_no_rerolls = {"Las renovaciones no están {C:attention}permitidas{}"}, - ch_c_cry_no_consumables = {"Los {C:attention}consumibles{} ya no aparecen"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO HAY VALES", "PARA TÍ" }, - { "BOZO", "¿PENSASTE QUE TE", "DARÍA UN VALE?" }, - { "¡NO!", "¡NO HAY VALES AQUÍ!", "(EDICIÓN SLUMPAGE)" }, - { "SKILL ISSUE", "IMAGINA SER SUFICIENTE", "PARA UN VALE" }, - { "JIMBO", "DE LA GERENCIA", "OLVIDÓ REABASTECER" }, - { "¡UPS!", "SIN VALES", "" }, - { "BUFÓN,", "¿POR QUÉ MIRAS", "AQUÍ? LMAO" }, - { "EL VALE", "ESTÁ EN", "OTRO CASTILLO" }, - { "VALE EN BLANCO", "POR $0", "(¿LO PILLAS?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% DE DESCUENTO", "EN TODOS LOS VALES", "(ALGUIEN YA LOS COMPRÓ)" }, - { "INTENTA DESPUÉS", "PISTA: IGUAL NO TENDRÁS", "EL DINERO SUFICIENTE" }, - { "¿EH?", '¿"VALE"?', "ESO NI ES UNA PALABRA..." }, - { 'MANTÉN "R"', "PARA REABASTECER", "TODOS LOS VALES" }, - { "¿SABÍAS QUE?", "¡PRESIONANDO ALT+F4", "DA VALES GRATIS!" }, - { "PERDÓN,", "NO HAY VALES POR", "CORTES DE PRESUPUESTO" }, - { "LLAMA A 1-600-JIMBO", "PARA CALIFICAR TU", "EXPERIENCIA DE VALES" }, - { "DERROTA LA CIEGA", "JEFE DE APUESTA 39", "PARA RESTABLECER" }, - { "TRUCO DE MAGIA", "HICE ESTE VALE", "DESAPARECER" }, - { "¿POR QUÉ ES", "UN VALE COMO", "UN ESCRITORIO?" }, - { "HEMOS RETRAÍDO", "TUS VALES, SERÍAN MEJOR", "USADOS EN OTRAS PARTIDAS" }, - { "EL TRADUCTOR NI QUISO", "TRADUCIR ESTE MENSAJE", "NO HAY VALES PARA TI CABRÓN" }, - { "PERDÓN", "LOS VALES ESTÁN EXPERIMENTANDO", "VOUCHIFIA ABORTUS" }, - { "DESAFORTUNADAMENTE", "LA ACTUALIZACIÓN DE VALES", "HA SIDO CANCELADA" }, - { "DERROTA LA", "CIEGA JEFE PARA", "NO HACER NADA" }, - { "LAS AVES CANTAN", "LAS FLORES FLORECEN", "NIÑOS COMO TÚ..." }, - { "SENTIMOS DECIR QUE", "TODOS LOS VALES HAN SIDO DEVUELTOS", "POR EXPOSICIÓN A SALMONELLA" }, - { "LOS VALES NO PUDIERON LLEGAR POR", "LA DISPOSICIÓN DE LA TIENDA SIENDO", "200% SOBRE EL PRESUPUESTO" }, - { "TE GUSTA", "COMPRAR VALES, ¿NO?", "ERES UN COMPRADOR DE VALES" }, - { "VALES", "!E", "LISTA DE VALES" }, - { "NO", "HAY", "VALES" }, - { "NO EXISTE", "SANTA", "Y NO EXISTEN LOS VALES" }, - { "", "NO VALE", "" }, - { "ACABAS DE", "PERDER", "EL JUEGO" }, - { "¿PUEDO OFRECERTE", "UN BUEN HUEVO", "EN ESTOS TIEMPOS?" }, - { "VE A TOCAR PASTO", "EN VEZ DE USAR", "ESTA BARAJA" }, - { "PODRÍAS ESTAR", "JUGANDO EN LA BARAJA AZUL", "AHORA MISMO" }, - { "EXÓTICOS GRATIS", "CONSÍGUELOS ANTES DE QUE", "SEA DEMASIADO TARDE (se acabaron)" }, - { "PRUÉBALOS MAL", "COMPRA UN VALE", "INVISIBLE POR $10" }, - { "", "¿sin vales?", "" }, - { "¿ves este anuncio?", "si lo ves, está funcionando", "y lo puedes tener como tuyo" }, - { "TE ESTÁS PERDIENDO EN", "AL MENOS 5 VALES AHORA", "tonktonktonktonktonk" }, - { "10", "20 SIN VALES XD", "30 GOTO 10" }, - { "LOS VALES", "SON ARTÍCULOS PREMIUM", "$199.99 JÓLARES PARA DESBLOQUEAR" }, - { "¡¿SIN VALES?!", "SÓLO EN POZO ASCENDENTE", "BARAJA MUY JUSTA" }, - { "¿DISFRUTANDO TU", "EXPERIENCIA DE VALES? DÁNOS UNA CALIFICACIÓN", "DE CINCO ESTRELLAS EN JESTELP" }, - { "VALES GRATIS", "VALES CERCA DE TÍ", "CONSIGUE VALES RÁPIDO CON ESTE TRUCO" }, - { "INTRODUCIENDO", "¡EL PRIMER VALE NIVEL 0!", "(llegando pronto a Cryptid 1.0)" }, - { "¡UN VALE!", "ES SÓLO IMAGINARIO", "IMAGINAMOS QUE LO QUERÍAS, ESO SÍ" }, - { "DESACTIVA TU ADBLOCKER", "SIN ANUNCIOS, NO PODRÍAMOS", "VENDERTE NINGÚN VALE" }, - { "SI TIENES", "UN PROBLEMA CON ESTO", "ENVÍA UN CORREO A NORESPONSE@JMAIL.COM" }, - { "SIN DINERO SUFICIENTE", "PARA COMPRAR ESTE VALE", "¿PARA QUÉ PONERLO AQUÍ?" }, - { "¿QUIERES UN VALE?", "ENTONCES CÁLLATE", "NO PUEDES TENER NINGUNO LOL" }, - { "^$%& NINGÚN", "VALE ^%&% %&$^% PARA", "$%&%%$ %&$&*%$^ TÍ" }, - { "UN VALE (CONFÍA)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--- ..- --. .- -.. --- .-. -.. . ... -.-. .. ..-. .-. .- -.-. --- -.. .. --. ---", - "-- --- .-. ... . .--. .- .-. .- . -. -.-. --- -. - .-. .- .-. ...- .- .-.. .", - }, - { "RUN > NEW", "MIRAR A NADA", "POR UNA HORA O DOS" }, - { "LO SENTIMOS,", "EL ÚLTIMO CHICO COMPRÓ EN PÁNICO", "TODOS LOS VALES" }, - { "CÓMO SE SIENTE", "NO COMPRAR", "VALES" }, - { "JIMBO TUVO UN NAT 1", "Y TIRÓ TODOS LOS", "VALES EN UNA ZANJA" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "AH, ¿DE VERAS PENSASTE QUE LEYENDO TODAS ESTAS LÍNEAS TE DEVOLVERÍA TUS VALES?", - "PERDÓN POR DECÍRTELO, PERO ESTA BARAJA NO CONTIENE QUE TÚ BUSCAS.", - "ESTE TEXTO ANORMALMENTE LARGO ESTÁ AQUÍ Y ESTÁ DISEÑADO PARA GASTAR TU TIEMPO Y ESFUERZO MIENTRAS LO LEES.", - }, - { "VE A", "https://youtu.be/p7YXXieghto", "PARA VALES GRATIS" }, - } - } + cry_art = { "Arte: #1#" }, + cry_code = { "Código: #1#" }, + cry_idea = { "Idea: #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "Todos los comodines son {C:eternal}Perecederos{}" }, + ch_c_cry_all_rental = { "Todos los comodines son {C:eternal}de Alquiler{}" }, + ch_c_cry_all_pinned = { "Todos los comodines son {C:eternal}Fijados{}" }, + ch_c_cry_all_banana = { "Todos los comodines son {C:eternal}Banana{}" }, + ch_c_all_rnj = { "Todos los comodines son {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "Todos los objetos comprables tienen todas las pegatinas" }, + ch_c_cry_rush_hour = { "Todas las ciegas jefe son {C:attention}El reloj{} or {C:attention}Ciclo lavanda" }, + ch_c_cry_rush_hour_ii = { "Todas las ciegas son {C:attention}ciegas jefe{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}El reloj{} y {C:attention}Ciclo lavanda{} aumentan el {C:attention}doble{} de rápido", + }, + ch_c_cry_no_tags = { "Saltar ciegas no está {C:attention}permitido{}" }, + ch_c_cry_no_vouchers = { "Los {C:attention}vales{} ya no aparecen en la tienda" }, + ch_c_cry_no_boosters = { "Los {C:attention}paquetes potenciadores{} ya no aparecen en la tienda" }, + ch_c_cry_no_rerolls = { "Las renovaciones no están {C:attention}permitidas{}" }, + ch_c_cry_no_consumables = { "Los {C:attention}consumibles{} ya no aparecen" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO HAY VALES", "PARA TÍ" }, + { "BOZO", "¿PENSASTE QUE TE", "DARÍA UN VALE?" }, + { "¡NO!", "¡NO HAY VALES AQUÍ!", "(EDICIÓN SLUMPAGE)" }, + { "SKILL ISSUE", "IMAGINA SER SUFICIENTE", "PARA UN VALE" }, + { "JIMBO", "DE LA GERENCIA", "OLVIDÓ REABASTECER" }, + { "¡UPS!", "SIN VALES", "" }, + { "BUFÓN,", "¿POR QUÉ MIRAS", "AQUÍ? LMAO" }, + { "EL VALE", "ESTÁ EN", "OTRO CASTILLO" }, + { "VALE EN BLANCO", "POR $0", "(¿LO PILLAS?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% DE DESCUENTO", "EN TODOS LOS VALES", "(ALGUIEN YA LOS COMPRÓ)" }, + { "INTENTA DESPUÉS", "PISTA: IGUAL NO TENDRÁS", "EL DINERO SUFICIENTE" }, + { "¿EH?", '¿"VALE"?', "ESO NI ES UNA PALABRA..." }, + { 'MANTÉN "R"', "PARA REABASTECER", "TODOS LOS VALES" }, + { "¿SABÍAS QUE?", "¡PRESIONANDO ALT+F4", "DA VALES GRATIS!" }, + { "PERDÓN,", "NO HAY VALES POR", "CORTES DE PRESUPUESTO" }, + { "LLAMA A 1-600-JIMBO", "PARA CALIFICAR TU", "EXPERIENCIA DE VALES" }, + { "DERROTA LA CIEGA", "JEFE DE APUESTA 39", "PARA RESTABLECER" }, + { "TRUCO DE MAGIA", "HICE ESTE VALE", "DESAPARECER" }, + { "¿POR QUÉ ES", "UN VALE COMO", "UN ESCRITORIO?" }, + { "HEMOS RETRAÍDO", "TUS VALES, SERÍAN MEJOR", "USADOS EN OTRAS PARTIDAS" }, + { "EL TRADUCTOR NI QUISO", "TRADUCIR ESTE MENSAJE", "NO HAY VALES PARA TI CABRÓN" }, + { "PERDÓN", "LOS VALES ESTÁN EXPERIMENTANDO", "VOUCHIFIA ABORTUS" }, + { "DESAFORTUNADAMENTE", "LA ACTUALIZACIÓN DE VALES", "HA SIDO CANCELADA" }, + { "DERROTA LA", "CIEGA JEFE PARA", "NO HACER NADA" }, + { "LAS AVES CANTAN", "LAS FLORES FLORECEN", "NIÑOS COMO TÚ..." }, + { "SENTIMOS DECIR QUE", "TODOS LOS VALES HAN SIDO DEVUELTOS", "POR EXPOSICIÓN A SALMONELLA" }, + { "LOS VALES NO PUDIERON LLEGAR POR", "LA DISPOSICIÓN DE LA TIENDA SIENDO", "200% SOBRE EL PRESUPUESTO" }, + { "TE GUSTA", "COMPRAR VALES, ¿NO?", "ERES UN COMPRADOR DE VALES" }, + { "VALES", "!E", "LISTA DE VALES" }, + { "NO", "HAY", "VALES" }, + { "NO EXISTE", "SANTA", "Y NO EXISTEN LOS VALES" }, + { "", "NO VALE", "" }, + { "ACABAS DE", "PERDER", "EL JUEGO" }, + { "¿PUEDO OFRECERTE", "UN BUEN HUEVO", "EN ESTOS TIEMPOS?" }, + { "VE A TOCAR PASTO", "EN VEZ DE USAR", "ESTA BARAJA" }, + { "PODRÍAS ESTAR", "JUGANDO EN LA BARAJA AZUL", "AHORA MISMO" }, + { "EXÓTICOS GRATIS", "CONSÍGUELOS ANTES DE QUE", "SEA DEMASIADO TARDE (se acabaron)" }, + { "PRUÉBALOS MAL", "COMPRA UN VALE", "INVISIBLE POR $10" }, + { "", "¿sin vales?", "" }, + { "¿ves este anuncio?", "si lo ves, está funcionando", "y lo puedes tener como tuyo" }, + { "TE ESTÁS PERDIENDO EN", "AL MENOS 5 VALES AHORA", "tonktonktonktonktonk" }, + { "10", "20 SIN VALES XD", "30 GOTO 10" }, + { "LOS VALES", "SON ARTÍCULOS PREMIUM", "$199.99 JÓLARES PARA DESBLOQUEAR" }, + { "¡¿SIN VALES?!", "SÓLO EN POZO ASCENDENTE", "BARAJA MUY JUSTA" }, + { "¿DISFRUTANDO TU", "EXPERIENCIA DE VALES? DÁNOS UNA CALIFICACIÓN", "DE CINCO ESTRELLAS EN JESTELP" }, + { "VALES GRATIS", "VALES CERCA DE TÍ", "CONSIGUE VALES RÁPIDO CON ESTE TRUCO" }, + { "INTRODUCIENDO", "¡EL PRIMER VALE NIVEL 0!", "(llegando pronto a Cryptid 1.0)" }, + { "¡UN VALE!", "ES SÓLO IMAGINARIO", "IMAGINAMOS QUE LO QUERÍAS, ESO SÍ" }, + { "DESACTIVA TU ADBLOCKER", "SIN ANUNCIOS, NO PODRÍAMOS", "VENDERTE NINGÚN VALE" }, + { "SI TIENES", "UN PROBLEMA CON ESTO", "ENVÍA UN CORREO A NORESPONSE@JMAIL.COM" }, + { "SIN DINERO SUFICIENTE", "PARA COMPRAR ESTE VALE", "¿PARA QUÉ PONERLO AQUÍ?" }, + { "¿QUIERES UN VALE?", "ENTONCES CÁLLATE", "NO PUEDES TENER NINGUNO LOL" }, + { "^$%& NINGÚN", "VALE ^%&% %&$^% PARA", "$%&%%$ %&$&*%$^ TÍ" }, + { "UN VALE (CONFÍA)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--- ..- --. .- -.. --- .-. -.. . ... -.-. .. ..-. .-. .- -.-. --- -.. .. --. ---", + "-- --- .-. ... . .--. .- .-. .- . -. -.-. --- -. - .-. .- .-. ...- .- .-.. .", + }, + { "RUN > NEW", "MIRAR A NADA", "POR UNA HORA O DOS" }, + { "LO SENTIMOS,", "EL ÚLTIMO CHICO COMPRÓ EN PÁNICO", "TODOS LOS VALES" }, + { "CÓMO SE SIENTE", "NO COMPRAR", "VALES" }, + { "JIMBO TUVO UN NAT 1", "Y TIRÓ TODOS LOS", "VALES EN UNA ZANJA" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "AH, ¿DE VERAS PENSASTE QUE LEYENDO TODAS ESTAS LÍNEAS TE DEVOLVERÍA TUS VALES?", + "PERDÓN POR DECÍRTELO, PERO ESTA BARAJA NO CONTIENE QUE TÚ BUSCAS.", + "ESTE TEXTO ANORMALMENTE LARGO ESTÁ AQUÍ Y ESTÁ DISEÑADO PARA GASTAR TU TIEMPO Y ESFUERZO MIENTRAS LO LEES.", + }, + { "VE A", "https://youtu.be/p7YXXieghto", "PARA VALES GRATIS" }, + }, + }, } diff --git a/Cryptid/localization/fr.lua b/Cryptid/localization/fr.lua index 809e795..d6b5764 100644 --- a/Cryptid/localization/fr.lua +++ b/Cryptid/localization/fr.lua @@ -24,3928 +24,3951 @@ Other (packs, stickers, etc): Yes [HastagGuigui] Misc: Yes [HastagGuigui] Spooky Update: Yes [HastagGuigui] -]] -- +]] +-- return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Jeu d'Antimatière", - text = { - "Applique les {C:legendary,E:1}effets{}", - "de {C:attention}tous{} les jeux", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Jeu à blanc", - text = { - "{C:inactive,E:1}Ne fait rien?", - }, - }, - b_cry_bontiful = { - name = "Jeu généreux", - text = { - "Après avoir utilisé une {C:blue}main{} ou une {C:red}défausse{},", - "{C:attention}5{} cartes sont toujours tirées" - } - }, - b_cry_CCD = { - name = "Jeu CCD", - text = { - "Chaque carte est aussi", - "un consommable {C:attention}aléatoire{}", - }, - }, - b_cry_conveyor = { - name = "Jeu Convoyeur", - text = { - "Les Jokers {C:attention}ne peuvent pas{} être déplacés", - "A chaque manche,", - "{C:attention}copie{} le Joker le plus à droite", - "and {C:attention}destroy{} le Joker le plus à gauche", - }, - }, - b_cry_critical = { - name = "Jeu Critique", - text = { - "Après chaque main jouée,", - "{C:green}#1# chance(s) sur 4{} d'obtenir {X:dark_edition,C:white} ^2 {} Multi", - "{C:green}#1# chance(s) sur 8{} d'obtenir {X:dark_edition,C:white} ^0.5 {} Multi", - }, - }, - b_cry_encoded = { - name = "Jeu Encodé", - text = { - "Démarre avec un {C:cry_code,T:j_cry_CodeJoker}Joker Code{}", - "et un {C:cry_code,T:j_cry_copypaste}Copier/Coller{}", - "Seules les {C:cry_code}Cartes Code{} apparaissent dans la boutique", - }, - }, - b_cry_equilibrium = { - name = "Jeu de l'Équilibrium", - text = { - "Toutes les cartes ont", - "la {C:attention}même chance{}", - "d'apparaître dans la boutique,", - "démarre la partie avec", - "{C:attention,T:v_overstock_plus}Excédent Plus", - }, - }, - b_cry_glowing = { - name = "Jeu Brillant", --wtf is glowing? - text = { - "Multiplie les valeurs de", - "tous les Jokers par {X:dark_edition,C:white} X1.25 {}", - "quand la Boss Blinde est battue", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Jeu Infini", - text = { - "Sélectionne {C:attention}n'importe quel", - "nombre de cartes", - "Taille de la main {C:attention}+1{} ", - }, - }, - b_cry_misprint = { - name = "Jeu Mal Imprimé", - text = { - "La valeur des cartes", - "et des mains de poker", - "sont {C:attention}aléatoires", - }, - }, - b_cry_redeemed = { - name = "Jeu Acheté", - text = { - "Quand un {C:attention}Bon d'Achat{} est acheté,", - "gagne son {C:attention}amélioration", - }, - }, - b_cry_spooky = { - name = "Jeu fantôme", - text = { - "Démarre avec un {C:attention,T:j_cry_chocolate_dice}Dé en chocolat{} {C:eternal}éternel", - "Après chaque {C:attention}Ante{}, crée un", - "{C:cry_candy}Bonbon{} ou un Joker {X:cry_cursed,C:white}Maudit{}" - } - }, - b_cry_very_fair = { - name = "Jeu Très Équilibré", - text = { - "{C:blue}-2{} mains, {C:red}-2{} défausses", - "à chaque manche", - "Les {C:attention}Bons d'Achat{} n'apparaissent", - "plus dans la boutique", - }, - }, - b_cry_wormhole = { - name = "Jeu Vortex", - text = { - "Démarre avec un Joker {C:cry_exotic}Exotique{C:attention}", - "Les Jokers sont {C:attention}20X{} ", - "plus susceptibles d'être {C:dark_edition}Négatifs", - "{C:attention}-2{} emplacements de Joker", - }, - }, - b_cry_legendary = { - name = "Jeu Légendaire", - text = { - "Démarre avec un Joker {C:legendary}Légendaire{C:legendary}", - "{C:green}1 chance sur 5{} d'en créer un autre", - "lorsque la Blinde de Boss est battue", - "{C:inactive}(selon la place disponible)", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "La Boîte", - text = { - "Tous les Jokers Communs", - "sont affaiblis", - }, - }, - bl_cry_clock = { - name = "L'Horloge", - text = { - "+0.1X du score requis toutes", - "les 3 secondes passées dans cette Ante", - }, - }, - bl_cry_hammer = { - name = "Le Marteau", - text = { - "Toutes les cartes avec un", - "rang impair sont affaiblies", - }, - }, - bl_cry_joke = { - name = "La Blague", - text = { - "Si le score est >2X plus grand que le score requis,", - "saute directement à l'Ante multiple de #1# suivant", - }, - }, - bl_cry_magic = { - name = "La Magie", - text = { - "Toutes les cartes avec un", - "rang pair sont affaiblies", - }, - }, - bl_cry_lavender_loop = { - name = "Boucle Lavande", - text = { - "1.25X du score requis toutes les", - "1.5 secondes passées dans cette manche", - }, - }, - bl_cry_obsidian_orb = { - name = "Orbe d'Obsidienne", - text = { - "Applique les capacités", - "de tous les boss battus", - }, - }, - bl_cry_oldarm = { - name = "Bras Nostalgique", - text = { - "4 cartes ou moins", - "doivent être jouées", - }, - }, - bl_cry_oldfish = { - name = "Poisson Nostalgique", - text = { - "Toutes les mains", - "démarrent à 1 Multi", - }, - }, - bl_cry_oldflint = { - name = "Silex Nostalgique", - text = { - "Pas de Couleur", - }, - }, - bl_cry_oldhouse = { - name = "Maison Nostalgique", - text = { - "Pas de Full", - }, - }, - bl_cry_oldmanacle = { - name = "Menottes Nostalgiques", - text = { - "Divise le Mult par", - "les Défausses restantes", - }, - }, - bl_cry_oldmark = { - name = "Marque Nostalgique", - text = { - "Pas de main", - "contenant une Paire", - }, - }, - bl_cry_oldox = { - name = "Bœuf Nostalgique", - text = { - "Toutes les mains", - "démarrent avec 0 Jetons", - }, - }, - bl_cry_oldpillar = { - name = "Pilier Nostalgique", - text = { - "Pas de Quinte", - }, - }, - bl_cry_oldserpent = { - name = "Serpent Nostalgique", - text = { - "Divise le Mult par le niveau", - "de la main de poker jouée", - }, - }, - bl_cry_pin = { - name = "L'Épingle", - text = { - "Tous les Jokers Épiques ou de", - "rareté supérieure sont affaiblis", - }, - }, - bl_cry_pinkbow = { - name = "Nœud Rose", - text = { - "Le rang des cartes en main ou jouées", - "est altéré de manière aléatoire", - }, - }, - bl_cry_sapphire_stamp = { - name = "Tampon Saphir", - text = { - "Sélectionnez une carte en plus, déselectionne", - "une carte aléatoire avant de compter les points", - }, - }, - bl_cry_shackle = { - name = "La Manille", - text = { - "Tous les Jokers Négatifs", - "sont affaiblis", - }, - }, - bl_cry_striker = { - name = "La Butée", -- the fuck is striker meaning here - text = { - "Tous les Jokers Rares", - "sont affaiblis", - }, - }, - bl_cry_tax = { - name = "La Taxe", - text = { - "Le score par main est capé à", - "0.4X le score requis", - }, - }, - bl_cry_tornado = { - name = "Tornade Turquoise", - text = { - "#1# chances sur #2# que", - "la main jouée ne score pas", - }, - }, - bl_cry_trick = { - name = "La Ruse", - text = { - "Après chaque main, retourne", - "les cartes visibles en main", - }, - }, - bl_cry_vermillion_virus = { - name = "Virus Vermillion", - text = { - "Un Joker aléatoire est", - "remplacé à chaque main", - }, - }, - bl_cry_windmill = { - name = "Le Moulin", - text = { - "Tous les Jokers Peu communs", - "sont affaiblis", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASSE", - text = { - "Convertit {C:cry_code}#1#{} carte sélectionnée", - "en une amélioration {C:cry_code}de votre choix{}", - }, - }, - c_cry_commit = { - name = "://ENGAGER", - text = { - "Détruit un Joker {C:cry_code}choisi{},", - "crée un {C:cry_code}nouveau{} Joker", - "de la {C:cry_code}même rareté", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Ne le faites pas.", - }, - }, - c_cry_ctrl_v = { - name = "://CTRL+V", - text = { - "Crée une {C:cry_code}copie{} d'une", - "carte à jouer ou d'un consommable", - "sélectionné" - } - }, - c_cry_delete = { - name = "://EFFACER", - text = { - "Enlève de manière {C:cry_code}permanente{}", - "un objet {C:cry_code}choisi{} de la boutique", - "{C:inactive,s:0.8}L'objet n'apparaîtra plus pendant le reste de la partie", - }, - }, - c_cry_divide = { - name = "://DIVISER", - text = { - "{C:cry_code}Divise par 2{} tous les prix", - "indiqués dans la boutique actuelle", - }, - }, - c_cry_exploit = { - name = "://EXPLOITER", - text = { - "Chaque main jouée est calculée", - "comme {C:cry_code}contenant{} une main de poker {C:cry_code}choisie,", - "réinitialisé à la fin de la manche", - "{C:inactive,s:0.8}Les mains secretes doivent être", - "{C:inactive,s:0.8}découvertes pour être valides", - }, - }, - c_cry_hook = { - name = "ACCROCHER://", - text = { - "Les deux jokers sélectionnés deviennent {C:cry_code}Accrochés", - "{C:inactive,s:0.8}Ne marche seulement si les Jokers se déclenchent dans le même contexte,", - "{C:inactive,s:0.8}comme Joker et Le Duo (les deux après le compte)" - }, - }, - c_cry_inst = { - name = "://INSTANCIER", - text = { - "Tire une carte avec la {C:cry_code}couleur{} de la carte sélectionnée", - "et une carte avec le {C:cry_code}rang{} de la carte sélectionnée", - "{C:inactive}(si possible){}" - } - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Ajoute {C:dark_edition}Glitché{} à toutes", " les cartes {C:cry_code}tenues en main" }, - }, - c_cry_merge = { - name = "://FUSIONNER", - text = { - "Fusionne un {C:cry_code}consommable{} sélectionné", - "avec une {C:cry_code}carte à jouer{} choisie", - }, - }, - c_cry_multiply = { - name = "://MULTIPLIER", - text = { - "{C:cry_code}Double{} toutes les valeurs d'un", - "{C:cry_code}Joker{} sélectionné jusqu'à", - "la fin de la manche", - }, - }, - c_cry_patch = { - name = "://PATCH", - text = { - "Enlève tous les affaiblissements et", - "stickers de tous les objets visibles" - } - }, - c_cry_payload = { - name = "://CHARGEUTILE", - text = { - "La prochaine Blinde battue", - "donnera {C:cry_code}X#1#{} intérêts", - }, - }, - c_cry_oboe = { - name = "://DÉCALAGE", - text = { - "Le prochain {C:cry_code}Paquet Booster{} a", - "{C:cry_code}#1#{} carte supplémentaire et", - "{C:cry_code}#1#{} choix supplémentaire", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REDÉMARRAGE", - text = { - "Réapprovisionne les {C:blue}Mains{} et les {C:red}Défausses{},", - "remet {C:cry_code}toutes{} les cartes dans le deck", - "et tire une {C:cry_code}nouvelle{} main", - }, - }, - c_cry_revert = { - name = "://REVENIR", - text = { - "Fixe {C:cry_code}l'état du jeu{} au", - "départ de {C:cry_code}cet Ante{}", - }, - }, - c_cry_rework = { - name = "://REMANIEMENT", - text = { - "Détruit un Joker {C:cry_code}choisi{},", - "crée un {C:cry_code}Badge Remaniement{} avec", - "une édition {C:cry_code}améliorée{}", - "{C:inactive,s:0.8}Les améliorations sont", - "{C:inactive,s:0.8}utilisés dans l'ordre de la Collection", - }, - }, - c_cry_run = { - name = "://COURIR", - text = { - "Visite la {C:cry_code}boutique", - "pendant la {C:cry_code}Blinde", - }, - }, - c_cry_seed = { - name = "://GRAINE", - text = { - "Choisit un Joker", - "ou une Carte à Jouer", - "pour ajouter {C:cry_code}Truqué", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Finit la {C:cry_code}Blinde{} non-Boss actuelle", "{C:cry_code}sans{} encaissement" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Crée un Joker", - "Nourriture {C:cry_code}Glitché", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convertit {C:cry_code}#1#{} cartes sélectionnés", - "en un rang {C:cry_code}choisi{}", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astrale", - text = { - "{X:dark_edition,C:white}^#1#{} Multi", - }, - }, - e_cry_blur = { - name = "Floue", - text = { - "{C:attention}Redéclenche{} cette", - "carte {C:attention}1{} fois", - "{C:green}#1# chance(s) sur #2#{}", - "de la redéclencher {C:attention}#3#{}", - "fois de plus", - }, - }, - e_cry_double_sided = { - name = "Double-Face", - text = { - "Cette carte peut être", - "{C:attention}retournée{} pour révéler", - "une autre carte", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Multi", - "{C:green}#1# chance(s) sur #2#{} de", - "ne pas {C:red}détruite{} cette carte", - "lorsqu'elle est déclenchée", - }, - }, - e_cry_glitched = { - name = "Glitchée", - text = { - "Toutes les valeurs de cette carte", - "sont {C:dark_edition}randomized{}", - "entre {C:attention}X0.1{} et {C:attention}X10{}", - "{C:inactive}(si possible){}", - }, - }, - e_cry_gold = { - name = "Dorée", - label = "Dorée", - text = { - "{C:money}+$#1#{} lorsque cette carte", - "est utilisée ou déclenchée", - }, - }, - e_cry_m = { - name = "Joyeuse", - text = { - "{C:mult}+#1#{} Multi", - "Cette carte a l'air", - "plutôt {C:attention}joyeuse{}", - }, - }, - e_cry_mosaic = { - name = "Mosaïque", - text = { - "{X:chips,C:white} X#1# {} Jetons", - }, - }, - e_cry_noisy = { - name = "Bruitée", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Super-saturée", - text = { - "Toutes les valeurs", - "de cette carte", - "sont {C:attention}doublées{}", - "{C:inactive}(si possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Carte Écho", - text = { - "{C:green}#2# chance(s) sur #3#{} de", - "{C:attention}redéclencher{} cette carte #1# fois", - "lorsqu'elle est marquée", - }, - }, - }, - Joker = { - j_cry_adroit = { - name = "Joker adroit", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_altgoogol = { - name = "Carte Googol Play Nostalgique", - text = { - "Vendre cette carte crée", - "{C:attention}2{} copies du {C:attention}Joker{} le plus à gauche", - "{C:inactive,s:0.8}Ne copie pas les Carte Googol Play Nostalgiques{}", - }, - }, - j_cry_astral_bottle = { - name = "Astres en Bouteille", - text = { - "Lorsque cette carte est vendue,", - "applique {C:dark_edition}Astral{}", - "et {C:attention}Périssable{} à", - "un {C:attention}Joker{} aléatoire", - } - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "Ce Joker gagne", - "{X:chips,C:white} X#1# {} Jetons lorsqu'un", - "{C:attention}7{} or {C:attention}4{} est compté", - "{C:inactive}(Actuellement {X:chips,C:white}X#2# {C:inactive} Jetons)", - }, - }, - j_cry_apjoker = { - name = "Joker AP", - text = { "{X:mult,C:white} X#1# {} Multi contre les {C:attention}Blindes de Boss{}" }, - }, - j_cry_big_cube = { - name = "Gros cube", - text = { - "{X:chips,C:white} X#1# {} Jetons", - }, - }, - j_cry_biggestm = { - name = "Énorme", - text = { - "{X:mult,C:white} X#1# {} Multi jusqu'à la fin", - "de la manche si la {C:attention}main de poker{}", - "est une {C:attention}#2#{}", - "{C:inactive}(Actuellement {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}Je ne suis pas gros, juste un peu enveloppé.", - }, - }, - j_cry_blacklist = { - name = "Liste noire", - text = { - "Si un {C:attention}#1#{} est tenu en main ou joué,", - "fixe les {C:chips}Jetons{} et {C:mult}Multi{} à 0", - "{C:red,E:2}s'auto-détruit{} s'il n'y a pas de {C:attention}#1#{} dans le jeu", - "{C:inactive,s:0.8}Le rang ne change pas" - } - }, - j_cry_blender = { - name = "Blender", - text = { - "Crée un consommable", - "{C:attention}aléatoire{} lorsqu'une", - "carte {C:cry_code}Code{} est utilisée", - "{C:inactive}(Selon la place disponible){}", - }, - }, - j_cry_blurred = { - name = "Joker flou", - text = { - "Gagne {C:blue}+#1#{} main(s) lorsque", - "la {C:attention}Blinde{} est sélectionnée", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Chaque {C:attention}Joker{} donne {C:chips}+#1#{} Jetons", - "Augmente ce nombre de {C:chips}+#2#{} si la", - "{C:attention}main de poker{} jouée est une {C:attention}#3#{}", - "{C:inactive,s:0.8}Les Jokers Joyeux donnent{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}jetons{}", - }, - }, - j_cry_bonkers = { - name = "Joker dingue", - text = { - "{C:red}+#1#{} Multi si", - "la main jouée", - "contient un {C:attention}#2#" - } - }, - j_cry_bonusjoker = { - name = "Joker Bonus", - text = { - "{C:green}#1# chance(s) sur #2#{} pour que chaque", - "carte {C:attention}Bonus{} augmente le", - "nombre d'emplacements {C:attention}Joker{} or {C:attention}Consommable", - "de {C:dark_edition}1{} lorsqu'elle est comptée", - "{C:red}Marche deux fois par manche", - "{C:inactive,s:0.8}(Les chances sont les mêmes pour les deux cas){}", - }, - }, - j_cry_booster = { - name = "Paquet Joker", - text = { - "{C:attention}+#1#{} paquet supplémentaire", - "dans la boutique", - }, - }, - j_cry_boredom = { - name = "Ennui", - text = { - "{C:green}#1# chance(s) sur #2#{} que", - "chaque {C:attention}Joker{} ou {C:attention}carte à jouer{}", - "soient {C:attention}redéclenché(e)s{}", - "{C:inactive,s:0.8}N'affecte pas d'autres Ennuis{}", - }, - }, - j_cry_brittle = { - name = "Nougatine", - text = { - "Pour les {C:attention}#1#{} prochaines mains,", - "ajoute {C:attention}Pierre{}, {C:attention}Or{}, ou {C:attention}Acier{} à", - "la carte marquante la plus à droite" - } - }, - j_cry_bubblem = { - name = "M Bulle", - text = { - "Crée un {C:attention}Joker Joyeux {C:dark_edition}Brillant", - "si la main jouée contient", - "un {C:attention}#1#{}", - "puis {C:red,E:2}s'auto-détruit{}", - }, - }, - j_cry_busdriver = { - name = "Chauffeur de bus", - text = { - "{C:green}#1# chance(s) sur #3#{}", - "pour {C:mult}+#2#{} Multi", - "{C:green}1 chance(s) sur 4{}", - "pour {C:mult}-#2#{} Multi", - }, - }, - j_cry_candy_basket = { - name = "Panier de bonbons", - text = { - "Vendre cette carte crée {C:attention}#1#{} {C:cry_candy}bonbons", - "{C:attention}+#2#{} {C:cry_candy}bonbons{} tous les {C:attention}2{} Blindes battues", - "{C:attention}+#3#{} {C:cry_candy}bonbons{} lorsque la {C:attention}Blinde de Boss{} est battue" - } - }, - j_cry_candy_buttons = { - name = "Bonbons boutons", - text = { - "Les {C:attention}#1#{} prochains réassorts", - "coûtent {C:money}$1{}", - } - }, - j_cry_candy_cane = { - name = "Bonbon canne à sucre", - text = { - "Pour les {C:attention}#1#{} prochaine(s) manche(s),", - "les cartes à jouer donnent {C:money}$#2#", - "lorsqu'elles sont {C:attention}redéclenchées" - } - }, - j_cry_candy_dagger = { - name = "Dague bonbon", - text = { - "Lorsque la {C:attention}Blinde{} est sélectionnée,", - "détruit le Joker à droite de celui-ci", - "pour créer un {C:cry_candy}Bonbon{}", - } - }, - j_cry_candy_sticks = { - name = "Bonbon stick", - text = { - "L'effet de la prochaine blinde de boss n'est pas actif", - "avant que vous ayez joué {C:attention}#1#{} main" - } - }, - j_cry_canvas = { - name = "Canevas", - text = { - "{C:attention}Redéclenche{} tous les {C:attention}Jokers{} à gauche", - "une fois pour {C:attention}chaque{C:attention} Joker{} non-{C:blue}Commun", - "à droite de ce Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Chaque carte jouée donne", - "{X:mult,C:white}X#1#{} Multi lorsqu'elle est comptée", - "pour les {C:attention}#2#{} prochaines manches", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Redéclenche le Joker", - "{C:attention}le plus à gauche", - "{C:attention}#1#{} fois supplémentaires", - }, - }, - j_cry_chili_pepper = { - name = "Piment", - text = { - "Ce Joker gagne {X:mult,C:white} X#2# {} Multi", - "à la fin de la manche,", - "{C:red,E:2}s'auto-détruit{} après {C:attention}#3#{} manches", - "{C:inactive}(Actuellement{} {X:mult,C:white} X#1# {} {C:inactive}Multi){}", - }, - }, - j_cry_chocolate_dice = { - name = "Dé en chocolat", - text = { - "Lance un {C:green}d10{} lorsque", - "la {C:attention}Blinde de Boss{} est battue", - "pour démarrer un {C:cry_ascendant,E:1}événement", - "{C:inactive}(Actuellement: #1#)" - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Jetons, {X:dark_edition,C:white}^#1#{} Multi", - "s'il reste {C:attention}exactement{}", - "#2# mains à jouer", - }, - }, - j_cry_circus = { - name = "Cirque", - text = { - "Les Jokers {C:red}Rares{} donnent chacun {X:mult,C:white} X#1# {} Multi", - "Les Jokers {C:cry_epic}Épiques{} donnent chacun {X:mult,C:white} X#2# {} Multi", - "Les Jokers {C:legendary}Légendaires{} donnent chacun {X:mult,C:white} X#3# {} Multi", - "Les Jokers {C:cry_exotic}Exotiques{} donnent chacun {X:mult,C:white} X#4# {} Multi", - }, - }, - j_cry_clash = { - name = "Le clash", - text = { - "{X:mult,C:white}x#1#{} Multi si", - "la main jouée", - "contient un {C:attention}#2#" - }, - }, - j_cry_CodeJoker = { - name = "Joker Code", - text = { - "Crée une {C:cry_code}Carte Code", - "{C:dark_edition}Négative{} lorsque", - "la {C:attention}Blinde{} est sélectionnée", - }, - }, - j_cry_coin = { - name = "Crypto-monnaie", - text = { - "Gagne entre", - "{C:money}$#1#{} et {C:money}$#2#{} pour", - "chaque Joker {C:attention}vendu{}", - }, - }, - j_cry_compound_interest = { - name = "Cumul d'intérêts", - text = { - "Gagne {C:money}#1#%{} de votre argent total", - "à la fin de la manche,", - "augmente de {C:money}#2#%{} après", - "chaque paiement", - }, - }, - j_cry_copypaste = { - name = "Copier/Coller", - text = { - "Lorsqu'une carte {C:cry_code}Code{} est utilisée,", - "{C:green}#1# chance(s) sur #2#{} pour ajouter une copie", - "dans votre zone de consommables", - "{C:inactive}(Selon la place disponible)", - }, - }, - j_cry_cotton_candy = { - name = "Barbe-à-papa", -- admit it, you only wish it was as crazy sounding in english - text = { - "Lorsque cette carte est vendue,", - "les {C:attention}Jokers{} adjacents deviennent {C:dark_edition}Négatifs{}" - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "Ce joker gagne {C:chips}+#2#{} Jetons", - "par {C:attention}réapprovisionnement{} dans la boutique", - "{C:green}Tous les réapprovisionnements sont gratuits{}", - "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} jetons)", - }, - }, - j_cry_cryptidmoment = { - name = "Chaîne de M", - text = { - "Vendre cette carte ajoute", - "{C:money}$#1#{} à la {C:attention}valeur de vente{}", - "de toutes les cartes {C:attention}Joker{}", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Jetons", - }, - }, - j_cry_curse_sob = { - name = "Pleure", - text = { - "{C:edition,E:1}tu ne peux pas {} {C:cry_ascendant,E:1}t'enfuir...{}", - "{C:edition,E:1}tu ne peux pas{} {C:cry_ascendant,E:1}te cacher...{}", - "{C:dark_edition,E:1}tu ne peux pas m'échapper...{}", - "{C:inactive}(Selon la place disponible){}", - }, - }, - j_cry_cursor = { - name = "Curseur", - text = { - "Ce Joker gagne {C:chips}+#2#{} Jetons", - "pour chaque carte {C:attention}achetée{}", - "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)", - }, - }, - j_cry_cut = { - name = "Couper", - text = { - "Ce Joker détruit", - "une carte {C:cry_code}Code{} aléatoire", - "et gagne {X:mult,C:white} X#1# {} Multi", - "à la fin de la {C:attention}boutique{}", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_delirious = { - name = "Joker Délirant", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "M Croquis", - text = { - "Crée 2 {C:attention}consommables {C:dark_edition}négatifs{}", - "lorsque la {C:attention}Blinde{} est sélectionnée", - "Crée 1 {C:attention}consommable de plus", - "pour chaque {C:attention}Joker Joyeux{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Échelle", - text = { - "Les {C:attention}Jokers{} augmentant", - "augmentent de manière {C:attention}quadratique", - "{C:inactive,s:0.8}(par ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grandit comme +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Tir Amorti", - text = { - "Ce Joker gagne {X:mult,C:white} X#1# {} Multi pour", - "chaque carte {V:1}#2#{} {C:attention}non-comptée{}", - "La couleur change toutes les manches", - "{C:inactive}(Actuellement {X:mult,C:white} X#3# {C:inactive} Multi)", - }, - }, - j_cry_dubious = { - name = "Joker douteux", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_duos = { - name = "Les duos", - text = { - "{X:mult,C:white}X#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Ce Joker gagne {X:mult,C:white} X#2# {} Multi", - "lorsqu'un {C:attention}Joker{} ou une", - "carte à jouer est marquée", - "{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive} Multi)", - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Tire {C:green}toutes les cartes du deck{} en main", - "lorsque la {C:attention}Blinde{} est sélectionnée", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - -- what did they mean by that - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "Lorsqu'un {C:attention}Badge{} est obtenu,", - "crée {C:attention}#1#{} copies de celui-ci", - "et {C:attention}augmente{} le nombre de", - "copies de {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Les Jokers apparaissent en utilisant", - "l'ordre de la {C:attention}Collection{}", - "Crée {C:attention}#1#{} Joker(s) {C:dark_edition}Négatif(s){}", - "lorsqu'une main est jouée", - "{C:inactive,s:0.8}Les Jokers {C:cry_exotic,s:0.8}Exotiques {C:inactive,s:0.8}ou mieux ne peuvent pas apparaître", - "{s:0.8}Dernier Joker généré: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}E{}{C:red}UR{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Flamme éternelle", - text = { - "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", - "pour chaque carte {C:attention}vendue{}", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanète", - text = { - "Les cartes {C:dark_edition}Holographiques{}", - "donnent toutes {C:mult}+#1#{} Multi", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "Ce Joker gagne {X:dark_edition,C:white} ^#1# {} Multi", - "lorsqu'un {X:red,C:white} XMult {} est déclenché", - "{C:inactive}(Actuellement {X:dark_edition,C:white} ^#2# {C:inactive} Multi)", - }, - }, - j_cry_exposed = { - name = "Exposé", - text = { - "Retrigger all non-{C:attention}face{} cards", - "{C:attention}#1#{} additional time(s)", - "All {C:attention}face{} cards are debuffed", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Multi si", - "les cartes jouées n'ont été marqués", - "que {C:attention}#2#{} fois ou moins", - }, - }, - j_cry_filler = { - name = "Le filler", -- "english word used in french" moment - text = { - "{X:mult,C:white}X#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - }, - j_cry_fractal = { - name = "Doigts de fractale", - text = { - "{C:attention}+#1#{} à la limite de sélection de cartes", - }, - }, - j_cry_flip_side = { - name = "De l'autre côté", - text = { - "Les jokers {C:dark_edition}Double-face{} utilisent", - "leur face arrière pour les effets", - "au lieu de leur face avant", - "{C:attention}Redéclenche{} tous les jokers {C:dark_edition}Double-Face{}" - }, - }, - j_cry_foodm = { - name = "M Fast-food", - text = { - "{C:mult}+#1#{} Multi", - "{C:red,E:2}s'auto-détruit{} dans {C:attention}#2#{} manches", - "Augmente de {C:attention}#3#{} manche lorsqu'un", - "{C:attention}Joker Joyeux{} est {C:attention}vendu{}", - "{C:inactive,s:0.8}2 Double Cheese, 2 McChickens{}", - "{C:inactive,s:0.8}1 Grande Frite, 20 McNuggets & un muffin{}", - }, - }, - j_cry_foolhardy = { - name = "Joker imprudent", - text = { - "{C:red}+#1#{} Multi si la", - "main jouée contient", - "une {C:attention}#2#" - } - }, - j_cry_formidiulosus = { - name = "Formidiulosus", - text = { - "Lorsqu'un Joker {X:cry_cursed,C:white}Maudit{} est obtenu, le détruit", - "Crée {C:attention}#1#{} {C:cry_candy}Bonbons {C:dark_edition}négatifs{} à la fin de la boutique", - "Gagne {X:dark_edition,C:white}+^#2#{} Multi pour chaque {C:cry_candy}Bonbon{} tenu", - "{C:inactive}(Actuellement {X:dark_edition,C:white}^#3#{C:inactive} Multi)", - -- another word instead of "détenu" i thought of would have been "possédé" - -- but. the ghost. possession. the misunderstanding writes itself - -- - #Guigui - }, - }, - j_cry_foxy = { - name = "Joker narquois", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Hand spinner", - text = { - "Ce Joker gagne {C:chips}+#2#{} Jetons", - "si la main jouée n'est {C:attention}pas{}", - "la {C:attention}main de poker{} la plus jouée", - "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)", - }, - }, - j_cry_fuckedup = { - name = "Joker merdique", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Gagne {C:money}$#1#{} si la {C:attention}main jouée{}", - "contient un {C:attention}As{} et un {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} toutes les valeurs", - "du {C:attention}Joker{} le plus à gauche", - "à la fin de la manche", - }, - }, - j_cry_ghost = { - name = "Fantôme", - text = { - "À la fin de la manche:", - "{C:green}#1# chance(s) sur #2#{} de", - "{C:attention}posséder{} un {C:attention}Joker{} aléatoire", - "{C:green}#1# chance(s) sur #3#{} de", - "{E:2,C:red}s'auto-détruire" - } - }, - j_cry_giggly = { - name = "Joker absurde", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Joker doré", - text = { - "Gagne {C:money}#1#%{} de l'argent", - "total à la fin de la manche", - "Le gain augmente de {C:money}#2#%{}", - "lorsqu'une carte {C:attention}dorée{}", - "est comptée", - }, - }, - j_cry_googol_play = { - name = "Carte Googol Play", - text = { - "{C:green}#1# chance(s) sur #2#{} de compter", - "{X:red,C:white} X#3# {} Multi", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Crée un {C:attention}Joker{} aléatoire", - "à la fin de la manche", - "Vendre cette carte", - "crée un {C:attention}Joker{} aléatoire", - "{C:inactive}(Selon la place disponible){}", - }, - }, - j_cry_happyhouse = { - name = "Jolie maison", - text = { - "{X:dark_edition,C:white}^#1#{} Multi seulement après", - "avoir joué {C:attention}114{} mains{}", - "{C:inactive}(Actuellement #2#/114){}", - "{C:inactive,s:0.8}On n'est jamais aussi bien que chez soi !{}", - }, - }, - j_cry_home = { - name = "La maison", - text = { - "{X:mult,C:white}X#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - }, - j_cry_hunger = { - name = "Consomme-able", - text = { - "Gagne {C:money}$#1#{} lorsqu'un", - "{C:attention}consommable{} est utilisé", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Redéclenche toutes les cartes", - "{C:attention}#2#{} fois,", - "chaque carte jouée donne", - "{X:mult,C:white} X#1# {} Multi lorsqu'elle est comptée", - }, - }, - j_cry_jawbreaker = { - name = "Casse-dent", - text = { - "Lorsque la {C:attention}Blinde de Boss{} est battue,", - "{C:attention}double{} toutes les valeurs des Jokers adjacents", - "puis {E:2,C:red}s'auto-détruit{}", - } - }, - j_cry_jimball = { - name = "Jimboule", - text = { - "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", - "pour chaque main {C:attention}consécutive{} jouée", - "tant que votre {C:attention}main de poker{} la plus jouée", - "est jouée", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_jollysus = { - name = "Joker Joyeux?", - text = { - "Crée un Joker {C:dark_edition}Joyeux{}", - "quand un joker est {C:attention}vendu{}", - "{C:red}Fonctionne une fois par manche{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Je vois pas de souci...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Gagne {C:money}$#2#{} à la fin de la manche", - "Augmente le gain de {C:money}$#1#{}", - "lorsqu'un Joker {C:attention}type {C:mult}multi{} ou", - "{C:attention}type chips{} est vendu", - }, - }, - j_cry_kooky = { - name = "Joker cinglé", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty le clown", - text = { - "Ce Joker gagne", - "{X:mult,C:white} X#1# {} Multi lorsqu'une", - "{C:attention}carte à jouer{} est marquée", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_kscope = { - name = "Kaléidoscope", - text = { - "Ajoute {C:dark_edition}Polychrome{} à", - "un {C:attention}Joker{} aléatoire lorsque", - "{C:attention}la Blinde de Boss{} est battue", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Chaque {C:attention}7{} ou {C:attention}2{} joué", - "donne {X:mult,C:white}X#1#{} Multi lorsqu'il est marqué", - }, - }, - j_cry_longboi = { - name = "Monstre", - text = { - "Ajoute aux prochaines versions", - "de ce joker {X:mult,C:white}X#1#{} Multi", - "à la fin de la manche", - "{C:inactive}(Actuellement {X:mult,C:white}X#2#{C:inactive} Multi){}", - }, - }, - j_cry_loopy = { - name = "Bouclé", - text = { - "{C:attention}Redéclenche{} tous les jokers", - "une fois pour chaque {C:attention}Joker{}", - "{C:attention}joyeux{} vendu cette manche", - "{C:inactive}(Actuellement {}{C:attention:}#1#{}{C:inactive} redéclenchement(s)){}", - "{C:inactive,s:0.8}Y'avait pas assez de place...{}", - }, - }, - j_cry_lucky_joker = { - name = "Joker chanceux", - text = { - "Gagne {C:money}$#1#{} à chaque fois qu'une", - "carte {C:attention}Chance{} est {C:green}déclenchée", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "Tous les Jokers donnent", - "{X:chips,C:white} X#1# {} Jetons", - }, - }, - j_cry_m = { - name = "m", - text = { - "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", - "lorsqu'un {C:attention}Joker joyeux{} est vendu", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Crée un {C:attention}Joker joyeux{}", - "{C:dark_edition}Négatif{} lorsque", - "la {C:attention}Blinde{} est sélectionnée", - }, - }, - j_cry_macabre = { - name = "Joker macabre", - text = { - "Lorsque la {C:attention}Blinde{} est sélectionnée,", - "détruit chaque {C:attention}Joker{} à part les", - "{C:legendary}jokers M{} et {C:attention}jokers joyeux{}", - "et crée un {C:attention}joker joyeux{}", - "pour chaque carte détruite", - }, - }, - j_cry_magnet = { - name = "Magnet frigo", - text = { - "Gagne {C:money}$#1#{} à la fin de la manche", - "Le gain est {X:money,C:white} X#2# {} s'il y a", - "{C:attention}#3#{} cartes {C:attention}Joker{} ou moins", - }, - }, - j_cry_manic = { - name = "Joker maniaque", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Redéclenche tous les Jokers", - "{C:attention}#1#{} fois de plus", - }, - }, - j_cry_mask = { - name = "Masque", - text = { - "Redéclenche toutes les cartes {C:attention}Figure{}", - "{C:attention}#1#{} fois supplémentaire(s)", - "Toutes les cartes non-{C:attention}Figure{} sont affaiblies" - } - }, - j_cry_maximized = { - name = "À donf", - text = { - "Toutes les cartes {C:attention}Figure{}", - "sont considérés des {C:attention}Rois{},", - "toutes les cartes {C:attention}numérotées{}", - "sont considérées des {C:attention}10{}", - }, - }, - j_cry_maze = { - name = "Labyrinthe", - text = { - "Toutes les mains sont considérées la", - "{C:attention}première main{} de chaque manche,", - "toutes les défausses sont considérées la", - "{C:attention}première défausse{} de chaque manche", - }, - }, - j_cry_Megg = { - name = "Mœuf", - text = { - "Vendre cette carte crée", - "{C:attention}#2#{} jokers joyeux #3#, augmente", - "de {C:attention}#1#{} à la fin de la manche", - }, - }, - j_cry_mellowcreme = { - name = "Bonbon citrouille", - text = { - "Vendre cette carte {C:attention}multiplie", - "la valeur de vente de tous", - "les {C:attention}consommables{} par {C:attention}X#1#" - } - }, - j_cry_membershipcard = { - name = "Carte de membre", - text = { - "{X:mult,C:white}X#1#{} Multi pour chaque membre", - "dans le {C:attention}serveur Discord{} de {C:attention}Cryptid{}", - "{C:inactive}(Actuellement {X:mult,C:white}X#2#{C:inactive} Multi)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Vieille carte de membre", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Jetons pour chaque membre", - "dans le {C:attention}serveur Discord{} de {C:attention}Cryptid{}", - "{C:inactive}(Actuellement {C:chips}+#2#{C:inactive} Jetons)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Pluie de météores", - text = { - "Les cartes {C:dark_edition}Brillantes{} donnent", - "chacun {C:chips}+#1#{} Jetons", - }, - }, - j_cry_mneon = { - name = "M Néon", - text = { - "Gagne {C:money}$#2#{} à la fin de la manche", - "Augmente le prix de", - "{C:money}$#1#{} pour tous les {C:attention}jokers joyeux{}", - "ou {C:attention}légendaires{} à la fin de la manche", - "{C:inactive}(Augmentation minimum de{} {C:money}$1{}{C:inactive}){}", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", - "si aucune {C:attention}défausse{} n'a été", - "utilisée cette manche", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_monkey_dagger = { - name = "Dague du singe", - text = { - "Lorsque la {C:attention}Blinde{} est sélectionnée,", - "détruit le Joker situé à sa gauche", - "et augmente ces {C:mult}Jetons{} de {C:attention}dix fois{}", - "la valeur de vente du Joker détruit", - "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)", - }, - }, - j_cry_monopoly_money = { - name = "Billet de Monopoly", - text = { - "{C:green}#1# chance(s) sur #2#{} de", - "{C:attention}détruire{} les objets achetés", - "Divise l'argent par 2 si {C:attention}vendu", - } - }, - j_cry_morse = { - name = "Code morse", - text = { - "Gagne {C:money}$#2#{} à la fin de la manche", - "Augmente le gain de {C:money}$#1#{} lorsqu'une", - "carte avec une {C:attention}Édition{} est vendue", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Crée un {C:legendary}Joker M{} à la fin de la manche", - "Chaque {C:attention}Joker joyeux{} ou {C:legendary}Joker M", - "donne {X:dark_edition,C:white}^#1#{} Multi", - "Augmente ce nombre de {X:dark_edition,C:white}^#2#{}", - "lorsqu'un {C:attention}Joker joyeux{} est {C:attention}vendu", - "{C:inactive,s:0.8}(Tredecim exclu)", - }, - }, - j_cry_mstack = { - name = "Pile de Ms", - text = { - "Redéclenche toutes les cartes jouées", - "une fois pour chaque", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jokers Joyeux{} vendus", - "{C:inactive}(Actuellement {C:attention:}#1#{C:inactive} redéclenchements)", - }, - }, - j_cry_multjoker = { - name = "Joker Multi", - text = { - "{C:green}#1# chance(s) sur #2#{} pour chaque", - "carte {C:attention}Multi{} jouée de créer", - "une carte {C:spectral}Cryptide{} lorsqu'elle est marquée", - "{C:inactive}(Selon la place disponible)", - }, - }, - j_cry_necromancer = { - name = "Nécromancien", - text = { - "Lorsqu'un Joker est {C:attention}vendu{} pour plus de {C:attention}$0{},", - "gagne un Joker {C:attention}aléatoire{} {C:attention}vendu{} durant cette partie", - "et fixe sa {C:attention}valeur de vente{} à {C:attention}$0{}", - }, - }, - j_cry_negative = { - name = "Joker négatif", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} max", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Jetons si la main jouée", - "contient un {C:attention}6{} et un {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Nuit", - text = { - "{X:dark_edition,C:white}^#1#{} Multi sur la", - "main finale de la manche", - "{E:2,C:red}S'auto-détruit{} après déclenchement", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Redéclenche chaque {C:attention}7{} joué", - "{C:attention:}#1#{} fois supplémentaires", - }, - }, - j_cry_notebook = { - name = "Carnet", - text = { - "{C:green} #1# chance(s) sur #2#{} de gagner {C:dark_edition}+1{} Joker max", - "à chaque {C:attention}réapprovisionnement{} de la boutique", - "Se {C:green}déclenche toujours{} s'il y a", - "{C:attention}#5# Jokers Joyeux{} ou plus", - "{C:red}Fonctionne une seule fois par manche{}", - "{C:inactive}(Actuellement {C:dark_edition}+#3#{}{C:inactive} et #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Blocs numéros", - text = { - "Gagne {C:money}$#1#{} à la fin de la manche", - "Augmente le gain de {C:money}$#2#{}", - "pour chaque {C:attention}#3#{} tenu en main,", - "le rang change à chaque manche", - }, - }, - j_cry_nuts = { - name = "Les noix", - text = { - "{X:mult,C:white}X#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - }, - j_cry_nutty = { - name = "Joker foldingue", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_oil_lamp = { - name = "Lampe à huile", - text = { - "Augmente les valeurs du Joker {C:attention}à la droite{} de celui-ci", - "de {C:attention}x#1#{} à la fin de la manche", - }, - }, - j_cry_oldblueprint = { - name = "Vieux modèle", - text = { - "Copie les capacités du", - "{C:attention}Joker{} à sa droite", - "{C:green}#1# chance(s) sur #2#{} que", - "cette carte soit détruite", - "à la fin de la manche", - }, - }, - j_cry_oldcandy = { - name = "Bonbon rétro", - text = { - "Vendre cette carte", - "augmente la taille de la main de", - "{C:attention}+#1#{} de manière permanente", - }, - }, - j_cry_oldinvisible = { - name = "Joker Invisible Nostalgique", - text = { - "{C:attention}Duplique{} un {C:attention}Joker{}", - "aléatoire tous les {C:attention}4", - "cartes Joker vendues", - "{s:0.8}Joker Invisible Nostalgique exclu{}", - "{C:inactive}(Actuellement #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panoptique", - text = { - "Toutes les mains sont considérés", - "la {C:attention}dernière main{} de chaque manche", -- +$4 - }, - }, - j_cry_penetrating = { - name = "Joker perçant", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_pickle = { - name = "Cornichon", - text = { - "Lorsque la {C:attention}Blinde{} est passée, crée", - "{C:attention}#1#{} Badges, réduit de", - "{C:red}#2#{} lorsque la {C:attention}Blinde{} est sélectionnée", - }, - }, - j_cry_pirate_dagger = { - name = "Dague pirate", - text = { - "Lorsque la {C:attention}Blinde{} est sélectionnée,", - "détruit le Joker à droite de celui-ci", - "et gagne {C:attention}un quart{} de", - "sa valeur de vente en tant que {X:chips,C:white} XJetons {}", - "{C:inactive}(Actuellement {X:chips,C:white} X#1# {C:inactive} Jetons)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot de Blagues", - text = { - "{C:attention}#1#{} à la taille de la main,", - "mais augmente de", - "{C:blue}#2#{} à la fin de la manche", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "Ce Joker gagne {X:dark_edition,C:white} ^#1# {} Multi", - "si toutes les cartes jouées sont des", - "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, ou {C:attention}7{}", - "{C:inactive}(Actuellement {X:dark_edition,C:white} ^#2# {C:inactive} Multi)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "Ce Joker gagne", - "{X:mult,C:white} X#1# {} Multi lorsqu'une", - "carte {C:cry_code}Code{} est utilisée", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Gambit de la Dame", - text = { - "Si la {C:attention}main de poker{} jouée est une", - "{C:attention}Quinte flush royale{}, détruit la", - "{C:attention}Dame{} marquante et crée", - "un {C:attention}Joker {C:red}Rare {C:dark_edition}Negativé", - }, - }, - j_cry_quintet = { - name = "Le Quintet", - text = { - "{X:mult,C:white}X#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - }, - j_cry_redbloon = { - name = "Bloon Rouge", - text = { - "Gagne {C:money}$#1#{} dans {C:attention}#2#{} manche#3#", - "{C:red,E:2}s'auto-détruit{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante lorsque", - "{C:money}$#2#{} {C:inactive}($#3#){} sont dépensés", - "{s:0.8}Cette condition croît", - "{C:attention,s:0.8}exponentiellement{s:0.8} à chaque déclenchement", - "{C:money,s:0.8}Prochaine augmentation: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "Lorsqu'un {C:attention}Joker{} est vendu,", - "ajoute ses effets à", - "tous les autres jokers", - "{C:inactive,s:0.8}N'affecte pas d'autres Rescribere{}" - } - }, - j_cry_reverse = { - name = "Carte Inversion", - text = { - "Remplit tous les emplacements de Joker vides {C:inactive}(100 max){}", - "avec des {C:attention}Jokers Joyeux {C:dark_edition}Holographiques{} si", - "la {C:attention}main de poker défaussée{} est une {C:attention}#1#{}", - "{C:red,E:2}s'auto-détruit{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Les capacités sont changées à chaque {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Crée un Joker {C:green}Peu commun{}", - "et 3 {C:attention}Jokers Joyeux{} lorsqu'une", - "carte {C:spectral}Spectrale{} est utilisée", - "{C:red}Ne marche qu'une fois par manche{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Arbuste", - text = { - "Après avoir marqué {C:attention}#2#{} {C:inactive}[#1#]{}", - "cartes améliorées, vendre cette carte", - "crée un {C:attention}Joker{} {C:cry_epic}Épique{}", - "{C:inactive,s:0.8}Crée un {C:attention,s:0.8}Joker{} {C:red,s:0.8}Rare{}", - "{C:inactive,s:0.8}si les Jokers {C:cry_epic,s:0.8}Épiques{} {C:inactive,s:0.8}sont désactivés{}", - }, - }, - j_cry_savvy = { - name = "Joker avisé", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient un {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Les {C:attention}Jokers{} augmentant augmentent", - "comme un polynome de degré {C:attention}#1#{}", - "élève le degré de {C:attention}#2#{}", - "à la fin de la manche", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} exclu)", - }, - }, - j_cry_scrabble = { - name = "Lettre de Scrabble", - text = { - "{C:green}#1# chance(s) sur #2#{} de créer", - "un Joker {C:dark_edition}Joyeux {C:green}Peu commun{}", - "lorsque la main est jouée", - }, - }, - j_cry_seal_the_deal = { - name = "Affaire scellée", - text = { - "Ajoute un {C:attention}sceau aléatoire{} à chaque carte", - "marquée lors de la {C:attention}dernière main{} de la manche", - }, - }, - j_cry_shrewd = { - name = "Joker astucieux", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Joker farfelu", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Riquiqui", - text = { - "{X:chips,C:white} X#1# {} Jetons jusqu'à la", - "fin de la manche si la {C:attention}main de poker{} jouée", - "est un(e) {C:attention}#2#{}", - "{C:inactive}(Actuellement {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker max", - "{C:attention}+#1#{} Paquet Booster max", - "{C:attention}+#1#{} taille de main", - "{C:attention}+#1#{} emplacement de consommable", - "{C:attention}+#1#{} carte dans la boutique", - }, - }, - j_cry_spaceglobe = { - name = "Globe Céleste", - text = { - "Ce Joker gagne {X:chips,C:white}X#2#{} Jetons", - "si la {C:attention}main de poker{} jouée est un(e) {C:attention}#3#{},", - "La main change après chaque gain{}", - "{C:inactive}(Actuellement{} {X:chips,C:white}X#1#{} {C:inactive}Jetons){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Crée une copie {C:dark_edition}Négative{}", - "d'un {C:attention}Joker{} aléatoire", - "à la fin de la {C:attention}boutique", - "{C:inactive,s:0.8}Ne copie pas d'autres Speculo{}", - }, - }, - j_cry_spy = { - name = "Le Spy", - text = { - "{X:mult,C:white} X#2# {} Multi, {C:dark_edition}+1{} emplacement {C:attention}Joker{}", - "{C:inactive}Ce #1# est un Espion!", - }, - }, - j_cry_stardust = { - name = "Poussière d'étoile", - text = { - "Les cartes {C:dark_edition}Polychrome{}", - "donnent chacun {X:mult,C:white}X#1#{} Multi", - "{C:inactive,s:0.8}L'effet ne se déclenche pas", - "{C:inactive,s:0.8}sur Poussière d'étoile", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "Ce Joker détruit une", - "carte {C:planet}Planète{} aléatoire", - "et gagne {X:dark_edition,C:white} ^#1# {} Multi", - "à la fin de la {C:attention}boutique{}", - "{C:inactive}(Actuellement {X:dark_edition,C:white} ^#2# {C:inactive} Multi)", - }, - }, - j_cry_stronghold = { - name = "La Forteresse", - text = { - "{X:mult,C:white}x#1#{} Multi si", - "la main jouée", - "contient un {C:attention}#2#" - }, - }, - j_cry_subtle = { - name = "Joker subtil", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Jetons, {C:mult}+#1#{} Multi,", - "{X:chips,C:white}X#2#{} Jetons, {X:mult,C:white}X#2#{} Multi", - "Gagne {C:money}$#3#{} à", - "la fin de la manche", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "À la fin de la manche, crée", - "une {C:attention}copie{} d'une carte", - "aléatoire {C:attention}tenue en main{},", - "détruit toutes les autres", - "{s:0.8}Les {C:attention,s:0.8}Rois{s:0.8} de {C:hearts,s:0.8}Cœur{s:0.8} sont prioritaires", - }, - }, - j_cry_swarm = { - name = "L'essaim", - text = { - "{X:mult,C:white}x#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - }, - j_cry_sync_catalyst = { - name = "Catalyse Synchro", - text = { - "Balance les {C:chips}Jetons{} et le {C:mult}Multi{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tax_fraud = { - name = "Évasion Fiscale", - text = { - "Octroie {C:attention}#1#${} par {C:attention}Joker en Location", - "à la fin de la manche" - } - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} max", - "Gagne {C:money}$#2#{} à la fin de la manche", - }, - }, - j_cry_translucent = { - name = "Joker translucent", - text = { - "Vendre cette carte crée", - "une copie {C:attention}Périssable Banane{}", - "d'un {C:attention}Joker{} aléatoire", - "{s:0.8,C:inactive}(La copie ignore les compatibilités Périssable)", - }, - }, - j_cry_treacherous = { - name = "Joker traître", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_trick_or_treat = { - name = "Des bonbons ou un sort!", - text = { - "Lorsque cette carte est {C:attention}vendue{}:", - "{C:green}#1# chance(s) sur #2#{} de créer {C:attention}2{} {C:cry_candy}bonbons", - "Sinon, crée un Joker {X:cry_cursed,C:white}Maudit{}", - "{C:inactive}(Peut dépasser les maximums)" - } - }, - j_cry_tricksy = { - name = "Joker espiègle", - text = { - "{C:chips}+#1#{} Jetons si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Rythme triolet", - text = { - "{X:mult,C:white} X#1# {} Multi si la main marquée", - "contient {C:attention}exactement{} trois cartes {C:attention}3", - }, - }, - j_cry_tropical_smoothie = { - name = "Smoothie tropical", - text = { - "Vendre cette carte", - "{C:attention}multiplie{} les valeurs", - "des jokers possédés de {C:attention}X1.5{}" - } - }, - j_cry_unity = { - name = "L'Unité", - text = { - "{X:mult,C:white}x#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - }, - },j_cry_universe = { - name = "L'Univers", - text = { - "Les cartes {C:dark_edition}Astrales{}", - "donnent toutes {X:dark_edition,C:white}^#1#{} Multi", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "Les {C:attention}mains de poker{} gagnent", - "{X:red,C:white} X#1# {} Multi et {X:blue,C:white} X#1# {} Jetons", - "à chaque amélioration", - }, - }, - j_cry_unjust_dagger = { - name = "Dague injuste", - text = { - "Lorsque la {C:attention}Blind{} est sélectionnée,", - "détruit le Joker le plus à droite", - "et gagne {C:attention}un cinquième{} de", - "sa valeur de vente en tant que {X:mult,C:white} XMulti {}", - "{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive} Multi)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "Lorsqu'une probabilitée", - "est déclenchée et {C:green}succainte{},", - "ce Joker gagne {X:red,C:white}XMulti{}", - "égal à ses {C:attention}probabilités{} listées", - "{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive} Multi)", - }, - }, - j_cry_virgo = { - name = "Vierge", - text = { - "Ce Joker gagne {C:money}$#1#{} à sa {C:attention}valeur de vente{}", - "si la {C:attention}main de poker{} contient une {C:attention}#2#{}", - "Vendre cette carte crée", - "un {C:attention}Joker Joyeux{} {C:dark_edition}Polychrome{}", - "tous les {C:money}$4{} de {C:attention}valeur de vente{} {C:inactive}(1 minimum){}", - }, - }, - j_cry_wacky = { - name = "Joker loufoque", - text = { - "{C:mult}+#1#{} Multi si", - "la main jouée", - "contient une {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "Tous les Jokers donnent", - "{X:mult,C:white} X#1# {} Multi", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "Tous les Jokers donnent", - "{C:money}$#1#{} à chaque déclenchement", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "Ce Joker gagne", - "{C:mult}+#2#{} Multi lorsque chaque", - "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, ou {C:attention}8{}", - "joué est compté", - "{C:inactive}(Actuellement {C:mult}+#1#{C:inactive} Multi)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Redéclenche chaque {C:attention}2{} joué", --wee gaming - "{C:attention:}#1#{} fois supplémentaire(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "la Roue de l'espérance", - text = { - "Ce Joker gagne", - "{X:mult,C:white} X#1# {} Multi à chaque échec", - "de la {C:attention}Roue de la Fortune{}", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", - "si la {C:attention}main jouée{} contient", - "un {C:attention}2{} et un {C:attention}7{} de couleur différentes", - "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", - }, - }, - j_cry_wrapped = { - name = "Bonbon enveloppé", - text = { - "Crée un {C:attention}Joker Nourriture{}", - "dans {C:attention}#1#{} manche(s)", - "puis {C:red,E:2}s'auto-détruit{}", - }, - }, - j_cry_wtf = { - name = "Le Bordel", - text = { - "{X:mult,C:white}x#1#{} Multi si", - "la main jouée", - "contient un {C:attention}#2#" - }, - } - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Améliore", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "et {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Améliore", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "et {C:attention}#3#{}", - }, - }, - c_cry_Kaikki = { - name = "Kaikki", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Améliore", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "et {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Étoile à neutrons", - text = { - "Améliore une main de poker", - "aléatoire d'{C:attention}1{} niveau", - "pour chaque utilisation", - "d'{C:attention}Étoile à neutrons{}", - "durant cette partie", - "{C:inactive}(Actuellement{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planete.lua", - text = { - "{C:green}#1# chance(s) sur #2#{}", - "d'améliorer toutes", - "les {C:legendary,E:1}mains de poker{}", - "d'{C:attention}1{} niveau", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Améliore", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "et {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Améliore", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "et {C:attention}#3#{}", - }, - }, - c_cry_marsmoons = { - name = "Phobos & Déimos", - text = { - "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", - "{C:attention}#2#", - "{C:mult}+#3#{} Multi et", - "{C:chips}+#4#{} Jetons" - } - }, - c_cry_void = { - name = "Vide", - text = { - "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", - "{C:attention}#2#", - "{C:mult}+#3#{} Multi et", - "{C:chips}+#4#{} Jetons" - } - }, - c_cry_asteroidbelt = { - name = "Ceinture d'astéroïdes", - text = { - "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", - "{C:attention}#2#", - "{C:mult}+#3#{} Multi et", - "{C:chips}+#4#{} Jetons" - } - }, - c_cry_universe = { - name = "l'entièreté du putain d'univers", - text = { - "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", - "{C:attention}#2#", - "{C:mult}+#3#{} Multi et", - "{C:chips}+#4#{} Jetons" - } - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "Pochette CCD", - text = { - "Chaque carte est aussi", - "un consommable {C:attention}aléatoire{}", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Pochette Convoyeur", - text = { - "Les Jokers {C:attention}ne peuvent pas{} être déplacés", - "A chaque manche,", - "{C:attention}copie{} le Joker le plus à droite", - "and {C:attention}destroy{} le Joker le plus à gauche", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Pochette Critique", - text = { - "Après chaque main jouée,", - "{C:green}1 chance(s) sur 4{} d'obtenir {X:dark_edition,C:white} ^2 {} Multi", - "{C:green}1 chance(s) sur 8{} d'obtenir {X:dark_edition,C:white} ^0.5 {} Multi", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Pochette encodée", - text = { - "Démarre avec un {C:cry_code,T:j_cry_CodeJoker}Joker Code{}", - "et un {C:cry_code,T:j_cry_copypaste}Copier/Coller{}", - "Seules les {C:cry_code}Cartes Code{} apparaissent dans la boutique", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Pochette équilibrée", - text = { - "Toutes les cartes ont", - "la {C:attention}même chance{}", - "d'apparaître dans la boutique,", - "démarre la partie avec", - "{C:attention,T:v_overstock_plus}+2 cartes dans la boutique", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Pochette illimitée", - text = { - "Vous pouvez sélectionner", - "{C:attention}n'importe quel{} nombre de cartes", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Pochette défective", - text = { - "La valeur des cartes", - "sont {C:attention}aléatoires", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Pochette 2-pour-le-prix-d'un", - text = { - "Quand un {C:attention}coupon{} est acheté,", - "gagne ses {C:attention}améliorations", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Pochette Vortex", - text = { - "Démarre avec un Joker {C:cry_exotic}Exotique{C:attention}", - "Les Jokers sont {C:attention}20X{} ", - "plus susceptibles d'être {C:dark_edition}Négatifs", - "{C:attention}-2{} emplacements de Joker", - }, - }, - sleeve_cry_legendary_sleeve = { - name = "Pochette Légendaire", - text = { - "Démarre avec un Joker {C:legendary}Légendaire{C:legendary}", - "{C:green}1 chance sur 5{} d'en créer un autre", - "lorsque la Blinde de Boss est battue", - "{C:inactive}(selon la place disponible)", - }, - }, - }, - Spectral = { - c_cry_adversary = { - name = "Opposition", - text = { - "{C:red}Tous{} vos {C:attention}Jokers{} deviennent {C:dark_edition}Négatifs{},", - "{C:red}tous{} les {C:attention}Jokers{} dans la boutique coûteront", - "{C:red}2X{} plus cher pour le reste de la partie", - }, - }, - c_cry_analog = { - name = "Analogue", - text = { - "Crée {C:attention}#1#{} copies d'un", - "{C:attention}Joker{} aléatoire, détruit", - "tous les autres Jokers, {C:attention}+#2#{} Ante", - }, - },c_cry_chambered = { - name = "Chambré", - text = { - "Crée {C:attention}#1#{} copies {C:dark_edition}Négatives{}", - "d'un consommable {C:attention}aléatoire", - "{C:inactive,s:0.8}Ne copie pas Chambré{}" - }, - }, - c_cry_conduit = { - name = "Conduit", - text = { - "Échange les {C:attention}éditions{} de", - "{C:attention}2{} cartes ou {C:attention}Jokers{} sélectionnées", - }, - }, - c_cry_gateway = { - name = "Portail", - text = { - "Crée un {C:attention}Joker{} {C:cry_exotic,E:1}Exotique", - "aléatoire, détruit", - "tous les autres Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Verrou", - text = { - "Enlève {C:red}tous{} les stickers", - "de {C:red}tous{} les Jokers,", - "puis applique {C:purple,E:1}Éternel{}", - "à un {C:attention}Joker{} aléatoire", - }, - }, - c_cry_pointer = { - name = "POINTEUR://", - text = { - "Crée une carte", - "de {C:cry_code}votre choix", - "{C:inactive,s:0.8}(Jokers exotiques #1#exclus)", - }, - }, - c_cry_replica = { - name = "Réplique", - text = { - "Convertit toutes les", - "cartes en main", - "en une carte {C:attention}aléatoire{}", - "tenue en main", - }, - }, - c_cry_ritual = { - name = "Rituel", - text = { - "Applique {C:dark_edition}Négatif{}, {C:dark_edition}Mosaïque", - "ou {C:dark_edition}Astral{} à {C:attention}#1#{}", - "carte sélectionnée" - } - }, - c_cry_source = { - name = "Source", - text = { - "Ajoute un {C:cry_code}Sceau vert{}", - "à {C:attention}#1#{} carte", - "sélectionnée", - }, - }, - c_cry_summoning = { - name = "Invocation", - text = { - "Crée un {C:joker}Joker{} {C:cry_epic}Épique{}", - "aléatoire, détruit un", - "autre {C:joker}Joker{} aléatoire", - }, - }, - c_cry_trade = { - name = "Échange", - text = { - "{C:attention}Perdez{} un Coupon aléatoire,", - "gagnez {C:attention}2{} Coupons aléatoires", - }, - }, - c_cry_typhoon = { - name = "Typhon", - text = { - "Ajoute un {C:cry_azure}Sceau Azur{}", - "à {C:attention}#1#{} carte", - "sélectionnée", - }, - }, - c_cry_vacuum = { - name = "Aspiration", - text = { - "Enlève {C:red}toutes{} les {C:green}modifications{}", - "de {C:red}toutes{} les cartes en main", - "Gagne {C:money}$#1#{} par {C:green}modification{} enlevée", - "{C:inactive,s:0.7}(par ex. Améliorations, Sceaux, Éditions)", - }, - }, - c_cry_white_hole = { - name = "Trou blanc", - text = { - "{C:attention}Enlève{} toues les niveaux de toutes les mains,", - "améliore la main de poker {C:legendary,E:1}la plus jouée{}", - "de {C:attention}3{} pour chaque niveau enlevé", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Mise rose", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Le score requis augmente (beaucoup)", - "plus rapidement pour chaque {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Mise marron", - colour = "Brown", - text = { - "Tous les {C:attention}stickers{} sont", - "compatibles entre eux", - }, - }, - stake_cry_yellow = { - name = "Mise jaune", - colour = "Yellow", - text = { - "Les {C:attention}stickers{} peuvent apparaître", - "sur tous les objets achetables", - }, - }, - stake_cry_jade = { - name = "Mise jade", - colour = "Jade", - text = { - "Les cartes peuvent être tirées {C:attention}face cachée{}", - }, - }, - stake_cry_cyan = { - name = "Mise cyan", - colour = "Cyan", - text = { - "Les Jokers {C:green}Peu-communs{} et {C:red}Rares{} ont", - "moins de chances d'apparaître", - }, - }, - stake_cry_gray = { - name = "Mise grise", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Mise pourpre", - colour = "Crimson", - text = { - "Les coupons sont réapprovisionnés aux Antes {C:attention}pairs{}", - }, - }, - stake_cry_diamond = { - name = "Mise diamant", - colour = "Diamond", - text = { - "Gagner nécessite de battre l'Ante {C:attention}10{}", - }, - }, - stake_cry_amber = { - name = "Mise ambre", - colour = "Amber", - text = { - "{C:attention}-1{} emplacement de Paquet Booster", - }, - }, - stake_cry_bronze = { - name = "Mise bronze", - colour = "Bronze", - text = { - "Les coupons coûtent {C:attention}50%{} plus cher", - }, - }, - stake_cry_quartz = { - name = "Mise quartz", - colour = "Quartz", - text = { - "Les jokers peuvent être {C:attention}Épinglés{}", - "{s:0.8,C:inactive}(Restent épinglés à la position la plus à gauche){}", - }, - }, - stake_cry_ruby = { - name = "Mise rubis", - colour = "Ruby", - text = { - "Les {C:attention}Grosses{} Blindes peuvent être", - "des Blindes de {C:attention}Boss{}", - }, - }, - stake_cry_glass = { - name = "Mise verre", - colour = "Glass", - text = { - "Les cartes peuvent se {C:attention}briser{}", - "lorsqu'elles sont marquées", - }, - }, - stake_cry_sapphire = { - name = "Mise saphir", - colour = "Sapphire", - text = { - "À la fin de l'ante,", - "perdez {C:attention}25%{} de votre argent", - "{s:0.8,C:inactive}(Jusqu'à $10){}", - }, - }, - stake_cry_emerald = { - name = "Mise émeraude", - colour = "Emerald", - text = { - "Les cartes, paquets et coupons", - "peuvent être {C:attention}face cachée{}", - "{s:0.8,C:inactive}(Impossible de les voir avant de les acheter){}", - }, - }, - stake_cry_platinum = { - name = "Mise platine", - colour = "Platinum", - text = { - "Les Petites Blindes sont {C:attention}enlevées{}", - }, - }, - stake_cry_twilight = { - name = "Mise aube", - colour = "Twilight", - text = { - "Les cartes peuvent être {C:attention}Banane{}", - "{s:0.8,C:inactive}(1 chance(s) sur 10 d'être détruite à la fin de la manche){}", - }, - }, - stake_cry_verdant = { - name = "Mise verdoyante", - colour = "Verdant", - text = { - "Le score requis augmente (toujours)", - "plus rapidement pour chaque {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Mise embre", - colour = "Ember", - text = { - "Tous les objets ne donnent pas d'argent", - "lorsqu'ils sont vendus" - }, - }, - stake_cry_dawn = { - name = "Mise aurore", - colour = "Dawn", - text = { - "Les cartes Tarots et Spectrales ciblent", - "{C:attention}1{} carte de moins", - "{s:0.8,C:inactive}(Minimum 1){}", - }, - }, - stake_cry_horizon = { - name = "Mise horizon", - colour = "Horizon", - text = { - "Lorsque la blinde est sélectionnée,", - "une {C:attention}carte aléatoire{} est", - "ajoutée au deck", - }, - }, - stake_cry_blossom = { - name = "Mise éclat", - colour = "Blossom", - text = { - "Les Blindes {C:attention}Finales{} peuvent apparaître", - "dans {C:attention}n'importe quel{} Ante", - }, - }, - stake_cry_azure = { - name = "Mise azur", - colour = "Azure", - text = { - "Les valeurs sur les Jokers", - "sont réduits de {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Mise ascendante", - colour = "Ascendant", - text = { - "{C:attention}-1{} emplacement", - "dans la boutique", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Badge Astral", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Astral" - } - }, - tag_cry_banana = { - name = "Badge Banane", - text = { - "Crée un {C:attention}#1#", - "{C:inactive}(Selon la place disponible){}", - }, - }, - tag_cry_bettertop_up = { - name = "Badge de remplissage (en mieux)", - text = { - "Crée jusqu'à {C:attention}#1#", - "Jokers {C:green}Peu-Communs{}", - "{C:inactive}(Selon la place disponible){}", - }, - }, - tag_cry_better_voucher = { - name = "Badge Ticket d'Or", -- base cryptid isn't crazy enough with their badge names smh - text = { - "Ajoute un coupon de catégorie {C:attention}#1#{}", - "dans la prochaine boutique", - }, - }, - tag_cry_blur = { - name = "Badge Flou", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Flou" - } - }, - tag_cry_booster = { - name = "Badge Booster", - text = { - "Le prochain {C:cry_code}Paquet Booster{} a", - "{C:attention}2X plus{} de cartes et", - "{C:attention}2X plus{} de choix", - }, - }, - tag_cry_bundle = { - name = "Lot de Badges", - text = { - "Crée un {C:attention}Badge Standard{}, {C:tarot}Badge Breloque{},", - "{C:attention}Badge Bouffon{}, and {C:planet}Badge Météore", - }, - }, - tag_cry_cat = { - name = "Badge Chat", - text = { - "Miaou !", - "{C:inactive}Niveau {C:dark_edition}#1#" - }, - }, - tag_cry_console = { - name = "Badge Commande", - text = { - "Octroie un", - "{C:cry_code}Paquet Code" - } - }, - tag_cry_double_m = { - name = "Badge Double M", - text = { - "La boutique a un", - "{C:red}Joker M {C:dark_edition}Joyeux{}" - } - }, - tag_cry_empowered = { - name = "Badge Renforcé", - text = { - "Octroie un {C:spectral}Paquet Spectral", - "avec {C:legendary,E:1}l'Âme{} et {C:cry_exotic,E:1}Portail{}" - } - }, - tag_cry_epic = { - name = "Badge Épique", - text = { - "La boutique a un", - "{C:cry_epic}Joker Épique{} à moitié prix" - } - }, - tag_cry_gambler = { - name = "Badge du Parieur", - text = { - "{C:green}#1# chance(s) sur #2#{} de créer", - "un {C:cry_exotic,E:1}Badge Renforcé", - }, - }, - tag_cry_glass = { - name = "Badge Fragile", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Fragile" - } - }, - tag_cry_glitched = { - name = "Badge Buggé", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Glitché" - } - }, - tag_cry_gold = { - name = "Badge Doré", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Doré" - } - }, - tag_cry_gourmand = { - name = "Badge à Emporter", -- the icon is a bag so - text = { - "La boutique a un", - "{C:cry_epic}Joker Nourriture{} gratuit" - } - }, - tag_cry_loss = { - name = "Loss", - text = { - "Octroie un", - "{C:cry_ascendant}Paquet Mème" - }, - }, - tag_cry_m = { - name = "Badge Sourire", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Joyeux" - } - }, - tag_cry_memory = { - name = "Badge Mémoire", - text = { - "Crée {C:attention}#1#{} copies du", - "dernier {C:attention}Badge{} utilisé", - "durant cette partie", - "{s:0.8,C:inactive}Les Badges de Copie sont exclus", - "{s:0.8,C:inactive}Actuellement : {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Badge Mosaïque", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Mosaïque" - } - }, - tag_cry_oversat = { - name = "Badge Sur-saturé", - text = { - "Le prochain Joker sans Édition dans", - "la boutique devient gratuit et {C:dark_edition}Sur-saturé" - } - }, - tag_cry_quadruple = { - name = "Badge Quadruple", - text = { - "Octroiera {C:attention}#1#{} copies du", - "prochain {C:attention}Badge{} sélectionné", - "{s:0.8,C:inactive}Badges de Copie exclus", - }, - }, - tag_cry_quintuple = { - name = "Badge Quintuple", - text = { - "Octroiera {C:attention}#1#{} copies du", - "prochain {C:attention}Badge{} sélectionné", - "{s:0.8,C:inactive}Badges de Copie exclus", - }, - }, - tag_cry_rework = { - name = "Badge Remaniement", - text = { - "La boutique a un", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Badge Schéma", - text = { - "La boutique a un", - "{C:attention}Remue-méninges", - }, - }, - tag_cry_scope = { - name = "Badge Mesuré", - text = { - "{C:attention}+#1# {C:blue}mains{} et", - "{C:red}défausses{} à la prochaine manche", - }, - }, - tag_cry_triple = { - name = "Badge Triple", - text = { - "Octroiera {C:attention}#1#{} copies du", - "prochain {C:attention}Badge{} sélectionné", - "{s:0.8,C:inactive}Badges de Copie exclus", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "l'Automate", - text = { - "Crée jusqu'à {C:attention}#1#", - "cartes {C:cry_code}Code{} aléatoires", - "{C:inactive}(Selon la place disponible)", - }, - }, - c_cry_eclipse = { - name = "l'Éclipse", - text = { - "Transforme jusqu'à {C:attention}#1#", - "cartes sélectionnées en", - "{C:attention}Carte(s) écho", - }, - }, - c_cry_meld = { - name = "le Mélange", - text = { - "Transforme un {C:attention}Joker{} ou", - "une {C:attention}carte à jouer{} en", - "carte {C:dark_edition}Double-face", - }, - }, - c_cry_theblessing = { - name = "la Bénédiction", - text = { - "Crée {C:attention}1{}", - "{C:attention}consommable{} aléatoire", - "{C:inactive}(Selon la place disponible){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Astéroglyphe", - text = { - "Règle l'Ante sur {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Tableau Blanc", - text = { - "{C:attention}+#1#{} à la taille de la main", - }, - }, - v_cry_clone_machine = { - name = "Machine de Clones", - text = { - "Les Badges double deviennent", - "des {C:attention}Badges Quintuple{} et", - "sont {C:attention}4X{} plus communs", - }, - }, - v_cry_command_prompt = { - name = "Invite de Commandes", - text = { - "Les cartes {C:cry_code}Code{}", - "peuvent apparaître", - "dans la {C:attention}boutique{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Les Badges double deviennent", - "des {C:attention}Badges Triple{} et", - "sont {C:attention}2X{} plus communs", - }, - }, - v_cry_curate = { - name = "Curation", - text = { - "Toutes les cartes", - "apparaissent avec", - "une {C:dark_edition}Édition{}", - }, - }, - v_cry_dexterity = { - name = "Dextérité", - text = { - "{C:blue}+#1#{} main(s) par manche", - "{C:inactive}(oui, encore)" - } - }, - v_cry_double_down = { - name = "Double ou double", - text = { - "Après chaque manche,", - "{X:dark_edition,C:white} X1.5 {} à toutes les valeurs", - "à l'arrière des", - "cartes {C:dark_edition}Double-Face{}" - }, - }, - v_cry_double_slit = { - name = "Double fente", - text = { - "{C:attention}le Mélange{} peut apparaître", - "dans la boutique et dans", - "les Paquets Arcana", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "Les cartes {C:dark_edition}Double-Face{} apparaîssent", - "{C:attention}4X{} plus souvent", - }, - }, - v_cry_fabric = { - name = "Toile Universelle", - text = { - "{C:dark_edition}+#1#{} emplacement(s) de Joker", - }, - }, - v_cry_massproduct = { - name = "Production de Masse", - text = { - "Toutes les cartes et tous les paquets", - "dans la boutique coutent {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Haricot d'Argent", - text = { - "Augmente le plafond", - "des intérêts perçus", - "par manche à {C:money}#1#${}" - } - }, - v_cry_overstock_multi = { - name = "Multi-stock", - text = { - "{C:attention}+#1#{} emplacement(s) de carte(s) et", - "{C:attention}+#1#{} emplacement(s) de paquet(s)", - "disponibles dans la boutique", - }, - }, - v_cry_pacclimator = { - name = "Acclimateur de Planète", - text = { - "Les cartes {C:planet}Planète{} apparaissent", - "{C:attention}X#1#{} plus souvent", - "dans la boutique", - "Toutes les futures cartes", - "{C:planet}Planète{} sont {C:green}gratuites{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pair'amount Plus", - text = { - "{C:attention}Redéclenche{} tous les Jokers M", - "une fois pour chaque Paire", - "{C:attention}contenue{} dans la main jouée", - }, - }, - v_cry_pairing = { - name = "Lapaire", - text = { - "{C:attention}Redéclenche{} tous les Jokers M", - "si la main jouée est une {C:attention}Paire", - "{C:inactive,s:0.8}Y'en a pas deux!" - }, - }, - v_cry_quantum_computing = { - name = "Informatique Quantique", - text = { - "Les cartes {C:cry_code}Code{} peuvent apparaître", - "avec l'édition {C:dark_edition}Négative{}", - }, - }, - v_cry_repair_man = { - name = "Ré-paire-ation", - text = { - "{C:attention}Redéclenche{} tous les Jokers M", - "si la main jouée contient une {C:attention}Paire", - }, - }, - v_cry_rerollexchange = { - name = "Réassorts en Folie", - text = { - "{C:green}Réassortir{} la boutique", - "coûte {C:money}2${}" - } - }, - v_cry_satellite_uplink = { - name = "Liaison Astrale", - text = { - "Les Cartes {C:cry_code}Code{} peuvent", - "apparaître dans n'importe lequel", - "des {C:attention}Paquets Célestes{}", - }, - }, - v_cry_scope = { - name = "Portée Galactique", - text = { - "Crée la carte {C:planet}Planète", - "de la {C:attention}main de poker", - "jouée", - "{C:inactive}(Selon la place disponible){}", - }, - }, - v_cry_tacclimator = { - name = "Acclimateur de Tarot", - text = { - "Les cartes {C:tarot}Tarot{} apparaissent", - "{C:attention}X#1#{} plus souvent", - "dans la boutique", - "Toutes les futures cartes", - "{C:tarot}Tarot{} seront {C:green}gratuites{}", - }, - }, - v_cry_tag_printer = { - name = "Imprimante à Badge", - text = { - "Les Badges Double deviennent des", - "{C:attention}Badges Quadruple{} et", - "sont {C:attention}3X{} plus communs", - }, - }, - v_cry_threers = { - name = "Les 3 R", - text = { - "{C:red}#1#{} défausses", - "par manche" - }, - }, - v_cry_stickyhand = { - name = "Main Collante", - text = { - "{C:attention}+#1#{} limite", - "de sélection de cartes", - }, - }, - v_cry_grapplinghook = { - name = "Grappin", - text = { - "{C:attention}+#1#{} limite", - "de sélection de cartes", - "{C:inactive,s:0.7}Il est possible de faire beacuoup plus que ce que vous pensez.{}", - }, - }, - v_cry_hyperspacetether = { - name = "Accroche Intersidérale", - text = { - "{C:attention}+#1#{} limite", - "de sélection de cartes", - "{C:inactive,s:0.7}NOTE: Aura plus de{}", - "{C:inactive,s:0.7}fonctionnalités plus tard{}", - }, - }, - }, - Other = { - banana = { - name = "Banane", - text = { - "{C:green}#1# chance(s) sur #2#{} d'être", - "détruit après chaque manche", - }, - }, - cry_rigged = { - name = "Truqué", - text = { - "Toutes les probabilités {C:cry_code}listées{}", - "sont {C:cry_code}garanties", - }, - }, - cry_hooked = { - name = "Accroché", - text = { - "Quand ce joker est {C:cry_code}déclenché{},", - "déclenche {C:cry_code}#1#", - }, - }, - cry_flickering = { - name = "Luisant", - text = { - "Détruit après", - "{C:attention}#1#{} déclenchements", - "{C:inactive}({C:attention}#2#{C:inactive} restants)" - }, - }, - cry_flickering_desc = { --used by choco dice - name = "Luisant", - text = { - "Détruit après", - "{C:attention}#1#{} déclenchements", - }, - }, - cry_possessed = { - name = "Possédé", - text = { - "{C:attention}Désactive{} et {C:attention}inverse{}", - "les effets, si possible", - "Détruit en même temps que {C:attention}Fantôme" - }, - }, - food_jokers = { - name = "Jokers Nourriture", - text = { - "{s:0.8}Gros Michel, Œuf, Crème Glacée, Cavendish,", - "{s:0.8}Haricot Noir, Cola zéro, Popcorn, Ramen,", - "{s:0.8}Eau de Seltz, Cornichon, Piment, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}La mise à jour{s:0.7} est désactivée par défaut ({C:attention,s:0.7}Module HTTPS{s:0.7})", - }, - }, - ev_cry_choco0 = { - name = "", - text = { - "Les détails d'un {C:cry_ascendant,E:1}événement", - "seront affichés ici" - } - }, - ev_cry_choco1 = { - name = "1: Possession", - text = { - "Les {C:attention}Jokers{} et cartes à jouer ont", - "{C:green}1 chance sur 3{} de gagner Luisant", - "Crée un {C:attention}Fantôme", - "{C:inactive,s:0.7}Vous avez été possédé par un fantôme, et", - "{C:inactive,s:0.7}votre conscience vacille." - } - }, - ev_cry_choco2 = { - name = "2: Maison Hantée", - text = { - "Impossible de passer une Blinde {C:attention}Blinde{}", - "Un {C:attention}réassort{} autorisé par boutique", - "Les prix des {C:attention}coupons{} ont doublé", - "{C:inactive,s:0.7}Les esprits d'Halloween ont pris d'assaut cette partie!", - "{C:inactive,s:0.7}Ne touchez à rien et échappez-vous au plus vite!", - } - }, - ev_cry_choco3 = { - name = "3: Les préparations de la sorcière", - text = { - "Crée 3 {C:attention}Potions", - "Utilises-en une avant la fin de la {C:attention}Petite Blinde{},", - "ou {C:attention}tous{} les malus seront appliqués durant cet {C:attention}Ante", - "{C:inactive,s:0.7}Vous avez été kidnappé par une sorcière!", - "{C:inactive,s:0.7}Elle vous scrute, et vous offre trois potions.", - "{C:inactive,s:0.7}Choisis-en une, ou elle va choisir pour toi.", - } - }, - ev_cry_choco4 = { - name = "4: Abysse Lunaire", - text = { - "Les cartes à jouer ont {C:green}1 chance sur 4{}", - "de devenir une carte figure {C:club}Trèfle{}", - "Divise le {C:attention}Multi{} par le nombre de cartes face joués", - "{C:inactive,s:0.7}Même un homme au cœur pur", - "{C:inactive,s:0.7}qui fait ses prières le soir..." - } - }, - ev_cry_choco5 = { - name = "5: Sangsue", - text = { - "Enlève les {C:attention}Améliorations{} de toutes les cartes jouées", - "{C:green}1 chance sur 3{} de détruire", - "les cartes {C:heart}Cœur{} et {C:diamond}Carreau{}", - "{C:inactive,s:0.7}Méfiez vous à la tombée de la nuit, car", - "{C:inactive,s:0.7,E:1}ceux dans les ombres {C:inactive,s:0.7} cherchent à assouvir leur soif..." - } - }, - ev_cry_choco6 = { - name = "6: Prenez-en qu'un", - text = { - "À la {C:attention}fin de la manche{}, ouvre un", - "Paquet {C:attention}Booster{} aléatoire", - "{C:inactive,s:0.7}Tandis que vous déambulez dans les rues, vous apercevez une", - "{C:inactive,s:0.7}boîte remplie de Paquets Booster. Autant se servir !" - } - }, - ev_cry_choco7 = { - name = "7: L'heure de la fête", - text = { - "Crée 3 {C:attention}Des bonbons ou un sort!{} et 1 {C:attention}Panier de bonbons", - "Les boutiques ont un {C:attention}Des bonbons ou un sort!{} à chaque manche", - "Les {C:cry_candy}bonbons{} donnent {C:money}$3{} lorsqu'ils sont obtenus", - "{C:inactive,s:0.7}Tout le quartier est décoré pour les festivités fantasmagoriques,", - "{C:inactive,s:0.7}venez rejoindre l'ambience!" - } - }, - ev_cry_choco8 = { - name = "8: Pluie de bonbons", - text = { - "Lorsque la {C:attention}Blinde{} est battue, obtenez 1 {C:cry_candy}bonbon{}", - "par main restante; Obtenez un {C:attention}Joker Nourriture{}", - "lorsqu'un {C:cry_candy}bonbon{} est généré", - "{C:inactive,s:0.7}Il pleut des bonbons ! Dépechez vous et", - "{C:inactive,s:0.7,E:1}attrappez-en autant que vous pouvez !" - } - }, - ev_cry_choco9 = { - name = "9: Richesse spirituelle", - text = { - "Donne {C:money}$20", - "Tout {C:money}l'argent{} gagné est {C:attention}doublé", - "{C:inactive,s:0.7}Le spectre d'un proche disparu depuis longtemps", - "{C:inactive,s:0.7}vous visite au milieu de la nuit!", - "{C:inactive,s:0.7}Sans un mot, il place un sac d'argent dans vos mains,", - "{C:inactive,s:0.7}arbore un grand sourire, et vous salue avant de disparaitre dans l'air.", - } - }, - ev_cry_choco10 = { - name = "10: Antiquité vénérée", - text = { - "Un {C:attention}Joker{} {C:legendary}Légendaire{} apparaît", - "dans l'emplacement {C:attention}Coupon{} pour {C:money}$50", - "Ne peut être acheté qu'en tant que le {C:attention}dernier{} objet de la boutique", - "{C:inactive,s:0.7}Vous avez attiré l'attention de l'esprit d'une relique,", - "{C:inactive,s:0.7}mais cet esprit ne va pas se laisser apaiser si facilement.", - } - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Éternel", - text = { - "Toutes les cartes du paquet", - "sont {C:attention}Éternelles{}", - }, - }, - cry_perishable_booster = { - name = "Périssable", - text = { - "Toutes les cartes du paquet", - "sont {C:attention}Périssables{}", - }, - }, - cry_rental_booster = { - name = "Location", - text = { - "Toutes les cartes du paquet", - "sont {C:attention}en Location{}", - }, - }, - cry_pinned_booster = { - name = "Épinglé", - text = { - "Toutes les cartes du paquet", - "sont {C:attention}Épinglées{}", - }, - }, - cry_banana_booster = { - name = "Banane", - text = { - "Toutes les cartes du paquet", - "sont {C:attention}Bananes{}", - }, - }, - cry_eternal_voucher = { - name = "Éternel", - text = { - "Ne peut pas être échangé", - }, - }, - cry_perishable_voucher = { - name = "Périssable", - text = { - "Affaibli après", - "{C:attention}#1#{} manches", - "{C:inactive}({C:attention}#2#{C:inactive} restantes)", - }, - }, - cry_rental_voucher = { - name = "Location", - text = { - "Coûte {C:money}#1#${} à", - "la fin de la manche" - } - }, - cry_pinned_voucher = { - name = "Épinglé", - text = { - "Reste dans la boutique", - "jusqu'à ce qu'il soit échangé", - }, - }, - cry_banana_voucher = { - name = "Banane", - text = { - "{C:green}#1# chance(s) sur #2#{} d'être", - "enlevé à la fin de la manche", - }, - }, - cry_perishable_consumeable = { - name = "Périssable", - text = { - "Affaibli à la", - "fin de la manche", - }, - }, - cry_rental_consumeable = { - name = "Location", - text = { - "Coûte {C:money}#1#${} à", - "la fin de la manche, et", - "à l'utilisation" - } - }, - cry_pinned_consumeable = { - name = "Épinglé", - text = { - "Vous ne pouvez pas utiliser", - "de consommables non-{C:attention}Épinglés{}", - }, - }, - cry_banana_consumeable = { - name = "Banane", - text = { - "{C:green}#1# chance(s) sur #2#{} de", - "ne rien faire à l'utilisation", - }, - }, - p_cry_code_normal_1 = { - name = "Paquet Programme", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:cry_code}Code{} parmi {C:attention}#2#", - }, - }, - p_cry_code_normal_2 = { - name = "Paquet Programme", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:cry_code}Code{} parmi {C:attention}#2#", - }, - }, - p_cry_code_jumbo_1 = { - name = "Super Paquet Programme", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:cry_code}Code{} parmi {C:attention}#2#", - }, - }, - p_cry_code_mega_1 = { - name = "Méga Paquet Programme", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:cry_code}Code{} parmi {C:attention}#2#", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Paquet Mème", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:attention}Joker Mème{} parmi {C:attention}#2#{}", - }, - }, - p_cry_meme_two = { - name = "Paquet Mème", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:attention}Joker Mème{} parmi {C:attention}#2#{}", - }, - }, - p_cry_meme_three = { - name = "Paquet Mème", - text = { - "Jusqu'à {C:attention}#1#{} cartes", - "{C:attention}Joker Mème{} parmi {C:attention}#2#{}", - }, - }, - undiscovered_code = { - name = "Non découvert", - text = { - "Acheter ou utiliser", - "cette carte dans une", - "partie sans seed pour", - "révéler son effet" - } - }, - undiscovered_unique = { - name = "Non découvert", - text = { - "Acheter ou utiliser", - "cet objet dans une", - "partie sans seed pour", - "révéler son effet" - } - }, - cry_green_seal = { - name = "Sceau vert", - text = { - "Crée une carte {C:cry_code}Code{}", - "lorsque la carte est jouée", - "et non comptée", - "{C:inactive}(Selon la place disponible)", - }, - }, - cry_azure_seal = { - name = "Sceau azur", - text = { - "Crée {C:attention}#1#{} {C:planet}Planètes", - "{C:dark_edition}négatives{} pour la", - "{C:attention}main de poker jouée{},", - "puis {C:red}détruit{} cette carte", - }, - }, - blurred_sdm0 = { - name = "a", - text = { - "{C:inactive,s:0.7}\"Je déteste cette carte\" - SDM_0, 2024{}{}", - } - } - }, - Unique = { - c_cry_potion = { - name = "Potion", - text = { - "Applique un {C:attention}malus{}", - "inconnu lorsqu'elle est utilisée", - "{C:inactive,s:0.7}Obtenu du Dé en chocolat" - } - } - } - }, - misc = { - poker_hands = { - ['cry_Bulwark'] = "Rempart", - ['cry_Clusterfuck'] = "Foutoir", - ['cry_UltPair'] = "Super Paire", - ['cry_WholeDeck'] = "un putain de jeu complet", - }, - poker_hand_descriptions = { - ['cry_Bulwark'] = { - '5 cartes sans rang ni couleur' - }, - ['cry_Clusterfuck'] = { - 'Au moins 8 cartes sans', - 'Paire, Couleur, ou Quinte' - }, - ['cry_UltPair'] = { - 'Deux Doubles Paires, où chaque', - 'Double Paire est une couleur unique,', - 'pour un total de deux couleurs entre elles' - }, - ['cry_WholeDeck'] = { - 'Une main qui contient toutes les cartes', - "d'un jeu standard de 52 cartes.", - "Je sais pas quoi dire, mais tu es fou." - } - }, - achievement_names = { - ach_cry_ace_in_crash = "ACE de poche", - ach_cry_blurred_blurred_joker = "Cécité totale", - ach_cry_bullet_hell = "Pluie de balles", - ach_cry_break_infinity = "Atteindre l'infini", - ach_cry_cryptid_the_cryptid = "Cryptid un Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Full tordu", - ach_cry_googol_play_pass = "Pass Googol Play", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Agent immobilier", - ach_cry_jokes_on_you = "On fait moins le malin, maintenant !", - ach_cry_niw_uoy = "! éngag zeva suoV", - ach_cry_now_the_fun_begins = "Le fun peut commencer", - ach_cry_patience_virtue = "La patience est une vertue.", - ach_cry_perfectly_balanced = "Équilibre parfait", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Embouteillages", - ach_cry_ult_full_skip = "Je passe", - ach_cry_used_crash = "Tu t'attendais à quoi ?", - ach_cry_what_have_you_done = "QU'EST-CE QUE TU AS FAIT ?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtenir un Joker Flou flou", - ach_cry_bullet_hell = "Avoir 15 Jokers AP", - ach_cry_break_infinity = "Marquer 1.79e308 Jetons en une seule main", - ach_cry_cryptid_the_cryptid = "Utiliser une carte Cryptide sur une carte Cryptide", - ach_cry_exodia = "Avoir 5 Jokers exotiques", - ach_cry_freak_house = "Jouer un Full flush composé de 6 et 9 tout en ayant Nice", - ach_cry_googol_play_pass = "Truquer une Carte Googol Play", - ach_cry_haxxor = "Utiliser un code de triche", - ach_cry_home_realtor = "Activer Jolie Maison avant l'Ante 8 (sans Équilibrium/Antimatière)", - ach_cry_jokes_on_you = "Déclencher l'effet de La Blague à l'Ante 1 puis gagner la partie", - ach_cry_niw_uoy = "Atteindre l'Ante -8", - ach_cry_now_the_fun_begins = "Obtenir un Canevas", - ach_cry_patience_virtue = - "Attendre 2 minutes face à la Boucle Lavande avant de jouer la première main, puis battre la blinde", - ach_cry_perfectly_balanced = "Battre le Jeu Très Équilibré avec la Mise Ascendante", - ach_cry_pull_request = "Faire ://ENGAGER apparaître le même joker qu'il a détruit", - ach_cry_traffic_jam = "Battre tous les challenges Heure de Pointe", - ach_cry_ult_full_skip = "Gagner en 1 tour", - ach_cry_used_crash = "Utiliser ://CRASH", - ach_cry_what_have_you_done = "Supprimer ou sacrifier un Joker exotique", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Bataille de dagues", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "La carte unique", - c_cry_rng = "Aléas de l'aléatoire", -- okay i think i cooked with this one - c_cry_rush_hour = "Heure de pointe I", - c_cry_rush_hour_ii = "Heure de pointe II", - c_cry_rush_hour_iii = "Heure de pointe III", - c_cry_sticker_sheet = "Feuille d'autocollants", - c_cry_sticker_sheet_plus = "Feuille d'autocollants +", - }, - dictionary = { - --Settings Menu - cry_set_features = "Fonctionnalités", - cry_set_music = "Musique", - cry_set_enable_features = "Sélectionnez les fonctionnalités à activer (appliqué au prochain redémarrage):", - cry_feat_achievements = "Succès", - ["cry_feat_antimatter deck"] = "Jeu Anti-matière", - cry_feat_blinds = "Blindes", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Cartes Code", - ["cry_feat_misc. decks"] = "Jeux divers", - ["cry_feat_https module"] = "Module HTTPS", - ["cry_feat_timer mechanics"] = "Mécaniques Chrono", - ["cry_feat_enhanced decks"] = "Decks Améliorés", - ["cry_feat_epic jokers"] = "Jokers épiques", - ["cry_feat_exotic jokers"] = "Jokers exotiques", - ["cry_feat_m jokers"] = "Jokers M", - cry_feat_menu = "Menu principal personnalisé", - ["cry_feat_misc."] = "Divers", - ["cry_feat_misc. jokers"] = "Jokers divers", - cry_feat_planets = "Planètes", - cry_feat_jokerdisplay = "JokerDisplay (Fait rien)", - cry_feat_tags = "Badges", - cry_feat_sleeves = "Pochettes", - cry_feat_spectrals = "Cartes spectrales", - cry_feat_spooky = "Mise à jour Spooky", - ["cry_feat_more stakes"] = "Mises", - cry_feat_vouchers = "Coupons", - cry_mus_jimball = "Jimboule (Funkytown par Lipps Inc. - Sous droits d'auteur)", - cry_mus_code = "Cartes Code (://LETS_BREAK_THE_GAME par HexaCryonic)", - cry_mus_exotic = "Jokers exotiques (Joker in Latin par AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] par AlexZGreat)", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Jeu d'Antimatière", + text = { + "Applique les {C:legendary,E:1}effets{}", + "de {C:attention}tous{} les jeux", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Jeu à blanc", + text = { + "{C:inactive,E:1}Ne fait rien?", + }, + }, + b_cry_bontiful = { + name = "Jeu généreux", + text = { + "Après avoir utilisé une {C:blue}main{} ou une {C:red}défausse{},", + "{C:attention}5{} cartes sont toujours tirées", + }, + }, + b_cry_CCD = { + name = "Jeu CCD", + text = { + "Chaque carte est aussi", + "un consommable {C:attention}aléatoire{}", + }, + }, + b_cry_conveyor = { + name = "Jeu Convoyeur", + text = { + "Les Jokers {C:attention}ne peuvent pas{} être déplacés", + "A chaque manche,", + "{C:attention}copie{} le Joker le plus à droite", + "and {C:attention}destroy{} le Joker le plus à gauche", + }, + }, + b_cry_critical = { + name = "Jeu Critique", + text = { + "Après chaque main jouée,", + "{C:green}#1# chance(s) sur 4{} d'obtenir {X:dark_edition,C:white} ^2 {} Multi", + "{C:green}#1# chance(s) sur 8{} d'obtenir {X:dark_edition,C:white} ^0.5 {} Multi", + }, + }, + b_cry_encoded = { + name = "Jeu Encodé", + text = { + "Démarre avec un {C:cry_code,T:j_cry_CodeJoker}Joker Code{}", + "et un {C:cry_code,T:j_cry_copypaste}Copier/Coller{}", + "Seules les {C:cry_code}Cartes Code{} apparaissent dans la boutique", + }, + }, + b_cry_equilibrium = { + name = "Jeu de l'Équilibrium", + text = { + "Toutes les cartes ont", + "la {C:attention}même chance{}", + "d'apparaître dans la boutique,", + "démarre la partie avec", + "{C:attention,T:v_overstock_plus}Excédent Plus", + }, + }, + b_cry_glowing = { + name = "Jeu Brillant", --wtf is glowing? + text = { + "Multiplie les valeurs de", + "tous les Jokers par {X:dark_edition,C:white} X1.25 {}", + "quand la Boss Blinde est battue", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Jeu Infini", + text = { + "Sélectionne {C:attention}n'importe quel", + "nombre de cartes", + "Taille de la main {C:attention}+1{} ", + }, + }, + b_cry_misprint = { + name = "Jeu Mal Imprimé", + text = { + "La valeur des cartes", + "et des mains de poker", + "sont {C:attention}aléatoires", + }, + }, + b_cry_redeemed = { + name = "Jeu Acheté", + text = { + "Quand un {C:attention}Bon d'Achat{} est acheté,", + "gagne son {C:attention}amélioration", + }, + }, + b_cry_spooky = { + name = "Jeu fantôme", + text = { + "Démarre avec un {C:attention,T:j_cry_chocolate_dice}Dé en chocolat{} {C:eternal}éternel", + "Après chaque {C:attention}Ante{}, crée un", + "{C:cry_candy}Bonbon{} ou un Joker {X:cry_cursed,C:white}Maudit{}", + }, + }, + b_cry_very_fair = { + name = "Jeu Très Équilibré", + text = { + "{C:blue}-2{} mains, {C:red}-2{} défausses", + "à chaque manche", + "Les {C:attention}Bons d'Achat{} n'apparaissent", + "plus dans la boutique", + }, + }, + b_cry_wormhole = { + name = "Jeu Vortex", + text = { + "Démarre avec un Joker {C:cry_exotic}Exotique{C:attention}", + "Les Jokers sont {C:attention}20X{} ", + "plus susceptibles d'être {C:dark_edition}Négatifs", + "{C:attention}-2{} emplacements de Joker", + }, + }, + b_cry_legendary = { + name = "Jeu Légendaire", + text = { + "Démarre avec un Joker {C:legendary}Légendaire{C:legendary}", + "{C:green}1 chance sur 5{} d'en créer un autre", + "lorsque la Blinde de Boss est battue", + "{C:inactive}(selon la place disponible)", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "La Boîte", + text = { + "Tous les Jokers Communs", + "sont affaiblis", + }, + }, + bl_cry_clock = { + name = "L'Horloge", + text = { + "+0.1X du score requis toutes", + "les 3 secondes passées dans cette Ante", + }, + }, + bl_cry_hammer = { + name = "Le Marteau", + text = { + "Toutes les cartes avec un", + "rang impair sont affaiblies", + }, + }, + bl_cry_joke = { + name = "La Blague", + text = { + "Si le score est >2X plus grand que le score requis,", + "saute directement à l'Ante multiple de #1# suivant", + }, + }, + bl_cry_magic = { + name = "La Magie", + text = { + "Toutes les cartes avec un", + "rang pair sont affaiblies", + }, + }, + bl_cry_lavender_loop = { + name = "Boucle Lavande", + text = { + "1.25X du score requis toutes les", + "1.5 secondes passées dans cette manche", + }, + }, + bl_cry_obsidian_orb = { + name = "Orbe d'Obsidienne", + text = { + "Applique les capacités", + "de tous les boss battus", + }, + }, + bl_cry_oldarm = { + name = "Bras Nostalgique", + text = { + "4 cartes ou moins", + "doivent être jouées", + }, + }, + bl_cry_oldfish = { + name = "Poisson Nostalgique", + text = { + "Toutes les mains", + "démarrent à 1 Multi", + }, + }, + bl_cry_oldflint = { + name = "Silex Nostalgique", + text = { + "Pas de Couleur", + }, + }, + bl_cry_oldhouse = { + name = "Maison Nostalgique", + text = { + "Pas de Full", + }, + }, + bl_cry_oldmanacle = { + name = "Menottes Nostalgiques", + text = { + "Divise le Mult par", + "les Défausses restantes", + }, + }, + bl_cry_oldmark = { + name = "Marque Nostalgique", + text = { + "Pas de main", + "contenant une Paire", + }, + }, + bl_cry_oldox = { + name = "Bœuf Nostalgique", + text = { + "Toutes les mains", + "démarrent avec 0 Jetons", + }, + }, + bl_cry_oldpillar = { + name = "Pilier Nostalgique", + text = { + "Pas de Quinte", + }, + }, + bl_cry_oldserpent = { + name = "Serpent Nostalgique", + text = { + "Divise le Mult par le niveau", + "de la main de poker jouée", + }, + }, + bl_cry_pin = { + name = "L'Épingle", + text = { + "Tous les Jokers Épiques ou de", + "rareté supérieure sont affaiblis", + }, + }, + bl_cry_pinkbow = { + name = "Nœud Rose", + text = { + "Le rang des cartes en main ou jouées", + "est altéré de manière aléatoire", + }, + }, + bl_cry_sapphire_stamp = { + name = "Tampon Saphir", + text = { + "Sélectionnez une carte en plus, déselectionne", + "une carte aléatoire avant de compter les points", + }, + }, + bl_cry_shackle = { + name = "La Manille", + text = { + "Tous les Jokers Négatifs", + "sont affaiblis", + }, + }, + bl_cry_striker = { + name = "La Butée", -- the fuck is striker meaning here + text = { + "Tous les Jokers Rares", + "sont affaiblis", + }, + }, + bl_cry_tax = { + name = "La Taxe", + text = { + "Le score par main est capé à", + "0.4X le score requis", + }, + }, + bl_cry_tornado = { + name = "Tornade Turquoise", + text = { + "#1# chances sur #2# que", + "la main jouée ne score pas", + }, + }, + bl_cry_trick = { + name = "La Ruse", + text = { + "Après chaque main, retourne", + "les cartes visibles en main", + }, + }, + bl_cry_vermillion_virus = { + name = "Virus Vermillion", + text = { + "Un Joker aléatoire est", + "remplacé à chaque main", + }, + }, + bl_cry_windmill = { + name = "Le Moulin", + text = { + "Tous les Jokers Peu communs", + "sont affaiblis", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASSE", + text = { + "Convertit {C:cry_code}#1#{} carte sélectionnée", + "en une amélioration {C:cry_code}de votre choix{}", + }, + }, + c_cry_commit = { + name = "://ENGAGER", + text = { + "Détruit un Joker {C:cry_code}choisi{},", + "crée un {C:cry_code}nouveau{} Joker", + "de la {C:cry_code}même rareté", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Ne le faites pas.", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Crée une {C:cry_code}copie{} d'une", + "carte à jouer ou d'un consommable", + "sélectionné", + }, + }, + c_cry_delete = { + name = "://EFFACER", + text = { + "Enlève de manière {C:cry_code}permanente{}", + "un objet {C:cry_code}choisi{} de la boutique", + "{C:inactive,s:0.8}L'objet n'apparaîtra plus pendant le reste de la partie", + }, + }, + c_cry_divide = { + name = "://DIVISER", + text = { + "{C:cry_code}Divise par 2{} tous les prix", + "indiqués dans la boutique actuelle", + }, + }, + c_cry_exploit = { + name = "://EXPLOITER", + text = { + "Chaque main jouée est calculée", + "comme {C:cry_code}contenant{} une main de poker {C:cry_code}choisie,", + "réinitialisé à la fin de la manche", + "{C:inactive,s:0.8}Les mains secretes doivent être", + "{C:inactive,s:0.8}découvertes pour être valides", + }, + }, + c_cry_hook = { + name = "ACCROCHER://", + text = { + "Les deux jokers sélectionnés deviennent {C:cry_code}Accrochés", + "{C:inactive,s:0.8}Ne marche seulement si les Jokers se déclenchent dans le même contexte,", + "{C:inactive,s:0.8}comme Joker et Le Duo (les deux après le compte)", + }, + }, + c_cry_inst = { + name = "://INSTANCIER", + text = { + "Tire une carte avec la {C:cry_code}couleur{} de la carte sélectionnée", + "et une carte avec le {C:cry_code}rang{} de la carte sélectionnée", + "{C:inactive}(si possible){}", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Ajoute {C:dark_edition}Glitché{} à toutes", " les cartes {C:cry_code}tenues en main" }, + }, + c_cry_merge = { + name = "://FUSIONNER", + text = { + "Fusionne un {C:cry_code}consommable{} sélectionné", + "avec une {C:cry_code}carte à jouer{} choisie", + }, + }, + c_cry_multiply = { + name = "://MULTIPLIER", + text = { + "{C:cry_code}Double{} toutes les valeurs d'un", + "{C:cry_code}Joker{} sélectionné jusqu'à", + "la fin de la manche", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Enlève tous les affaiblissements et", + "stickers de tous les objets visibles", + }, + }, + c_cry_payload = { + name = "://CHARGEUTILE", + text = { + "La prochaine Blinde battue", + "donnera {C:cry_code}X#1#{} intérêts", + }, + }, + c_cry_oboe = { + name = "://DÉCALAGE", + text = { + "Le prochain {C:cry_code}Paquet Booster{} a", + "{C:cry_code}#1#{} carte supplémentaire et", + "{C:cry_code}#1#{} choix supplémentaire", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REDÉMARRAGE", + text = { + "Réapprovisionne les {C:blue}Mains{} et les {C:red}Défausses{},", + "remet {C:cry_code}toutes{} les cartes dans le deck", + "et tire une {C:cry_code}nouvelle{} main", + }, + }, + c_cry_revert = { + name = "://REVENIR", + text = { + "Fixe {C:cry_code}l'état du jeu{} au", + "départ de {C:cry_code}cet Ante{}", + }, + }, + c_cry_rework = { + name = "://REMANIEMENT", + text = { + "Détruit un Joker {C:cry_code}choisi{},", + "crée un {C:cry_code}Badge Remaniement{} avec", + "une édition {C:cry_code}améliorée{}", + "{C:inactive,s:0.8}Les améliorations sont", + "{C:inactive,s:0.8}utilisés dans l'ordre de la Collection", + }, + }, + c_cry_run = { + name = "://COURIR", + text = { + "Visite la {C:cry_code}boutique", + "pendant la {C:cry_code}Blinde", + }, + }, + c_cry_seed = { + name = "://GRAINE", + text = { + "Choisit un Joker", + "ou une Carte à Jouer", + "pour ajouter {C:cry_code}Truqué", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Finit la {C:cry_code}Blinde{} non-Boss actuelle", "{C:cry_code}sans{} encaissement" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Crée un Joker", + "Nourriture {C:cry_code}Glitché", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convertit {C:cry_code}#1#{} cartes sélectionnés", + "en un rang {C:cry_code}choisi{}", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astrale", + text = { + "{X:dark_edition,C:white}^#1#{} Multi", + }, + }, + e_cry_blur = { + name = "Floue", + text = { + "{C:attention}Redéclenche{} cette", + "carte {C:attention}1{} fois", + "{C:green}#1# chance(s) sur #2#{}", + "de la redéclencher {C:attention}#3#{}", + "fois de plus", + }, + }, + e_cry_double_sided = { + name = "Double-Face", + text = { + "Cette carte peut être", + "{C:attention}retournée{} pour révéler", + "une autre carte", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Multi", + "{C:green}#1# chance(s) sur #2#{} de", + "ne pas {C:red}détruite{} cette carte", + "lorsqu'elle est déclenchée", + }, + }, + e_cry_glitched = { + name = "Glitchée", + text = { + "Toutes les valeurs de cette carte", + "sont {C:dark_edition}randomized{}", + "entre {C:attention}X0.1{} et {C:attention}X10{}", + "{C:inactive}(si possible){}", + }, + }, + e_cry_gold = { + name = "Dorée", + label = "Dorée", + text = { + "{C:money}+$#1#{} lorsque cette carte", + "est utilisée ou déclenchée", + }, + }, + e_cry_m = { + name = "Joyeuse", + text = { + "{C:mult}+#1#{} Multi", + "Cette carte a l'air", + "plutôt {C:attention}joyeuse{}", + }, + }, + e_cry_mosaic = { + name = "Mosaïque", + text = { + "{X:chips,C:white} X#1# {} Jetons", + }, + }, + e_cry_noisy = { + name = "Bruitée", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Super-saturée", + text = { + "Toutes les valeurs", + "de cette carte", + "sont {C:attention}doublées{}", + "{C:inactive}(si possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Carte Écho", + text = { + "{C:green}#2# chance(s) sur #3#{} de", + "{C:attention}redéclencher{} cette carte #1# fois", + "lorsqu'elle est marquée", + }, + }, + }, + Joker = { + j_cry_adroit = { + name = "Joker adroit", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_altgoogol = { + name = "Carte Googol Play Nostalgique", + text = { + "Vendre cette carte crée", + "{C:attention}2{} copies du {C:attention}Joker{} le plus à gauche", + "{C:inactive,s:0.8}Ne copie pas les Carte Googol Play Nostalgiques{}", + }, + }, + j_cry_astral_bottle = { + name = "Astres en Bouteille", + text = { + "Lorsque cette carte est vendue,", + "applique {C:dark_edition}Astral{}", + "et {C:attention}Périssable{} à", + "un {C:attention}Joker{} aléatoire", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "Ce Joker gagne", + "{X:chips,C:white} X#1# {} Jetons lorsqu'un", + "{C:attention}7{} or {C:attention}4{} est compté", + "{C:inactive}(Actuellement {X:chips,C:white}X#2# {C:inactive} Jetons)", + }, + }, + j_cry_apjoker = { + name = "Joker AP", + text = { "{X:mult,C:white} X#1# {} Multi contre les {C:attention}Blindes de Boss{}" }, + }, + j_cry_big_cube = { + name = "Gros cube", + text = { + "{X:chips,C:white} X#1# {} Jetons", + }, + }, + j_cry_biggestm = { + name = "Énorme", + text = { + "{X:mult,C:white} X#1# {} Multi jusqu'à la fin", + "de la manche si la {C:attention}main de poker{}", + "est une {C:attention}#2#{}", + "{C:inactive}(Actuellement {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}Je ne suis pas gros, juste un peu enveloppé.", + }, + }, + j_cry_blacklist = { + name = "Liste noire", + text = { + "Si un {C:attention}#1#{} est tenu en main ou joué,", + "fixe les {C:chips}Jetons{} et {C:mult}Multi{} à 0", + "{C:red,E:2}s'auto-détruit{} s'il n'y a pas de {C:attention}#1#{} dans le jeu", + "{C:inactive,s:0.8}Le rang ne change pas", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Crée un consommable", + "{C:attention}aléatoire{} lorsqu'une", + "carte {C:cry_code}Code{} est utilisée", + "{C:inactive}(Selon la place disponible){}", + }, + }, + j_cry_blurred = { + name = "Joker flou", + text = { + "Gagne {C:blue}+#1#{} main(s) lorsque", + "la {C:attention}Blinde{} est sélectionnée", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Chaque {C:attention}Joker{} donne {C:chips}+#1#{} Jetons", + "Augmente ce nombre de {C:chips}+#2#{} si la", + "{C:attention}main de poker{} jouée est une {C:attention}#3#{}", + "{C:inactive,s:0.8}Les Jokers Joyeux donnent{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}jetons{}", + }, + }, + j_cry_bonkers = { + name = "Joker dingue", + text = { + "{C:red}+#1#{} Multi si", + "la main jouée", + "contient un {C:attention}#2#", + }, + }, + j_cry_bonusjoker = { + name = "Joker Bonus", + text = { + "{C:green}#1# chance(s) sur #2#{} pour que chaque", + "carte {C:attention}Bonus{} augmente le", + "nombre d'emplacements {C:attention}Joker{} or {C:attention}Consommable", + "de {C:dark_edition}1{} lorsqu'elle est comptée", + "{C:red}Marche deux fois par manche", + "{C:inactive,s:0.8}(Les chances sont les mêmes pour les deux cas){}", + }, + }, + j_cry_booster = { + name = "Paquet Joker", + text = { + "{C:attention}+#1#{} paquet supplémentaire", + "dans la boutique", + }, + }, + j_cry_boredom = { + name = "Ennui", + text = { + "{C:green}#1# chance(s) sur #2#{} que", + "chaque {C:attention}Joker{} ou {C:attention}carte à jouer{}", + "soient {C:attention}redéclenché(e)s{}", + "{C:inactive,s:0.8}N'affecte pas d'autres Ennuis{}", + }, + }, + j_cry_brittle = { + name = "Nougatine", + text = { + "Pour les {C:attention}#1#{} prochaines mains,", + "ajoute {C:attention}Pierre{}, {C:attention}Or{}, ou {C:attention}Acier{} à", + "la carte marquante la plus à droite", + }, + }, + j_cry_bubblem = { + name = "M Bulle", + text = { + "Crée un {C:attention}Joker Joyeux {C:dark_edition}Brillant", + "si la main jouée contient", + "un {C:attention}#1#{}", + "puis {C:red,E:2}s'auto-détruit{}", + }, + }, + j_cry_busdriver = { + name = "Chauffeur de bus", + text = { + "{C:green}#1# chance(s) sur #3#{}", + "pour {C:mult}+#2#{} Multi", + "{C:green}1 chance(s) sur 4{}", + "pour {C:mult}-#2#{} Multi", + }, + }, + j_cry_candy_basket = { + name = "Panier de bonbons", + text = { + "Vendre cette carte crée {C:attention}#1#{} {C:cry_candy}bonbons", + "{C:attention}+#2#{} {C:cry_candy}bonbons{} tous les {C:attention}2{} Blindes battues", + "{C:attention}+#3#{} {C:cry_candy}bonbons{} lorsque la {C:attention}Blinde de Boss{} est battue", + }, + }, + j_cry_candy_buttons = { + name = "Bonbons boutons", + text = { + "Les {C:attention}#1#{} prochains réassorts", + "coûtent {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Bonbon canne à sucre", + text = { + "Pour les {C:attention}#1#{} prochaine(s) manche(s),", + "les cartes à jouer donnent {C:money}$#2#", + "lorsqu'elles sont {C:attention}redéclenchées", + }, + }, + j_cry_candy_dagger = { + name = "Dague bonbon", + text = { + "Lorsque la {C:attention}Blinde{} est sélectionnée,", + "détruit le Joker à droite de celui-ci", + "pour créer un {C:cry_candy}Bonbon{}", + }, + }, + j_cry_candy_sticks = { + name = "Bonbon stick", + text = { + "L'effet de la prochaine blinde de boss n'est pas actif", + "avant que vous ayez joué {C:attention}#1#{} main", + }, + }, + j_cry_canvas = { + name = "Canevas", + text = { + "{C:attention}Redéclenche{} tous les {C:attention}Jokers{} à gauche", + "une fois pour {C:attention}chaque{C:attention} Joker{} non-{C:blue}Commun", + "à droite de ce Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Chaque carte jouée donne", + "{X:mult,C:white}X#1#{} Multi lorsqu'elle est comptée", + "pour les {C:attention}#2#{} prochaines manches", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Redéclenche le Joker", + "{C:attention}le plus à gauche", + "{C:attention}#1#{} fois supplémentaires", + }, + }, + j_cry_chili_pepper = { + name = "Piment", + text = { + "Ce Joker gagne {X:mult,C:white} X#2# {} Multi", + "à la fin de la manche,", + "{C:red,E:2}s'auto-détruit{} après {C:attention}#3#{} manches", + "{C:inactive}(Actuellement{} {X:mult,C:white} X#1# {} {C:inactive}Multi){}", + }, + }, + j_cry_chocolate_dice = { + name = "Dé en chocolat", + text = { + "Lance un {C:green}d10{} lorsque", + "la {C:attention}Blinde de Boss{} est battue", + "pour démarrer un {C:cry_ascendant,E:1}événement", + "{C:inactive}(Actuellement: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Jetons, {X:dark_edition,C:white}^#1#{} Multi", + "s'il reste {C:attention}exactement{}", + "#2# mains à jouer", + }, + }, + j_cry_circus = { + name = "Cirque", + text = { + "Les Jokers {C:red}Rares{} donnent chacun {X:mult,C:white} X#1# {} Multi", + "Les Jokers {C:cry_epic}Épiques{} donnent chacun {X:mult,C:white} X#2# {} Multi", + "Les Jokers {C:legendary}Légendaires{} donnent chacun {X:mult,C:white} X#3# {} Multi", + "Les Jokers {C:cry_exotic}Exotiques{} donnent chacun {X:mult,C:white} X#4# {} Multi", + }, + }, + j_cry_clash = { + name = "Le clash", + text = { + "{X:mult,C:white}x#1#{} Multi si", + "la main jouée", + "contient un {C:attention}#2#", + }, + }, + j_cry_CodeJoker = { + name = "Joker Code", + text = { + "Crée une {C:cry_code}Carte Code", + "{C:dark_edition}Négative{} lorsque", + "la {C:attention}Blinde{} est sélectionnée", + }, + }, + j_cry_coin = { + name = "Crypto-monnaie", + text = { + "Gagne entre", + "{C:money}$#1#{} et {C:money}$#2#{} pour", + "chaque Joker {C:attention}vendu{}", + }, + }, + j_cry_compound_interest = { + name = "Cumul d'intérêts", + text = { + "Gagne {C:money}#1#%{} de votre argent total", + "à la fin de la manche,", + "augmente de {C:money}#2#%{} après", + "chaque paiement", + }, + }, + j_cry_copypaste = { + name = "Copier/Coller", + text = { + "Lorsqu'une carte {C:cry_code}Code{} est utilisée,", + "{C:green}#1# chance(s) sur #2#{} pour ajouter une copie", + "dans votre zone de consommables", + "{C:inactive}(Selon la place disponible)", + }, + }, + j_cry_cotton_candy = { + name = "Barbe-à-papa", -- admit it, you only wish it was as crazy sounding in english + text = { + "Lorsque cette carte est vendue,", + "les {C:attention}Jokers{} adjacents deviennent {C:dark_edition}Négatifs{}", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "Ce joker gagne {C:chips}+#2#{} Jetons", + "par {C:attention}réapprovisionnement{} dans la boutique", + "{C:green}Tous les réapprovisionnements sont gratuits{}", + "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} jetons)", + }, + }, + j_cry_cryptidmoment = { + name = "Chaîne de M", + text = { + "Vendre cette carte ajoute", + "{C:money}$#1#{} à la {C:attention}valeur de vente{}", + "de toutes les cartes {C:attention}Joker{}", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Jetons", + }, + }, + j_cry_curse_sob = { + name = "Pleure", + text = { + "{C:edition,E:1}tu ne peux pas {} {C:cry_ascendant,E:1}t'enfuir...{}", + "{C:edition,E:1}tu ne peux pas{} {C:cry_ascendant,E:1}te cacher...{}", + "{C:dark_edition,E:1}tu ne peux pas m'échapper...{}", + "{C:inactive}(Selon la place disponible){}", + }, + }, + j_cry_cursor = { + name = "Curseur", + text = { + "Ce Joker gagne {C:chips}+#2#{} Jetons", + "pour chaque carte {C:attention}achetée{}", + "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)", + }, + }, + j_cry_cut = { + name = "Couper", + text = { + "Ce Joker détruit", + "une carte {C:cry_code}Code{} aléatoire", + "et gagne {X:mult,C:white} X#1# {} Multi", + "à la fin de la {C:attention}boutique{}", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_delirious = { + name = "Joker Délirant", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "M Croquis", + text = { + "Crée 2 {C:attention}consommables {C:dark_edition}négatifs{}", + "lorsque la {C:attention}Blinde{} est sélectionnée", + "Crée 1 {C:attention}consommable de plus", + "pour chaque {C:attention}Joker Joyeux{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Échelle", + text = { + "Les {C:attention}Jokers{} augmentant", + "augmentent de manière {C:attention}quadratique", + "{C:inactive,s:0.8}(par ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grandit comme +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Tir Amorti", + text = { + "Ce Joker gagne {X:mult,C:white} X#1# {} Multi pour", + "chaque carte {V:1}#2#{} {C:attention}non-comptée{}", + "La couleur change toutes les manches", + "{C:inactive}(Actuellement {X:mult,C:white} X#3# {C:inactive} Multi)", + }, + }, + j_cry_dubious = { + name = "Joker douteux", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "Les duos", + text = { + "{X:mult,C:white}X#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Ce Joker gagne {X:mult,C:white} X#2# {} Multi", + "lorsqu'un {C:attention}Joker{} ou une", + "carte à jouer est marquée", + "{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive} Multi)", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Tire {C:green}toutes les cartes du deck{} en main", + "lorsque la {C:attention}Blinde{} est sélectionnée", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + -- what did they mean by that + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "Lorsqu'un {C:attention}Badge{} est obtenu,", + "crée {C:attention}#1#{} copies de celui-ci", + "et {C:attention}augmente{} le nombre de", + "copies de {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Les Jokers apparaissent en utilisant", + "l'ordre de la {C:attention}Collection{}", + "Crée {C:attention}#1#{} Joker(s) {C:dark_edition}Négatif(s){}", + "lorsqu'une main est jouée", + "{C:inactive,s:0.8}Les Jokers {C:cry_exotic,s:0.8}Exotiques {C:inactive,s:0.8}ou mieux ne peuvent pas apparaître", + "{s:0.8}Dernier Joker généré: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}E{}{C:red}UR{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Flamme éternelle", + text = { + "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", + "pour chaque carte {C:attention}vendue{}", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanète", + text = { + "Les cartes {C:dark_edition}Holographiques{}", + "donnent toutes {C:mult}+#1#{} Multi", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "Ce Joker gagne {X:dark_edition,C:white} ^#1# {} Multi", + "lorsqu'un {X:red,C:white} XMult {} est déclenché", + "{C:inactive}(Actuellement {X:dark_edition,C:white} ^#2# {C:inactive} Multi)", + }, + }, + j_cry_exposed = { + name = "Exposé", + text = { + "Retrigger all non-{C:attention}face{} cards", + "{C:attention}#1#{} additional time(s)", + "All {C:attention}face{} cards are debuffed", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Multi si", + "les cartes jouées n'ont été marqués", + "que {C:attention}#2#{} fois ou moins", + }, + }, + j_cry_filler = { + name = "Le filler", -- "english word used in french" moment + text = { + "{X:mult,C:white}X#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Doigts de fractale", + text = { + "{C:attention}+#1#{} à la limite de sélection de cartes", + }, + }, + j_cry_flip_side = { + name = "De l'autre côté", + text = { + "Les jokers {C:dark_edition}Double-face{} utilisent", + "leur face arrière pour les effets", + "au lieu de leur face avant", + "{C:attention}Redéclenche{} tous les jokers {C:dark_edition}Double-Face{}", + }, + }, + j_cry_foodm = { + name = "M Fast-food", + text = { + "{C:mult}+#1#{} Multi", + "{C:red,E:2}s'auto-détruit{} dans {C:attention}#2#{} manches", + "Augmente de {C:attention}#3#{} manche lorsqu'un", + "{C:attention}Joker Joyeux{} est {C:attention}vendu{}", + "{C:inactive,s:0.8}2 Double Cheese, 2 McChickens{}", + "{C:inactive,s:0.8}1 Grande Frite, 20 McNuggets & un muffin{}", + }, + }, + j_cry_foolhardy = { + name = "Joker imprudent", + text = { + "{C:red}+#1#{} Multi si la", + "main jouée contient", + "une {C:attention}#2#", + }, + }, + j_cry_formidiulosus = { + name = "Formidiulosus", + text = { + "Lorsqu'un Joker {X:cry_cursed,C:white}Maudit{} est obtenu, le détruit", + "Crée {C:attention}#1#{} {C:cry_candy}Bonbons {C:dark_edition}négatifs{} à la fin de la boutique", + "Gagne {X:dark_edition,C:white}+^#2#{} Multi pour chaque {C:cry_candy}Bonbon{} tenu", + "{C:inactive}(Actuellement {X:dark_edition,C:white}^#3#{C:inactive} Multi)", + -- another word instead of "détenu" i thought of would have been "possédé" + -- but. the ghost. possession. the misunderstanding writes itself + -- - #Guigui + }, + }, + j_cry_foxy = { + name = "Joker narquois", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Hand spinner", + text = { + "Ce Joker gagne {C:chips}+#2#{} Jetons", + "si la main jouée n'est {C:attention}pas{}", + "la {C:attention}main de poker{} la plus jouée", + "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)", + }, + }, + j_cry_fuckedup = { + name = "Joker merdique", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Gagne {C:money}$#1#{} si la {C:attention}main jouée{}", + "contient un {C:attention}As{} et un {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} toutes les valeurs", + "du {C:attention}Joker{} le plus à gauche", + "à la fin de la manche", + }, + }, + j_cry_ghost = { + name = "Fantôme", + text = { + "À la fin de la manche:", + "{C:green}#1# chance(s) sur #2#{} de", + "{C:attention}posséder{} un {C:attention}Joker{} aléatoire", + "{C:green}#1# chance(s) sur #3#{} de", + "{E:2,C:red}s'auto-détruire", + }, + }, + j_cry_giggly = { + name = "Joker absurde", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Joker doré", + text = { + "Gagne {C:money}#1#%{} de l'argent", + "total à la fin de la manche", + "Le gain augmente de {C:money}#2#%{}", + "lorsqu'une carte {C:attention}dorée{}", + "est comptée", + }, + }, + j_cry_googol_play = { + name = "Carte Googol Play", + text = { + "{C:green}#1# chance(s) sur #2#{} de compter", + "{X:red,C:white} X#3# {} Multi", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Crée un {C:attention}Joker{} aléatoire", + "à la fin de la manche", + "Vendre cette carte", + "crée un {C:attention}Joker{} aléatoire", + "{C:inactive}(Selon la place disponible){}", + }, + }, + j_cry_happyhouse = { + name = "Jolie maison", + text = { + "{X:dark_edition,C:white}^#1#{} Multi seulement après", + "avoir joué {C:attention}114{} mains{}", + "{C:inactive}(Actuellement #2#/114){}", + "{C:inactive,s:0.8}On n'est jamais aussi bien que chez soi !{}", + }, + }, + j_cry_home = { + name = "La maison", + text = { + "{X:mult,C:white}X#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consomme-able", + text = { + "Gagne {C:money}$#1#{} lorsqu'un", + "{C:attention}consommable{} est utilisé", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Redéclenche toutes les cartes", + "{C:attention}#2#{} fois,", + "chaque carte jouée donne", + "{X:mult,C:white} X#1# {} Multi lorsqu'elle est comptée", + }, + }, + j_cry_jawbreaker = { + name = "Casse-dent", + text = { + "Lorsque la {C:attention}Blinde de Boss{} est battue,", + "{C:attention}double{} toutes les valeurs des Jokers adjacents", + "puis {E:2,C:red}s'auto-détruit{}", + }, + }, + j_cry_jimball = { + name = "Jimboule", + text = { + "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", + "pour chaque main {C:attention}consécutive{} jouée", + "tant que votre {C:attention}main de poker{} la plus jouée", + "est jouée", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_jollysus = { + name = "Joker Joyeux?", + text = { + "Crée un Joker {C:dark_edition}Joyeux{}", + "quand un joker est {C:attention}vendu{}", + "{C:red}Fonctionne une fois par manche{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Je vois pas de souci...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Gagne {C:money}$#2#{} à la fin de la manche", + "Augmente le gain de {C:money}$#1#{}", + "lorsqu'un Joker {C:attention}type {C:mult}multi{} ou", + "{C:attention}type chips{} est vendu", + }, + }, + j_cry_kooky = { + name = "Joker cinglé", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty le clown", + text = { + "Ce Joker gagne", + "{X:mult,C:white} X#1# {} Multi lorsqu'une", + "{C:attention}carte à jouer{} est marquée", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_kscope = { + name = "Kaléidoscope", + text = { + "Ajoute {C:dark_edition}Polychrome{} à", + "un {C:attention}Joker{} aléatoire lorsque", + "{C:attention}la Blinde de Boss{} est battue", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Chaque {C:attention}7{} ou {C:attention}2{} joué", + "donne {X:mult,C:white}X#1#{} Multi lorsqu'il est marqué", + }, + }, + j_cry_longboi = { + name = "Monstre", + text = { + "Ajoute aux prochaines versions", + "de ce joker {X:mult,C:white}X#1#{} Multi", + "à la fin de la manche", + "{C:inactive}(Actuellement {X:mult,C:white}X#2#{C:inactive} Multi){}", + }, + }, + j_cry_loopy = { + name = "Bouclé", + text = { + "{C:attention}Redéclenche{} tous les jokers", + "une fois pour chaque {C:attention}Joker{}", + "{C:attention}joyeux{} vendu cette manche", + "{C:inactive}(Actuellement {}{C:attention:}#1#{}{C:inactive} redéclenchement(s)){}", + "{C:inactive,s:0.8}Y'avait pas assez de place...{}", + }, + }, + j_cry_lucky_joker = { + name = "Joker chanceux", + text = { + "Gagne {C:money}$#1#{} à chaque fois qu'une", + "carte {C:attention}Chance{} est {C:green}déclenchée", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "Tous les Jokers donnent", + "{X:chips,C:white} X#1# {} Jetons", + }, + }, + j_cry_m = { + name = "m", + text = { + "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", + "lorsqu'un {C:attention}Joker joyeux{} est vendu", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Crée un {C:attention}Joker joyeux{}", + "{C:dark_edition}Négatif{} lorsque", + "la {C:attention}Blinde{} est sélectionnée", + }, + }, + j_cry_macabre = { + name = "Joker macabre", + text = { + "Lorsque la {C:attention}Blinde{} est sélectionnée,", + "détruit chaque {C:attention}Joker{} à part les", + "{C:legendary}jokers M{} et {C:attention}jokers joyeux{}", + "et crée un {C:attention}joker joyeux{}", + "pour chaque carte détruite", + }, + }, + j_cry_magnet = { + name = "Magnet frigo", + text = { + "Gagne {C:money}$#1#{} à la fin de la manche", + "Le gain est {X:money,C:white} X#2# {} s'il y a", + "{C:attention}#3#{} cartes {C:attention}Joker{} ou moins", + }, + }, + j_cry_manic = { + name = "Joker maniaque", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Redéclenche tous les Jokers", + "{C:attention}#1#{} fois de plus", + }, + }, + j_cry_mask = { + name = "Masque", + text = { + "Redéclenche toutes les cartes {C:attention}Figure{}", + "{C:attention}#1#{} fois supplémentaire(s)", + "Toutes les cartes non-{C:attention}Figure{} sont affaiblies", + }, + }, + j_cry_maximized = { + name = "À donf", + text = { + "Toutes les cartes {C:attention}Figure{}", + "sont considérés des {C:attention}Rois{},", + "toutes les cartes {C:attention}numérotées{}", + "sont considérées des {C:attention}10{}", + }, + }, + j_cry_maze = { + name = "Labyrinthe", + text = { + "Toutes les mains sont considérées la", + "{C:attention}première main{} de chaque manche,", + "toutes les défausses sont considérées la", + "{C:attention}première défausse{} de chaque manche", + }, + }, + j_cry_Megg = { + name = "Mœuf", + text = { + "Vendre cette carte crée", + "{C:attention}#2#{} jokers joyeux #3#, augmente", + "de {C:attention}#1#{} à la fin de la manche", + }, + }, + j_cry_mellowcreme = { + name = "Bonbon citrouille", + text = { + "Vendre cette carte {C:attention}multiplie", + "la valeur de vente de tous", + "les {C:attention}consommables{} par {C:attention}X#1#", + }, + }, + j_cry_membershipcard = { + name = "Carte de membre", + text = { + "{X:mult,C:white}X#1#{} Multi pour chaque membre", + "dans le {C:attention}serveur Discord{} de {C:attention}Cryptid{}", + "{C:inactive}(Actuellement {X:mult,C:white}X#2#{C:inactive} Multi)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Vieille carte de membre", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Jetons pour chaque membre", + "dans le {C:attention}serveur Discord{} de {C:attention}Cryptid{}", + "{C:inactive}(Actuellement {C:chips}+#2#{C:inactive} Jetons)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Pluie de météores", + text = { + "Les cartes {C:dark_edition}Brillantes{} donnent", + "chacun {C:chips}+#1#{} Jetons", + }, + }, + j_cry_mneon = { + name = "M Néon", + text = { + "Gagne {C:money}$#2#{} à la fin de la manche", + "Augmente le prix de", + "{C:money}$#1#{} pour tous les {C:attention}jokers joyeux{}", + "ou {C:attention}légendaires{} à la fin de la manche", + "{C:inactive}(Augmentation minimum de{} {C:money}$1{}{C:inactive}){}", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", + "si aucune {C:attention}défausse{} n'a été", + "utilisée cette manche", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_monkey_dagger = { + name = "Dague du singe", + text = { + "Lorsque la {C:attention}Blinde{} est sélectionnée,", + "détruit le Joker situé à sa gauche", + "et augmente ces {C:mult}Jetons{} de {C:attention}dix fois{}", + "la valeur de vente du Joker détruit", + "{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)", + }, + }, + j_cry_monopoly_money = { + name = "Billet de Monopoly", + text = { + "{C:green}#1# chance(s) sur #2#{} de", + "{C:attention}détruire{} les objets achetés", + "Divise l'argent par 2 si {C:attention}vendu", + }, + }, + j_cry_morse = { + name = "Code morse", + text = { + "Gagne {C:money}$#2#{} à la fin de la manche", + "Augmente le gain de {C:money}$#1#{} lorsqu'une", + "carte avec une {C:attention}Édition{} est vendue", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Crée un {C:legendary}Joker M{} à la fin de la manche", + "Chaque {C:attention}Joker joyeux{} ou {C:legendary}Joker M", + "donne {X:dark_edition,C:white}^#1#{} Multi", + "Augmente ce nombre de {X:dark_edition,C:white}^#2#{}", + "lorsqu'un {C:attention}Joker joyeux{} est {C:attention}vendu", + "{C:inactive,s:0.8}(Tredecim exclu)", + }, + }, + j_cry_mstack = { + name = "Pile de Ms", + text = { + "Redéclenche toutes les cartes jouées", + "une fois pour chaque", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jokers Joyeux{} vendus", + "{C:inactive}(Actuellement {C:attention:}#1#{C:inactive} redéclenchements)", + }, + }, + j_cry_multjoker = { + name = "Joker Multi", + text = { + "{C:green}#1# chance(s) sur #2#{} pour chaque", + "carte {C:attention}Multi{} jouée de créer", + "une carte {C:spectral}Cryptide{} lorsqu'elle est marquée", + "{C:inactive}(Selon la place disponible)", + }, + }, + j_cry_necromancer = { + name = "Nécromancien", + text = { + "Lorsqu'un Joker est {C:attention}vendu{} pour plus de {C:attention}$0{},", + "gagne un Joker {C:attention}aléatoire{} {C:attention}vendu{} durant cette partie", + "et fixe sa {C:attention}valeur de vente{} à {C:attention}$0{}", + }, + }, + j_cry_negative = { + name = "Joker négatif", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} max", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Jetons si la main jouée", + "contient un {C:attention}6{} et un {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Nuit", + text = { + "{X:dark_edition,C:white}^#1#{} Multi sur la", + "main finale de la manche", + "{E:2,C:red}S'auto-détruit{} après déclenchement", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Redéclenche chaque {C:attention}7{} joué", + "{C:attention:}#1#{} fois supplémentaires", + }, + }, + j_cry_notebook = { + name = "Carnet", + text = { + "{C:green} #1# chance(s) sur #2#{} de gagner {C:dark_edition}+1{} Joker max", + "à chaque {C:attention}réapprovisionnement{} de la boutique", + "Se {C:green}déclenche toujours{} s'il y a", + "{C:attention}#5# Jokers Joyeux{} ou plus", + "{C:red}Fonctionne une seule fois par manche{}", + "{C:inactive}(Actuellement {C:dark_edition}+#3#{}{C:inactive} et #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Blocs numéros", + text = { + "Gagne {C:money}$#1#{} à la fin de la manche", + "Augmente le gain de {C:money}$#2#{}", + "pour chaque {C:attention}#3#{} tenu en main,", + "le rang change à chaque manche", + }, + }, + j_cry_nuts = { + name = "Les noix", + text = { + "{X:mult,C:white}X#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Joker foldingue", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_oil_lamp = { + name = "Lampe à huile", + text = { + "Augmente les valeurs du Joker {C:attention}à la droite{} de celui-ci", + "de {C:attention}x#1#{} à la fin de la manche", + }, + }, + j_cry_oldblueprint = { + name = "Vieux modèle", + text = { + "Copie les capacités du", + "{C:attention}Joker{} à sa droite", + "{C:green}#1# chance(s) sur #2#{} que", + "cette carte soit détruite", + "à la fin de la manche", + }, + }, + j_cry_oldcandy = { + name = "Bonbon rétro", + text = { + "Vendre cette carte", + "augmente la taille de la main de", + "{C:attention}+#1#{} de manière permanente", + }, + }, + j_cry_oldinvisible = { + name = "Joker Invisible Nostalgique", + text = { + "{C:attention}Duplique{} un {C:attention}Joker{}", + "aléatoire tous les {C:attention}4", + "cartes Joker vendues", + "{s:0.8}Joker Invisible Nostalgique exclu{}", + "{C:inactive}(Actuellement #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panoptique", + text = { + "Toutes les mains sont considérés", + "la {C:attention}dernière main{} de chaque manche", -- +$4 + }, + }, + j_cry_penetrating = { + name = "Joker perçant", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_pickle = { + name = "Cornichon", + text = { + "Lorsque la {C:attention}Blinde{} est passée, crée", + "{C:attention}#1#{} Badges, réduit de", + "{C:red}#2#{} lorsque la {C:attention}Blinde{} est sélectionnée", + }, + }, + j_cry_pirate_dagger = { + name = "Dague pirate", + text = { + "Lorsque la {C:attention}Blinde{} est sélectionnée,", + "détruit le Joker à droite de celui-ci", + "et gagne {C:attention}un quart{} de", + "sa valeur de vente en tant que {X:chips,C:white} XJetons {}", + "{C:inactive}(Actuellement {X:chips,C:white} X#1# {C:inactive} Jetons)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot de Blagues", + text = { + "{C:attention}#1#{} à la taille de la main,", + "mais augmente de", + "{C:blue}#2#{} à la fin de la manche", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "Ce Joker gagne {X:dark_edition,C:white} ^#1# {} Multi", + "si toutes les cartes jouées sont des", + "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, ou {C:attention}7{}", + "{C:inactive}(Actuellement {X:dark_edition,C:white} ^#2# {C:inactive} Multi)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "Ce Joker gagne", + "{X:mult,C:white} X#1# {} Multi lorsqu'une", + "carte {C:cry_code}Code{} est utilisée", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Gambit de la Dame", + text = { + "Si la {C:attention}main de poker{} jouée est une", + "{C:attention}Quinte flush royale{}, détruit la", + "{C:attention}Dame{} marquante et crée", + "un {C:attention}Joker {C:red}Rare {C:dark_edition}Negativé", + }, + }, + j_cry_quintet = { + name = "Le Quintet", + text = { + "{X:mult,C:white}X#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Bloon Rouge", + text = { + "Gagne {C:money}$#1#{} dans {C:attention}#2#{} manche#3#", + "{C:red,E:2}s'auto-détruit{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante lorsque", + "{C:money}$#2#{} {C:inactive}($#3#){} sont dépensés", + "{s:0.8}Cette condition croît", + "{C:attention,s:0.8}exponentiellement{s:0.8} à chaque déclenchement", + "{C:money,s:0.8}Prochaine augmentation: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "Lorsqu'un {C:attention}Joker{} est vendu,", + "ajoute ses effets à", + "tous les autres jokers", + "{C:inactive,s:0.8}N'affecte pas d'autres Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Carte Inversion", + text = { + "Remplit tous les emplacements de Joker vides {C:inactive}(100 max){}", + "avec des {C:attention}Jokers Joyeux {C:dark_edition}Holographiques{} si", + "la {C:attention}main de poker défaussée{} est une {C:attention}#1#{}", + "{C:red,E:2}s'auto-détruit{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Les capacités sont changées à chaque {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Crée un Joker {C:green}Peu commun{}", + "et 3 {C:attention}Jokers Joyeux{} lorsqu'une", + "carte {C:spectral}Spectrale{} est utilisée", + "{C:red}Ne marche qu'une fois par manche{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Arbuste", + text = { + "Après avoir marqué {C:attention}#2#{} {C:inactive}[#1#]{}", + "cartes améliorées, vendre cette carte", + "crée un {C:attention}Joker{} {C:cry_epic}Épique{}", + "{C:inactive,s:0.8}Crée un {C:attention,s:0.8}Joker{} {C:red,s:0.8}Rare{}", + "{C:inactive,s:0.8}si les Jokers {C:cry_epic,s:0.8}Épiques{} {C:inactive,s:0.8}sont désactivés{}", + }, + }, + j_cry_savvy = { + name = "Joker avisé", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient un {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Les {C:attention}Jokers{} augmentant augmentent", + "comme un polynome de degré {C:attention}#1#{}", + "élève le degré de {C:attention}#2#{}", + "à la fin de la manche", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} exclu)", + }, + }, + j_cry_scrabble = { + name = "Lettre de Scrabble", + text = { + "{C:green}#1# chance(s) sur #2#{} de créer", + "un Joker {C:dark_edition}Joyeux {C:green}Peu commun{}", + "lorsque la main est jouée", + }, + }, + j_cry_seal_the_deal = { + name = "Affaire scellée", + text = { + "Ajoute un {C:attention}sceau aléatoire{} à chaque carte", + "marquée lors de la {C:attention}dernière main{} de la manche", + }, + }, + j_cry_shrewd = { + name = "Joker astucieux", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Joker farfelu", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Riquiqui", + text = { + "{X:chips,C:white} X#1# {} Jetons jusqu'à la", + "fin de la manche si la {C:attention}main de poker{} jouée", + "est un(e) {C:attention}#2#{}", + "{C:inactive}(Actuellement {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker max", + "{C:attention}+#1#{} Paquet Booster max", + "{C:attention}+#1#{} taille de main", + "{C:attention}+#1#{} emplacement de consommable", + "{C:attention}+#1#{} carte dans la boutique", + }, + }, + j_cry_spaceglobe = { + name = "Globe Céleste", + text = { + "Ce Joker gagne {X:chips,C:white}X#2#{} Jetons", + "si la {C:attention}main de poker{} jouée est un(e) {C:attention}#3#{},", + "La main change après chaque gain{}", + "{C:inactive}(Actuellement{} {X:chips,C:white}X#1#{} {C:inactive}Jetons){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Crée une copie {C:dark_edition}Négative{}", + "d'un {C:attention}Joker{} aléatoire", + "à la fin de la {C:attention}boutique", + "{C:inactive,s:0.8}Ne copie pas d'autres Speculo{}", + }, + }, + j_cry_spy = { + name = "Le Spy", + text = { + "{X:mult,C:white} X#2# {} Multi, {C:dark_edition}+1{} emplacement {C:attention}Joker{}", + "{C:inactive}Ce #1# est un Espion!", + }, + }, + j_cry_stardust = { + name = "Poussière d'étoile", + text = { + "Les cartes {C:dark_edition}Polychrome{}", + "donnent chacun {X:mult,C:white}X#1#{} Multi", + "{C:inactive,s:0.8}L'effet ne se déclenche pas", + "{C:inactive,s:0.8}sur Poussière d'étoile", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "Ce Joker détruit une", + "carte {C:planet}Planète{} aléatoire", + "et gagne {X:dark_edition,C:white} ^#1# {} Multi", + "à la fin de la {C:attention}boutique{}", + "{C:inactive}(Actuellement {X:dark_edition,C:white} ^#2# {C:inactive} Multi)", + }, + }, + j_cry_stronghold = { + name = "La Forteresse", + text = { + "{X:mult,C:white}x#1#{} Multi si", + "la main jouée", + "contient un {C:attention}#2#", + }, + }, + j_cry_subtle = { + name = "Joker subtil", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Jetons, {C:mult}+#1#{} Multi,", + "{X:chips,C:white}X#2#{} Jetons, {X:mult,C:white}X#2#{} Multi", + "Gagne {C:money}$#3#{} à", + "la fin de la manche", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "À la fin de la manche, crée", + "une {C:attention}copie{} d'une carte", + "aléatoire {C:attention}tenue en main{},", + "détruit toutes les autres", + "{s:0.8}Les {C:attention,s:0.8}Rois{s:0.8} de {C:hearts,s:0.8}Cœur{s:0.8} sont prioritaires", + }, + }, + j_cry_swarm = { + name = "L'essaim", + text = { + "{X:mult,C:white}x#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Catalyse Synchro", + text = { + "Balance les {C:chips}Jetons{} et le {C:mult}Multi{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tax_fraud = { + name = "Évasion Fiscale", + text = { + "Octroie {C:attention}#1#${} par {C:attention}Joker en Location", + "à la fin de la manche", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} max", + "Gagne {C:money}$#2#{} à la fin de la manche", + }, + }, + j_cry_translucent = { + name = "Joker translucent", + text = { + "Vendre cette carte crée", + "une copie {C:attention}Périssable Banane{}", + "d'un {C:attention}Joker{} aléatoire", + "{s:0.8,C:inactive}(La copie ignore les compatibilités Périssable)", + }, + }, + j_cry_treacherous = { + name = "Joker traître", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_trick_or_treat = { + name = "Des bonbons ou un sort!", + text = { + "Lorsque cette carte est {C:attention}vendue{}:", + "{C:green}#1# chance(s) sur #2#{} de créer {C:attention}2{} {C:cry_candy}bonbons", + "Sinon, crée un Joker {X:cry_cursed,C:white}Maudit{}", + "{C:inactive}(Peut dépasser les maximums)", + }, + }, + j_cry_tricksy = { + name = "Joker espiègle", + text = { + "{C:chips}+#1#{} Jetons si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Rythme triolet", + text = { + "{X:mult,C:white} X#1# {} Multi si la main marquée", + "contient {C:attention}exactement{} trois cartes {C:attention}3", + }, + }, + j_cry_tropical_smoothie = { + name = "Smoothie tropical", + text = { + "Vendre cette carte", + "{C:attention}multiplie{} les valeurs", + "des jokers possédés de {C:attention}X1.5{}", + }, + }, + j_cry_unity = { + name = "L'Unité", + text = { + "{X:mult,C:white}x#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_universe = { + name = "L'Univers", + text = { + "Les cartes {C:dark_edition}Astrales{}", + "donnent toutes {X:dark_edition,C:white}^#1#{} Multi", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "Les {C:attention}mains de poker{} gagnent", + "{X:red,C:white} X#1# {} Multi et {X:blue,C:white} X#1# {} Jetons", + "à chaque amélioration", + }, + }, + j_cry_unjust_dagger = { + name = "Dague injuste", + text = { + "Lorsque la {C:attention}Blind{} est sélectionnée,", + "détruit le Joker le plus à droite", + "et gagne {C:attention}un cinquième{} de", + "sa valeur de vente en tant que {X:mult,C:white} XMulti {}", + "{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive} Multi)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "Lorsqu'une probabilitée", + "est déclenchée et {C:green}succainte{},", + "ce Joker gagne {X:red,C:white}XMulti{}", + "égal à ses {C:attention}probabilités{} listées", + "{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive} Multi)", + }, + }, + j_cry_virgo = { + name = "Vierge", + text = { + "Ce Joker gagne {C:money}$#1#{} à sa {C:attention}valeur de vente{}", + "si la {C:attention}main de poker{} contient une {C:attention}#2#{}", + "Vendre cette carte crée", + "un {C:attention}Joker Joyeux{} {C:dark_edition}Polychrome{}", + "tous les {C:money}$4{} de {C:attention}valeur de vente{} {C:inactive}(1 minimum){}", + }, + }, + j_cry_wacky = { + name = "Joker loufoque", + text = { + "{C:mult}+#1#{} Multi si", + "la main jouée", + "contient une {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "Tous les Jokers donnent", + "{X:mult,C:white} X#1# {} Multi", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "Tous les Jokers donnent", + "{C:money}$#1#{} à chaque déclenchement", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "Ce Joker gagne", + "{C:mult}+#2#{} Multi lorsque chaque", + "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, ou {C:attention}8{}", + "joué est compté", + "{C:inactive}(Actuellement {C:mult}+#1#{C:inactive} Multi)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Redéclenche chaque {C:attention}2{} joué", --wee gaming + "{C:attention:}#1#{} fois supplémentaire(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "la Roue de l'espérance", + text = { + "Ce Joker gagne", + "{X:mult,C:white} X#1# {} Multi à chaque échec", + "de la {C:attention}Roue de la Fortune{}", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "Ce Joker gagne {X:mult,C:white} X#1# {} Multi", + "si la {C:attention}main jouée{} contient", + "un {C:attention}2{} et un {C:attention}7{} de couleur différentes", + "{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)", + }, + }, + j_cry_wrapped = { + name = "Bonbon enveloppé", + text = { + "Crée un {C:attention}Joker Nourriture{}", + "dans {C:attention}#1#{} manche(s)", + "puis {C:red,E:2}s'auto-détruit{}", + }, + }, + j_cry_wtf = { + name = "Le Bordel", + text = { + "{X:mult,C:white}x#1#{} Multi si", + "la main jouée", + "contient un {C:attention}#2#", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Améliore", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "et {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Améliore", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "et {C:attention}#3#{}", + }, + }, + c_cry_Kaikki = { + name = "Kaikki", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Améliore", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "et {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Étoile à neutrons", + text = { + "Améliore une main de poker", + "aléatoire d'{C:attention}1{} niveau", + "pour chaque utilisation", + "d'{C:attention}Étoile à neutrons{}", + "durant cette partie", + "{C:inactive}(Actuellement{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planete.lua", + text = { + "{C:green}#1# chance(s) sur #2#{}", + "d'améliorer toutes", + "les {C:legendary,E:1}mains de poker{}", + "d'{C:attention}1{} niveau", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Améliore", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "et {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Améliore", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "et {C:attention}#3#{}", + }, + }, + c_cry_marsmoons = { + name = "Phobos & Déimos", + text = { + "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", + "{C:attention}#2#", + "{C:mult}+#3#{} Multi et", + "{C:chips}+#4#{} Jetons", + }, + }, + c_cry_void = { + name = "Vide", + text = { + "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", + "{C:attention}#2#", + "{C:mult}+#3#{} Multi et", + "{C:chips}+#4#{} Jetons", + }, + }, + c_cry_asteroidbelt = { + name = "Ceinture d'astéroïdes", + text = { + "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", + "{C:attention}#2#", + "{C:mult}+#3#{} Multi et", + "{C:chips}+#4#{} Jetons", + }, + }, + c_cry_universe = { + name = "l'entièreté du putain d'univers", + text = { + "{S:0.8}({S:0.8,V:1}niv.#1#{S:0.8}){} Améliore", + "{C:attention}#2#", + "{C:mult}+#3#{} Multi et", + "{C:chips}+#4#{} Jetons", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "Pochette CCD", + text = { + "Chaque carte est aussi", + "un consommable {C:attention}aléatoire{}", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Pochette Convoyeur", + text = { + "Les Jokers {C:attention}ne peuvent pas{} être déplacés", + "A chaque manche,", + "{C:attention}copie{} le Joker le plus à droite", + "and {C:attention}destroy{} le Joker le plus à gauche", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Pochette Critique", + text = { + "Après chaque main jouée,", + "{C:green}1 chance(s) sur 4{} d'obtenir {X:dark_edition,C:white} ^2 {} Multi", + "{C:green}1 chance(s) sur 8{} d'obtenir {X:dark_edition,C:white} ^0.5 {} Multi", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Pochette encodée", + text = { + "Démarre avec un {C:cry_code,T:j_cry_CodeJoker}Joker Code{}", + "et un {C:cry_code,T:j_cry_copypaste}Copier/Coller{}", + "Seules les {C:cry_code}Cartes Code{} apparaissent dans la boutique", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Pochette équilibrée", + text = { + "Toutes les cartes ont", + "la {C:attention}même chance{}", + "d'apparaître dans la boutique,", + "démarre la partie avec", + "{C:attention,T:v_overstock_plus}+2 cartes dans la boutique", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Pochette illimitée", + text = { + "Vous pouvez sélectionner", + "{C:attention}n'importe quel{} nombre de cartes", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Pochette défective", + text = { + "La valeur des cartes", + "sont {C:attention}aléatoires", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Pochette 2-pour-le-prix-d'un", + text = { + "Quand un {C:attention}coupon{} est acheté,", + "gagne ses {C:attention}améliorations", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Pochette Vortex", + text = { + "Démarre avec un Joker {C:cry_exotic}Exotique{C:attention}", + "Les Jokers sont {C:attention}20X{} ", + "plus susceptibles d'être {C:dark_edition}Négatifs", + "{C:attention}-2{} emplacements de Joker", + }, + }, + sleeve_cry_legendary_sleeve = { + name = "Pochette Légendaire", + text = { + "Démarre avec un Joker {C:legendary}Légendaire{C:legendary}", + "{C:green}1 chance sur 5{} d'en créer un autre", + "lorsque la Blinde de Boss est battue", + "{C:inactive}(selon la place disponible)", + }, + }, + }, + Spectral = { + c_cry_adversary = { + name = "Opposition", + text = { + "{C:red}Tous{} vos {C:attention}Jokers{} deviennent {C:dark_edition}Négatifs{},", + "{C:red}tous{} les {C:attention}Jokers{} dans la boutique coûteront", + "{C:red}2X{} plus cher pour le reste de la partie", + }, + }, + c_cry_analog = { + name = "Analogue", + text = { + "Crée {C:attention}#1#{} copies d'un", + "{C:attention}Joker{} aléatoire, détruit", + "tous les autres Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_chambered = { + name = "Chambré", + text = { + "Crée {C:attention}#1#{} copies {C:dark_edition}Négatives{}", + "d'un consommable {C:attention}aléatoire", + "{C:inactive,s:0.8}Ne copie pas Chambré{}", + }, + }, + c_cry_conduit = { + name = "Conduit", + text = { + "Échange les {C:attention}éditions{} de", + "{C:attention}2{} cartes ou {C:attention}Jokers{} sélectionnées", + }, + }, + c_cry_gateway = { + name = "Portail", + text = { + "Crée un {C:attention}Joker{} {C:cry_exotic,E:1}Exotique", + "aléatoire, détruit", + "tous les autres Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Verrou", + text = { + "Enlève {C:red}tous{} les stickers", + "de {C:red}tous{} les Jokers,", + "puis applique {C:purple,E:1}Éternel{}", + "à un {C:attention}Joker{} aléatoire", + }, + }, + c_cry_pointer = { + name = "POINTEUR://", + text = { + "Crée une carte", + "de {C:cry_code}votre choix", + "{C:inactive,s:0.8}(Jokers exotiques #1#exclus)", + }, + }, + c_cry_replica = { + name = "Réplique", + text = { + "Convertit toutes les", + "cartes en main", + "en une carte {C:attention}aléatoire{}", + "tenue en main", + }, + }, + c_cry_ritual = { + name = "Rituel", + text = { + "Applique {C:dark_edition}Négatif{}, {C:dark_edition}Mosaïque", + "ou {C:dark_edition}Astral{} à {C:attention}#1#{}", + "carte sélectionnée", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Ajoute un {C:cry_code}Sceau vert{}", + "à {C:attention}#1#{} carte", + "sélectionnée", + }, + }, + c_cry_summoning = { + name = "Invocation", + text = { + "Crée un {C:joker}Joker{} {C:cry_epic}Épique{}", + "aléatoire, détruit un", + "autre {C:joker}Joker{} aléatoire", + }, + }, + c_cry_trade = { + name = "Échange", + text = { + "{C:attention}Perdez{} un Coupon aléatoire,", + "gagnez {C:attention}2{} Coupons aléatoires", + }, + }, + c_cry_typhoon = { + name = "Typhon", + text = { + "Ajoute un {C:cry_azure}Sceau Azur{}", + "à {C:attention}#1#{} carte", + "sélectionnée", + }, + }, + c_cry_vacuum = { + name = "Aspiration", + text = { + "Enlève {C:red}toutes{} les {C:green}modifications{}", + "de {C:red}toutes{} les cartes en main", + "Gagne {C:money}$#1#{} par {C:green}modification{} enlevée", + "{C:inactive,s:0.7}(par ex. Améliorations, Sceaux, Éditions)", + }, + }, + c_cry_white_hole = { + name = "Trou blanc", + text = { + "{C:attention}Enlève{} toues les niveaux de toutes les mains,", + "améliore la main de poker {C:legendary,E:1}la plus jouée{}", + "de {C:attention}3{} pour chaque niveau enlevé", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Mise rose", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Le score requis augmente (beaucoup)", + "plus rapidement pour chaque {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Mise marron", + colour = "Brown", + text = { + "Tous les {C:attention}stickers{} sont", + "compatibles entre eux", + }, + }, + stake_cry_yellow = { + name = "Mise jaune", + colour = "Yellow", + text = { + "Les {C:attention}stickers{} peuvent apparaître", + "sur tous les objets achetables", + }, + }, + stake_cry_jade = { + name = "Mise jade", + colour = "Jade", + text = { + "Les cartes peuvent être tirées {C:attention}face cachée{}", + }, + }, + stake_cry_cyan = { + name = "Mise cyan", + colour = "Cyan", + text = { + "Les Jokers {C:green}Peu-communs{} et {C:red}Rares{} ont", + "moins de chances d'apparaître", + }, + }, + stake_cry_gray = { + name = "Mise grise", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Mise pourpre", + colour = "Crimson", + text = { + "Les coupons sont réapprovisionnés aux Antes {C:attention}pairs{}", + }, + }, + stake_cry_diamond = { + name = "Mise diamant", + colour = "Diamond", + text = { + "Gagner nécessite de battre l'Ante {C:attention}10{}", + }, + }, + stake_cry_amber = { + name = "Mise ambre", + colour = "Amber", + text = { + "{C:attention}-1{} emplacement de Paquet Booster", + }, + }, + stake_cry_bronze = { + name = "Mise bronze", + colour = "Bronze", + text = { + "Les coupons coûtent {C:attention}50%{} plus cher", + }, + }, + stake_cry_quartz = { + name = "Mise quartz", + colour = "Quartz", + text = { + "Les jokers peuvent être {C:attention}Épinglés{}", + "{s:0.8,C:inactive}(Restent épinglés à la position la plus à gauche){}", + }, + }, + stake_cry_ruby = { + name = "Mise rubis", + colour = "Ruby", + text = { + "Les {C:attention}Grosses{} Blindes peuvent être", + "des Blindes de {C:attention}Boss{}", + }, + }, + stake_cry_glass = { + name = "Mise verre", + colour = "Glass", + text = { + "Les cartes peuvent se {C:attention}briser{}", + "lorsqu'elles sont marquées", + }, + }, + stake_cry_sapphire = { + name = "Mise saphir", + colour = "Sapphire", + text = { + "À la fin de l'ante,", + "perdez {C:attention}25%{} de votre argent", + "{s:0.8,C:inactive}(Jusqu'à $10){}", + }, + }, + stake_cry_emerald = { + name = "Mise émeraude", + colour = "Emerald", + text = { + "Les cartes, paquets et coupons", + "peuvent être {C:attention}face cachée{}", + "{s:0.8,C:inactive}(Impossible de les voir avant de les acheter){}", + }, + }, + stake_cry_platinum = { + name = "Mise platine", + colour = "Platinum", + text = { + "Les Petites Blindes sont {C:attention}enlevées{}", + }, + }, + stake_cry_twilight = { + name = "Mise aube", + colour = "Twilight", + text = { + "Les cartes peuvent être {C:attention}Banane{}", + "{s:0.8,C:inactive}(1 chance(s) sur 10 d'être détruite à la fin de la manche){}", + }, + }, + stake_cry_verdant = { + name = "Mise verdoyante", + colour = "Verdant", + text = { + "Le score requis augmente (toujours)", + "plus rapidement pour chaque {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Mise embre", + colour = "Ember", + text = { + "Tous les objets ne donnent pas d'argent", + "lorsqu'ils sont vendus", + }, + }, + stake_cry_dawn = { + name = "Mise aurore", + colour = "Dawn", + text = { + "Les cartes Tarots et Spectrales ciblent", + "{C:attention}1{} carte de moins", + "{s:0.8,C:inactive}(Minimum 1){}", + }, + }, + stake_cry_horizon = { + name = "Mise horizon", + colour = "Horizon", + text = { + "Lorsque la blinde est sélectionnée,", + "une {C:attention}carte aléatoire{} est", + "ajoutée au deck", + }, + }, + stake_cry_blossom = { + name = "Mise éclat", + colour = "Blossom", + text = { + "Les Blindes {C:attention}Finales{} peuvent apparaître", + "dans {C:attention}n'importe quel{} Ante", + }, + }, + stake_cry_azure = { + name = "Mise azur", + colour = "Azure", + text = { + "Les valeurs sur les Jokers", + "sont réduits de {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Mise ascendante", + colour = "Ascendant", + text = { + "{C:attention}-1{} emplacement", + "dans la boutique", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Badge Astral", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Astral", + }, + }, + tag_cry_banana = { + name = "Badge Banane", + text = { + "Crée un {C:attention}#1#", + "{C:inactive}(Selon la place disponible){}", + }, + }, + tag_cry_bettertop_up = { + name = "Badge de remplissage (en mieux)", + text = { + "Crée jusqu'à {C:attention}#1#", + "Jokers {C:green}Peu-Communs{}", + "{C:inactive}(Selon la place disponible){}", + }, + }, + tag_cry_better_voucher = { + name = "Badge Ticket d'Or", -- base cryptid isn't crazy enough with their badge names smh + text = { + "Ajoute un coupon de catégorie {C:attention}#1#{}", + "dans la prochaine boutique", + }, + }, + tag_cry_blur = { + name = "Badge Flou", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Flou", + }, + }, + tag_cry_booster = { + name = "Badge Booster", + text = { + "Le prochain {C:cry_code}Paquet Booster{} a", + "{C:attention}2X plus{} de cartes et", + "{C:attention}2X plus{} de choix", + }, + }, + tag_cry_bundle = { + name = "Lot de Badges", + text = { + "Crée un {C:attention}Badge Standard{}, {C:tarot}Badge Breloque{},", + "{C:attention}Badge Bouffon{}, and {C:planet}Badge Météore", + }, + }, + tag_cry_cat = { + name = "Badge Chat", + text = { + "Miaou !", + "{C:inactive}Niveau {C:dark_edition}#1#", + }, + }, + tag_cry_console = { + name = "Badge Commande", + text = { + "Octroie un", + "{C:cry_code}Paquet Code", + }, + }, + tag_cry_double_m = { + name = "Badge Double M", + text = { + "La boutique a un", + "{C:red}Joker M {C:dark_edition}Joyeux{}", + }, + }, + tag_cry_empowered = { + name = "Badge Renforcé", + text = { + "Octroie un {C:spectral}Paquet Spectral", + "avec {C:legendary,E:1}l'Âme{} et {C:cry_exotic,E:1}Portail{}", + }, + }, + tag_cry_epic = { + name = "Badge Épique", + text = { + "La boutique a un", + "{C:cry_epic}Joker Épique{} à moitié prix", + }, + }, + tag_cry_gambler = { + name = "Badge du Parieur", + text = { + "{C:green}#1# chance(s) sur #2#{} de créer", + "un {C:cry_exotic,E:1}Badge Renforcé", + }, + }, + tag_cry_glass = { + name = "Badge Fragile", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Fragile", + }, + }, + tag_cry_glitched = { + name = "Badge Buggé", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Glitché", + }, + }, + tag_cry_gold = { + name = "Badge Doré", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Doré", + }, + }, + tag_cry_gourmand = { + name = "Badge à Emporter", -- the icon is a bag so + text = { + "La boutique a un", + "{C:cry_epic}Joker Nourriture{} gratuit", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Octroie un", + "{C:cry_ascendant}Paquet Mème", + }, + }, + tag_cry_m = { + name = "Badge Sourire", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Joyeux", + }, + }, + tag_cry_memory = { + name = "Badge Mémoire", + text = { + "Crée {C:attention}#1#{} copies du", + "dernier {C:attention}Badge{} utilisé", + "durant cette partie", + "{s:0.8,C:inactive}Les Badges de Copie sont exclus", + "{s:0.8,C:inactive}Actuellement : {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Badge Mosaïque", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Mosaïque", + }, + }, + tag_cry_oversat = { + name = "Badge Sur-saturé", + text = { + "Le prochain Joker sans Édition dans", + "la boutique devient gratuit et {C:dark_edition}Sur-saturé", + }, + }, + tag_cry_quadruple = { + name = "Badge Quadruple", + text = { + "Octroiera {C:attention}#1#{} copies du", + "prochain {C:attention}Badge{} sélectionné", + "{s:0.8,C:inactive}Badges de Copie exclus", + }, + }, + tag_cry_quintuple = { + name = "Badge Quintuple", + text = { + "Octroiera {C:attention}#1#{} copies du", + "prochain {C:attention}Badge{} sélectionné", + "{s:0.8,C:inactive}Badges de Copie exclus", + }, + }, + tag_cry_rework = { + name = "Badge Remaniement", + text = { + "La boutique a un", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Badge Schéma", + text = { + "La boutique a un", + "{C:attention}Remue-méninges", + }, + }, + tag_cry_scope = { + name = "Badge Mesuré", + text = { + "{C:attention}+#1# {C:blue}mains{} et", + "{C:red}défausses{} à la prochaine manche", + }, + }, + tag_cry_triple = { + name = "Badge Triple", + text = { + "Octroiera {C:attention}#1#{} copies du", + "prochain {C:attention}Badge{} sélectionné", + "{s:0.8,C:inactive}Badges de Copie exclus", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "l'Automate", + text = { + "Crée jusqu'à {C:attention}#1#", + "cartes {C:cry_code}Code{} aléatoires", + "{C:inactive}(Selon la place disponible)", + }, + }, + c_cry_eclipse = { + name = "l'Éclipse", + text = { + "Transforme jusqu'à {C:attention}#1#", + "cartes sélectionnées en", + "{C:attention}Carte(s) écho", + }, + }, + c_cry_meld = { + name = "le Mélange", + text = { + "Transforme un {C:attention}Joker{} ou", + "une {C:attention}carte à jouer{} en", + "carte {C:dark_edition}Double-face", + }, + }, + c_cry_theblessing = { + name = "la Bénédiction", + text = { + "Crée {C:attention}1{}", + "{C:attention}consommable{} aléatoire", + "{C:inactive}(Selon la place disponible){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Astéroglyphe", + text = { + "Règle l'Ante sur {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Tableau Blanc", + text = { + "{C:attention}+#1#{} à la taille de la main", + }, + }, + v_cry_clone_machine = { + name = "Machine de Clones", + text = { + "Les Badges double deviennent", + "des {C:attention}Badges Quintuple{} et", + "sont {C:attention}4X{} plus communs", + }, + }, + v_cry_command_prompt = { + name = "Invite de Commandes", + text = { + "Les cartes {C:cry_code}Code{}", + "peuvent apparaître", + "dans la {C:attention}boutique{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Les Badges double deviennent", + "des {C:attention}Badges Triple{} et", + "sont {C:attention}2X{} plus communs", + }, + }, + v_cry_curate = { + name = "Curation", + text = { + "Toutes les cartes", + "apparaissent avec", + "une {C:dark_edition}Édition{}", + }, + }, + v_cry_dexterity = { + name = "Dextérité", + text = { + "{C:blue}+#1#{} main(s) par manche", + "{C:inactive}(oui, encore)", + }, + }, + v_cry_double_down = { + name = "Double ou double", + text = { + "Après chaque manche,", + "{X:dark_edition,C:white} X1.5 {} à toutes les valeurs", + "à l'arrière des", + "cartes {C:dark_edition}Double-Face{}", + }, + }, + v_cry_double_slit = { + name = "Double fente", + text = { + "{C:attention}le Mélange{} peut apparaître", + "dans la boutique et dans", + "les Paquets Arcana", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "Les cartes {C:dark_edition}Double-Face{} apparaîssent", + "{C:attention}4X{} plus souvent", + }, + }, + v_cry_fabric = { + name = "Toile Universelle", + text = { + "{C:dark_edition}+#1#{} emplacement(s) de Joker", + }, + }, + v_cry_massproduct = { + name = "Production de Masse", + text = { + "Toutes les cartes et tous les paquets", + "dans la boutique coutent {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Haricot d'Argent", + text = { + "Augmente le plafond", + "des intérêts perçus", + "par manche à {C:money}#1#${}", + }, + }, + v_cry_overstock_multi = { + name = "Multi-stock", + text = { + "{C:attention}+#1#{} emplacement(s) de carte(s) et", + "{C:attention}+#1#{} emplacement(s) de paquet(s)", + "disponibles dans la boutique", + }, + }, + v_cry_pacclimator = { + name = "Acclimateur de Planète", + text = { + "Les cartes {C:planet}Planète{} apparaissent", + "{C:attention}X#1#{} plus souvent", + "dans la boutique", + "Toutes les futures cartes", + "{C:planet}Planète{} sont {C:green}gratuites{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pair'amount Plus", + text = { + "{C:attention}Redéclenche{} tous les Jokers M", + "une fois pour chaque Paire", + "{C:attention}contenue{} dans la main jouée", + }, + }, + v_cry_pairing = { + name = "Lapaire", + text = { + "{C:attention}Redéclenche{} tous les Jokers M", + "si la main jouée est une {C:attention}Paire", + "{C:inactive,s:0.8}Y'en a pas deux!", + }, + }, + v_cry_quantum_computing = { + name = "Informatique Quantique", + text = { + "Les cartes {C:cry_code}Code{} peuvent apparaître", + "avec l'édition {C:dark_edition}Négative{}", + }, + }, + v_cry_repair_man = { + name = "Ré-paire-ation", + text = { + "{C:attention}Redéclenche{} tous les Jokers M", + "si la main jouée contient une {C:attention}Paire", + }, + }, + v_cry_rerollexchange = { + name = "Réassorts en Folie", + text = { + "{C:green}Réassortir{} la boutique", + "coûte {C:money}2${}", + }, + }, + v_cry_satellite_uplink = { + name = "Liaison Astrale", + text = { + "Les Cartes {C:cry_code}Code{} peuvent", + "apparaître dans n'importe lequel", + "des {C:attention}Paquets Célestes{}", + }, + }, + v_cry_scope = { + name = "Portée Galactique", + text = { + "Crée la carte {C:planet}Planète", + "de la {C:attention}main de poker", + "jouée", + "{C:inactive}(Selon la place disponible){}", + }, + }, + v_cry_tacclimator = { + name = "Acclimateur de Tarot", + text = { + "Les cartes {C:tarot}Tarot{} apparaissent", + "{C:attention}X#1#{} plus souvent", + "dans la boutique", + "Toutes les futures cartes", + "{C:tarot}Tarot{} seront {C:green}gratuites{}", + }, + }, + v_cry_tag_printer = { + name = "Imprimante à Badge", + text = { + "Les Badges Double deviennent des", + "{C:attention}Badges Quadruple{} et", + "sont {C:attention}3X{} plus communs", + }, + }, + v_cry_threers = { + name = "Les 3 R", + text = { + "{C:red}#1#{} défausses", + "par manche", + }, + }, + v_cry_stickyhand = { + name = "Main Collante", + text = { + "{C:attention}+#1#{} limite", + "de sélection de cartes", + }, + }, + v_cry_grapplinghook = { + name = "Grappin", + text = { + "{C:attention}+#1#{} limite", + "de sélection de cartes", + "{C:inactive,s:0.7}Il est possible de faire beacuoup plus que ce que vous pensez.{}", + }, + }, + v_cry_hyperspacetether = { + name = "Accroche Intersidérale", + text = { + "{C:attention}+#1#{} limite", + "de sélection de cartes", + "{C:inactive,s:0.7}NOTE: Aura plus de{}", + "{C:inactive,s:0.7}fonctionnalités plus tard{}", + }, + }, + }, + Other = { + banana = { + name = "Banane", + text = { + "{C:green}#1# chance(s) sur #2#{} d'être", + "détruit après chaque manche", + }, + }, + cry_rigged = { + name = "Truqué", + text = { + "Toutes les probabilités {C:cry_code}listées{}", + "sont {C:cry_code}garanties", + }, + }, + cry_hooked = { + name = "Accroché", + text = { + "Quand ce joker est {C:cry_code}déclenché{},", + "déclenche {C:cry_code}#1#", + }, + }, + cry_flickering = { + name = "Luisant", + text = { + "Détruit après", + "{C:attention}#1#{} déclenchements", + "{C:inactive}({C:attention}#2#{C:inactive} restants)", + }, + }, + cry_flickering_desc = { --used by choco dice + name = "Luisant", + text = { + "Détruit après", + "{C:attention}#1#{} déclenchements", + }, + }, + cry_possessed = { + name = "Possédé", + text = { + "{C:attention}Désactive{} et {C:attention}inverse{}", + "les effets, si possible", + "Détruit en même temps que {C:attention}Fantôme", + }, + }, + food_jokers = { + name = "Jokers Nourriture", + text = { + "{s:0.8}Gros Michel, Œuf, Crème Glacée, Cavendish,", + "{s:0.8}Haricot Noir, Cola zéro, Popcorn, Ramen,", + "{s:0.8}Eau de Seltz, Cornichon, Piment, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}La mise à jour{s:0.7} est désactivée par défaut ({C:attention,s:0.7}Module HTTPS{s:0.7})", + }, + }, + ev_cry_choco0 = { + name = "", + text = { + "Les détails d'un {C:cry_ascendant,E:1}événement", + "seront affichés ici", + }, + }, + ev_cry_choco1 = { + name = "1: Possession", + text = { + "Les {C:attention}Jokers{} et cartes à jouer ont", + "{C:green}1 chance sur 3{} de gagner Luisant", + "Crée un {C:attention}Fantôme", + "{C:inactive,s:0.7}Vous avez été possédé par un fantôme, et", + "{C:inactive,s:0.7}votre conscience vacille.", + }, + }, + ev_cry_choco2 = { + name = "2: Maison Hantée", + text = { + "Impossible de passer une Blinde {C:attention}Blinde{}", + "Un {C:attention}réassort{} autorisé par boutique", + "Les prix des {C:attention}coupons{} ont doublé", + "{C:inactive,s:0.7}Les esprits d'Halloween ont pris d'assaut cette partie!", + "{C:inactive,s:0.7}Ne touchez à rien et échappez-vous au plus vite!", + }, + }, + ev_cry_choco3 = { + name = "3: Les préparations de la sorcière", + text = { + "Crée 3 {C:attention}Potions", + "Utilises-en une avant la fin de la {C:attention}Petite Blinde{},", + "ou {C:attention}tous{} les malus seront appliqués durant cet {C:attention}Ante", + "{C:inactive,s:0.7}Vous avez été kidnappé par une sorcière!", + "{C:inactive,s:0.7}Elle vous scrute, et vous offre trois potions.", + "{C:inactive,s:0.7}Choisis-en une, ou elle va choisir pour toi.", + }, + }, + ev_cry_choco4 = { + name = "4: Abysse Lunaire", + text = { + "Les cartes à jouer ont {C:green}1 chance sur 4{}", + "de devenir une carte figure {C:club}Trèfle{}", + "Divise le {C:attention}Multi{} par le nombre de cartes face joués", + "{C:inactive,s:0.7}Même un homme au cœur pur", + "{C:inactive,s:0.7}qui fait ses prières le soir...", + }, + }, + ev_cry_choco5 = { + name = "5: Sangsue", + text = { + "Enlève les {C:attention}Améliorations{} de toutes les cartes jouées", + "{C:green}1 chance sur 3{} de détruire", + "les cartes {C:heart}Cœur{} et {C:diamond}Carreau{}", + "{C:inactive,s:0.7}Méfiez vous à la tombée de la nuit, car", + "{C:inactive,s:0.7,E:1}ceux dans les ombres {C:inactive,s:0.7} cherchent à assouvir leur soif...", + }, + }, + ev_cry_choco6 = { + name = "6: Prenez-en qu'un", + text = { + "À la {C:attention}fin de la manche{}, ouvre un", + "Paquet {C:attention}Booster{} aléatoire", + "{C:inactive,s:0.7}Tandis que vous déambulez dans les rues, vous apercevez une", + "{C:inactive,s:0.7}boîte remplie de Paquets Booster. Autant se servir !", + }, + }, + ev_cry_choco7 = { + name = "7: L'heure de la fête", + text = { + "Crée 3 {C:attention}Des bonbons ou un sort!{} et 1 {C:attention}Panier de bonbons", + "Les boutiques ont un {C:attention}Des bonbons ou un sort!{} à chaque manche", + "Les {C:cry_candy}bonbons{} donnent {C:money}$3{} lorsqu'ils sont obtenus", + "{C:inactive,s:0.7}Tout le quartier est décoré pour les festivités fantasmagoriques,", + "{C:inactive,s:0.7}venez rejoindre l'ambience!", + }, + }, + ev_cry_choco8 = { + name = "8: Pluie de bonbons", + text = { + "Lorsque la {C:attention}Blinde{} est battue, obtenez 1 {C:cry_candy}bonbon{}", + "par main restante; Obtenez un {C:attention}Joker Nourriture{}", + "lorsqu'un {C:cry_candy}bonbon{} est généré", + "{C:inactive,s:0.7}Il pleut des bonbons ! Dépechez vous et", + "{C:inactive,s:0.7,E:1}attrappez-en autant que vous pouvez !", + }, + }, + ev_cry_choco9 = { + name = "9: Richesse spirituelle", + text = { + "Donne {C:money}$20", + "Tout {C:money}l'argent{} gagné est {C:attention}doublé", + "{C:inactive,s:0.7}Le spectre d'un proche disparu depuis longtemps", + "{C:inactive,s:0.7}vous visite au milieu de la nuit!", + "{C:inactive,s:0.7}Sans un mot, il place un sac d'argent dans vos mains,", + "{C:inactive,s:0.7}arbore un grand sourire, et vous salue avant de disparaitre dans l'air.", + }, + }, + ev_cry_choco10 = { + name = "10: Antiquité vénérée", + text = { + "Un {C:attention}Joker{} {C:legendary}Légendaire{} apparaît", + "dans l'emplacement {C:attention}Coupon{} pour {C:money}$50", + "Ne peut être acheté qu'en tant que le {C:attention}dernier{} objet de la boutique", + "{C:inactive,s:0.7}Vous avez attiré l'attention de l'esprit d'une relique,", + "{C:inactive,s:0.7}mais cet esprit ne va pas se laisser apaiser si facilement.", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Éternel", + text = { + "Toutes les cartes du paquet", + "sont {C:attention}Éternelles{}", + }, + }, + cry_perishable_booster = { + name = "Périssable", + text = { + "Toutes les cartes du paquet", + "sont {C:attention}Périssables{}", + }, + }, + cry_rental_booster = { + name = "Location", + text = { + "Toutes les cartes du paquet", + "sont {C:attention}en Location{}", + }, + }, + cry_pinned_booster = { + name = "Épinglé", + text = { + "Toutes les cartes du paquet", + "sont {C:attention}Épinglées{}", + }, + }, + cry_banana_booster = { + name = "Banane", + text = { + "Toutes les cartes du paquet", + "sont {C:attention}Bananes{}", + }, + }, + cry_eternal_voucher = { + name = "Éternel", + text = { + "Ne peut pas être échangé", + }, + }, + cry_perishable_voucher = { + name = "Périssable", + text = { + "Affaibli après", + "{C:attention}#1#{} manches", + "{C:inactive}({C:attention}#2#{C:inactive} restantes)", + }, + }, + cry_rental_voucher = { + name = "Location", + text = { + "Coûte {C:money}#1#${} à", + "la fin de la manche", + }, + }, + cry_pinned_voucher = { + name = "Épinglé", + text = { + "Reste dans la boutique", + "jusqu'à ce qu'il soit échangé", + }, + }, + cry_banana_voucher = { + name = "Banane", + text = { + "{C:green}#1# chance(s) sur #2#{} d'être", + "enlevé à la fin de la manche", + }, + }, + cry_perishable_consumeable = { + name = "Périssable", + text = { + "Affaibli à la", + "fin de la manche", + }, + }, + cry_rental_consumeable = { + name = "Location", + text = { + "Coûte {C:money}#1#${} à", + "la fin de la manche, et", + "à l'utilisation", + }, + }, + cry_pinned_consumeable = { + name = "Épinglé", + text = { + "Vous ne pouvez pas utiliser", + "de consommables non-{C:attention}Épinglés{}", + }, + }, + cry_banana_consumeable = { + name = "Banane", + text = { + "{C:green}#1# chance(s) sur #2#{} de", + "ne rien faire à l'utilisation", + }, + }, + p_cry_code_normal_1 = { + name = "Paquet Programme", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:cry_code}Code{} parmi {C:attention}#2#", + }, + }, + p_cry_code_normal_2 = { + name = "Paquet Programme", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:cry_code}Code{} parmi {C:attention}#2#", + }, + }, + p_cry_code_jumbo_1 = { + name = "Super Paquet Programme", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:cry_code}Code{} parmi {C:attention}#2#", + }, + }, + p_cry_code_mega_1 = { + name = "Méga Paquet Programme", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:cry_code}Code{} parmi {C:attention}#2#", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Paquet Mème", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:attention}Joker Mème{} parmi {C:attention}#2#{}", + }, + }, + p_cry_meme_two = { + name = "Paquet Mème", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:attention}Joker Mème{} parmi {C:attention}#2#{}", + }, + }, + p_cry_meme_three = { + name = "Paquet Mème", + text = { + "Jusqu'à {C:attention}#1#{} cartes", + "{C:attention}Joker Mème{} parmi {C:attention}#2#{}", + }, + }, + undiscovered_code = { + name = "Non découvert", + text = { + "Acheter ou utiliser", + "cette carte dans une", + "partie sans seed pour", + "révéler son effet", + }, + }, + undiscovered_unique = { + name = "Non découvert", + text = { + "Acheter ou utiliser", + "cet objet dans une", + "partie sans seed pour", + "révéler son effet", + }, + }, + cry_green_seal = { + name = "Sceau vert", + text = { + "Crée une carte {C:cry_code}Code{}", + "lorsque la carte est jouée", + "et non comptée", + "{C:inactive}(Selon la place disponible)", + }, + }, + cry_azure_seal = { + name = "Sceau azur", + text = { + "Crée {C:attention}#1#{} {C:planet}Planètes", + "{C:dark_edition}négatives{} pour la", + "{C:attention}main de poker jouée{},", + "puis {C:red}détruit{} cette carte", + }, + }, + blurred_sdm0 = { + name = "a", + text = { + '{C:inactive,s:0.7}"Je déteste cette carte" - SDM_0, 2024{}{}', + }, + }, + }, + Unique = { + c_cry_potion = { + name = "Potion", + text = { + "Applique un {C:attention}malus{}", + "inconnu lorsqu'elle est utilisée", + "{C:inactive,s:0.7}Obtenu du Dé en chocolat", + }, + }, + }, + }, + misc = { + poker_hands = { + ["cry_Bulwark"] = "Rempart", + ["cry_Clusterfuck"] = "Foutoir", + ["cry_UltPair"] = "Super Paire", + ["cry_WholeDeck"] = "un putain de jeu complet", + }, + poker_hand_descriptions = { + ["cry_Bulwark"] = { + "5 cartes sans rang ni couleur", + }, + ["cry_Clusterfuck"] = { + "Au moins 8 cartes sans", + "Paire, Couleur, ou Quinte", + }, + ["cry_UltPair"] = { + "Deux Doubles Paires, où chaque", + "Double Paire est une couleur unique,", + "pour un total de deux couleurs entre elles", + }, + ["cry_WholeDeck"] = { + "Une main qui contient toutes les cartes", + "d'un jeu standard de 52 cartes.", + "Je sais pas quoi dire, mais tu es fou.", + }, + }, + achievement_names = { + ach_cry_ace_in_crash = "ACE de poche", + ach_cry_blurred_blurred_joker = "Cécité totale", + ach_cry_bullet_hell = "Pluie de balles", + ach_cry_break_infinity = "Atteindre l'infini", + ach_cry_cryptid_the_cryptid = "Cryptid un Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Full tordu", + ach_cry_googol_play_pass = "Pass Googol Play", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Agent immobilier", + ach_cry_jokes_on_you = "On fait moins le malin, maintenant !", + ach_cry_niw_uoy = "! éngag zeva suoV", + ach_cry_now_the_fun_begins = "Le fun peut commencer", + ach_cry_patience_virtue = "La patience est une vertue.", + ach_cry_perfectly_balanced = "Équilibre parfait", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Embouteillages", + ach_cry_ult_full_skip = "Je passe", + ach_cry_used_crash = "Tu t'attendais à quoi ?", + ach_cry_what_have_you_done = "QU'EST-CE QUE TU AS FAIT ?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtenir un Joker Flou flou", + ach_cry_bullet_hell = "Avoir 15 Jokers AP", + ach_cry_break_infinity = "Marquer 1.79e308 Jetons en une seule main", + ach_cry_cryptid_the_cryptid = "Utiliser une carte Cryptide sur une carte Cryptide", + ach_cry_exodia = "Avoir 5 Jokers exotiques", + ach_cry_freak_house = "Jouer un Full flush composé de 6 et 9 tout en ayant Nice", + ach_cry_googol_play_pass = "Truquer une Carte Googol Play", + ach_cry_haxxor = "Utiliser un code de triche", + ach_cry_home_realtor = "Activer Jolie Maison avant l'Ante 8 (sans Équilibrium/Antimatière)", + ach_cry_jokes_on_you = "Déclencher l'effet de La Blague à l'Ante 1 puis gagner la partie", + ach_cry_niw_uoy = "Atteindre l'Ante -8", + ach_cry_now_the_fun_begins = "Obtenir un Canevas", + ach_cry_patience_virtue = "Attendre 2 minutes face à la Boucle Lavande avant de jouer la première main, puis battre la blinde", + ach_cry_perfectly_balanced = "Battre le Jeu Très Équilibré avec la Mise Ascendante", + ach_cry_pull_request = "Faire ://ENGAGER apparaître le même joker qu'il a détruit", + ach_cry_traffic_jam = "Battre tous les challenges Heure de Pointe", + ach_cry_ult_full_skip = "Gagner en 1 tour", + ach_cry_used_crash = "Utiliser ://CRASH", + ach_cry_what_have_you_done = "Supprimer ou sacrifier un Joker exotique", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Bataille de dagues", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "La carte unique", + c_cry_rng = "Aléas de l'aléatoire", -- okay i think i cooked with this one + c_cry_rush_hour = "Heure de pointe I", + c_cry_rush_hour_ii = "Heure de pointe II", + c_cry_rush_hour_iii = "Heure de pointe III", + c_cry_sticker_sheet = "Feuille d'autocollants", + c_cry_sticker_sheet_plus = "Feuille d'autocollants +", + }, + dictionary = { + --Settings Menu + cry_set_features = "Fonctionnalités", + cry_set_music = "Musique", + cry_set_enable_features = "Sélectionnez les fonctionnalités à activer (appliqué au prochain redémarrage):", + cry_feat_achievements = "Succès", + ["cry_feat_antimatter deck"] = "Jeu Anti-matière", + cry_feat_blinds = "Blindes", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Cartes Code", + ["cry_feat_misc. decks"] = "Jeux divers", + ["cry_feat_https module"] = "Module HTTPS", + ["cry_feat_timer mechanics"] = "Mécaniques Chrono", + ["cry_feat_enhanced decks"] = "Decks Améliorés", + ["cry_feat_epic jokers"] = "Jokers épiques", + ["cry_feat_exotic jokers"] = "Jokers exotiques", + ["cry_feat_m jokers"] = "Jokers M", + cry_feat_menu = "Menu principal personnalisé", + ["cry_feat_misc."] = "Divers", + ["cry_feat_misc. jokers"] = "Jokers divers", + cry_feat_planets = "Planètes", + cry_feat_jokerdisplay = "JokerDisplay (Fait rien)", + cry_feat_tags = "Badges", + cry_feat_sleeves = "Pochettes", + cry_feat_spectrals = "Cartes spectrales", + cry_feat_spooky = "Mise à jour Spooky", + ["cry_feat_more stakes"] = "Mises", + cry_feat_vouchers = "Coupons", + cry_mus_jimball = "Jimboule (Funkytown par Lipps Inc. - Sous droits d'auteur)", + cry_mus_code = "Cartes Code (://LETS_BREAK_THE_GAME par HexaCryonic)", + cry_mus_exotic = "Jokers exotiques (Joker in Latin par AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] par AlexZGreat)", - k_cry_program_pack = "Paquet Programme", - k_cry_meme_pack = "Paquet Meme", + k_cry_program_pack = "Paquet Programme", + k_cry_meme_pack = "Paquet Meme", - cry_critical_hit_ex = "Coup critique!", - cry_critical_miss_ex = "Échec critique!", + cry_critical_hit_ex = "Coup critique!", + cry_critical_miss_ex = "Échec critique!", - cry_potion1 = "-1 à tous les niveaux de main", - cry_potion2 = "X1.15 à la taille de la Blinde", - cry_potion3 = "-1 main et défausse", + cry_potion1 = "-1 à tous les niveaux de main", + cry_potion2 = "X1.15 à la taille de la Blinde", + cry_potion3 = "-1 main et défausse", - cry_debuff_oldhouse = "Pas de Full", - cry_debuff_oldarm = "4 cartes ou moins doivent être jouées", - cry_debuff_oldpillar = "Pas de Quinte", - cry_debuff_oldflint = "Pas de Couleur", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applique les capacités de tous les boss battus", + cry_debuff_oldhouse = "Pas de Full", + cry_debuff_oldarm = "4 cartes ou moins doivent être jouées", + cry_debuff_oldpillar = "Pas de Quinte", + cry_debuff_oldflint = "Pas de Couleur", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applique les capacités de tous les boss battus", - k_code = "Code", - k_unique = "Unique", - b_code_cards = "Cartes Code", - b_unique_cards = "Cartes uniques", - b_pull = "TIRER", - cry_hooked_ex = "Accroché!", - k_end_blind = "End Blind", + k_code = "Code", + k_unique = "Unique", + b_code_cards = "Cartes Code", + b_unique_cards = "Cartes uniques", + b_pull = "TIRER", + cry_hooked_ex = "Accroché!", + k_end_blind = "End Blind", - cry_code_rank = "ENTRER UN RANG", - cry_code_enh = "ENTRER UNE AMELIORATION", - cry_code_hand = "ENTRER MAIN DE POKER", - cry_code_enter_card = "ENTRER UNE CARTE", - cry_code_apply = "APPLIQUER", - cry_code_apply_previous = "APPLIQUER PRECEDENT", - cry_code_exploit = "EXPLOITER", - cry_code_exploit_previous = "EXPLOITER PRECEDENT", - cry_code_create = "CREER", - cry_code_create_previous = "CREER PRECEDENT", - cry_code_execute = "EXECUTER", - cry_code_cancel = "ANNULER", + cry_code_rank = "ENTRER UN RANG", + cry_code_enh = "ENTRER UNE AMELIORATION", + cry_code_hand = "ENTRER MAIN DE POKER", + cry_code_enter_card = "ENTRER UNE CARTE", + cry_code_apply = "APPLIQUER", + cry_code_apply_previous = "APPLIQUER PRECEDENT", + cry_code_exploit = "EXPLOITER", + cry_code_exploit_previous = "EXPLOITER PRECEDENT", + cry_code_create = "CREER", + cry_code_create_previous = "CREER PRECEDENT", + cry_code_execute = "EXECUTER", + cry_code_cancel = "ANNULER", - b_flip = "RETOURNER", - b_merge = "FUSIONNER", + b_flip = "RETOURNER", + b_merge = "FUSIONNER", - cry_hand_bulwark = "Muraille", - cry_hand_clusterfuck = "Foutoir", - cry_hand_ultpair = "Super Paire", + cry_hand_bulwark = "Muraille", + cry_hand_clusterfuck = "Foutoir", + cry_hand_ultpair = "Super Paire", - cry_again_q = "Encore?", - cry_curse = "Malédiction", - cry_curse_ex = "Malédiction!", - cry_sobbing = "À l'aide...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Imposteur!", - cry_jolly_ex = "Plus joyeux!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Tour", - cry_plus_cryptid = "+1 Cryptide", - cry_no_triggers = "Pas de redéclenchements restants!", - cry_unredeemed = "Plus échangé...", - cry_active = "Actif", - cry_inactive = "Inactif", + cry_again_q = "Encore?", + cry_curse = "Malédiction", + cry_curse_ex = "Malédiction!", + cry_sobbing = "À l'aide...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Imposteur!", + cry_jolly_ex = "Plus joyeux!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Tour", + cry_plus_cryptid = "+1 Cryptide", + cry_no_triggers = "Pas de redéclenchements restants!", + cry_unredeemed = "Plus échangé...", + cry_active = "Actif", + cry_inactive = "Inactif", - k_disable_music = "Désactiver la musique", + k_disable_music = "Désactiver la musique", - k_cry_epic = "Épique", - k_cry_exotic = "Exotique", - k_cry_candy = "Bonbon", - k_cry_cursed = "Maudit", - k_planet_disc = "Disque Circumstellaire", - k_planet_satellite = "Satellites Naturels", - k_planet_universe = "Le putain d'univers", + k_cry_epic = "Épique", + k_cry_exotic = "Exotique", + k_cry_candy = "Bonbon", + k_cry_cursed = "Maudit", + k_planet_disc = "Disque Circumstellaire", + k_planet_satellite = "Satellites Naturels", + k_planet_universe = "Le putain d'univers", - cry_notif_jimball_1 = "Jimboule", - cry_notif_jimball_2 = "Notice de droits d'auteur", - cry_notif_jimball_d1 = "Jimboule joue la musique \"Funkytown\",", - cry_notif_jimball_d2 = "qui est soumise aux droits d'auteur et ne peut", - cry_notif_jimball_d3 = "pas être utilisée dans des streams ou vidéos.", - }, - labels = { - food_jokers = "Jokers nourriture", - banana = "Banane", - code = "Code", - unique = "Unique", - cry_rigged = "Truqué", - cry_hooked = "Accroché", - cry_flickering = "Luisant", - cry_possessed = "Possédé", + cry_notif_jimball_1 = "Jimboule", + cry_notif_jimball_2 = "Notice de droits d'auteur", + cry_notif_jimball_d1 = 'Jimboule joue la musique "Funkytown",', + cry_notif_jimball_d2 = "qui est soumise aux droits d'auteur et ne peut", + cry_notif_jimball_d3 = "pas être utilisée dans des streams ou vidéos.", + }, + labels = { + food_jokers = "Jokers nourriture", + banana = "Banane", + code = "Code", + unique = "Unique", + cry_rigged = "Truqué", + cry_hooked = "Accroché", + cry_flickering = "Luisant", + cry_possessed = "Possédé", - cry_green_seal = "Sceau vert", - cry_azure_seal = "Sceau azur", + cry_green_seal = "Sceau vert", + cry_azure_seal = "Sceau azur", - cry_astral = "Astral", - cry_blur = "Flou", - cry_double_sided = "Double-Face", - cry_glass = "Fragile", - cry_glitched = "Glitché", - cry_gold = "Doré", - cry_m = "Joyeux", - cry_mosaic = "Mosaïque", - cry_noisy = "Bruité", - cry_oversat = "Super-saturée", + cry_astral = "Astral", + cry_blur = "Flou", + cry_double_sided = "Double-Face", + cry_glass = "Fragile", + cry_glitched = "Glitché", + cry_gold = "Doré", + cry_m = "Joyeux", + cry_mosaic = "Mosaïque", + cry_noisy = "Bruité", + cry_oversat = "Super-saturée", - k_cry_epic = "Épique", - k_cry_exotic = "Exotique", - k_cry_candy = "Candy", - k_cry_cursed = "Cursed", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Multi" }, - plus_chips = { "{C:blue}+#2#{} Jetons" }, - x_mult = { "{X:red,C:white} X#2#{} Multi" }, - x_chips = { "{X:blue,C:white} X#2#{} Jetons" }, - h_size = { "{C:attention}+#2#{} à la taille de main" }, - money = { "gagne {C:money}+$#2#{}" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Actuellement {C:red}+#1#{C:inactive} Multi)" }, - plus_chips = { "{C:inactive}(Actuellement {C:blue}+#1#{C:inactive} Jetons)" }, - x_mult = { "{C:inactive}(Actuellement {X:red,C:white} X#1# {C:inactive} Multi)" }, - x_chips = { "{C:inactive}(Actuellement {X:blue,C:white} X#1# {C:inactive} Jetons)" }, - h_size = { "{C:inactive}(Actuellement {C:attention}+#1#{C:inactive} taille de main)" }, - money = { "{C:inactive}(Actuellement {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Crée un {C:attention}#2# Joker{}" }, - make_tarot = { "Crée une carte {C:attention}#2#{C:tarot} Tarot" }, - make_planet = { "Crée une carte {C:attention}#2#{C:planet} Planète" }, - make_spectral = { "Crée une carte {C:attention}#2#{C:spectral} Spectrale{}" }, - add_dollars = { "Gagne {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "lorsqu'un {C:attention}paquet{} est ouvert" }, - buying_card = { "lorsqu'une carte est achetée" }, - selling_self = { "lorsque cette carte est vendue" }, - selling_card = { "lorsqu'une carte est vendue" }, - reroll_shop = { "lors d'un réassort" }, - ending_shop = { "à la fin de la {C:attention}boutique{}" }, - skip_blind = { "lorsqu'une {C:attention}blinde{} est passée" }, - skipping_booster = { "lorsque n'importe quel {C:attention}paquet{} est passé" }, - playing_card_added = { "à chaque fois qu'une {C:attention}carte à jouer{} est ajoutée à votre jeu" }, - first_hand_drawn = { "au début de la manche" }, - setting_blind = { "lorsque la {C:attention}Blinde{} est sélectionnée" }, - remove_playing_cards = { "lorsqu'une carte est détruite" }, - using_consumeable = { "lorsq'une carte {C:attention}consommable{} est utilisée" }, - debuffed_hand = { "si la {C:attention}main jouée{} n'est pas autorisée" }, - pre_discard = { "avant chaque défausse" }, - discard = { "pour chaque carte défaussée" }, - end_of_round = { "à la fin de {C:attention}la manche{}" }, - individual_play = { "pour chaque carte marquée" }, - individual_hand_score = { "pour chaque carte en main lors du compte" }, - individual_hand_end = { "pour chaque carte en main à la fin de la {C:attention}manche{}" }, - repetition_play = { "Redéclenche les cartes jouées" }, - repetition_hand = { "Redéclenche les cartes en main" }, - other_joker = { "pour chaque {C:attention}Joker{}" }, - before = { "avant chaque {C:attention}main{}" }, - after = { "après chaque {C:attention}main{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "si c'est un {C:attention}Joker{} {C:blue}Commun{}" }, - buy_uncommon = { "si c'est un {C:attention}Joker{} {C:blue}Peu commun{}" }, - tarot = { "si cette carte est une carte {C:tarot}Tarot{}" }, - planet = { "si cette carte est une carte {C:planet}Planète{}" }, - spectral = { "si cette carte est une carte {C:spectral}Spectrale{}" }, - joker = { "si cette carte est un {C:attention}Joker{}" }, - suit = { "si cette carte est un {V:1}#3#{}" }, - rank = { "si cette carte est un {C:attention}#3#{}" }, - face = { "si cette carte est une carte {C:attention}figure{}" }, - boss = { "si la {C:attention}blinde{} est une {C:attention}Blinde de Boss{}" }, - non_boss = { "si la {C:attention}blinde{} n'est pas une {C:attention}Blinde de Boss{}" }, - small = { "si la {C:attention}blinde{} est une {C:attention}Petite Blinde{}" }, - big = { "si la {C:attention}blinde{} est une {C:attention}Grosse Blinde{}" }, - first = { "si c'est la {C:attention}première main{}" }, - last = { "si c'est la {C:attention}dernière main{}" }, - common = { "si c'est un {C:attention}Joker {C:blue}Commun{}" }, - uncommon = { "si c'est un {C:attention}Joker{} {C:green}Peu commun{}" }, - rare = { "si c'est un {C:attention}Joker{} {C:red}Rare{}" }, - poker_hand = { "si la main contient une {C:attention}#3#{}" }, - or_more = { "si la main contient au moins {C:attention}#3#{} cartes" }, - or_less = { "si la main contient au plus {C:attention}#3#{} cartes" }, - hands_left = { "s'il reste #3# {C:blue}mains{} à la fin de la manche" }, - discards_left = { "s'il reste #3# {C:red}défausses{} à la fin de la manche" }, - first_discard = { "si c'est la {C:attention}première défausse{}" }, - last_discard = { "si c'est la {C:attention}dernière défausse{}" }, - odds = { "avec {C:green}#4# chances sur {C:green}#3#{}" }, - }, - }, - v_dictionary = { - a_xchips = { "X#1# Jetons" }, - a_powmult = { "^#1# Multi" }, - a_powchips = { "^#1# Jetons" }, - a_powmultchips = { "^#1# Multi+Jetons" }, - a_round = { "+#1# Manche(s)" }, - a_candy = { "+#1# bonbon" }, - a_xchips_minus = { "-X#1# Jetons" }, - a_powmult_minus = { "-^#1# Multi" }, - a_powchips_minus = { "-^#1# Jetons" }, - a_powmultchips_minus = { "-^#1# Multi+Jetons" }, - a_round_minus = { "-#1# Manche(s)" }, + k_cry_epic = "Épique", + k_cry_exotic = "Exotique", + k_cry_candy = "Candy", + k_cry_cursed = "Cursed", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Multi" }, + plus_chips = { "{C:blue}+#2#{} Jetons" }, + x_mult = { "{X:red,C:white} X#2#{} Multi" }, + x_chips = { "{X:blue,C:white} X#2#{} Jetons" }, + h_size = { "{C:attention}+#2#{} à la taille de main" }, + money = { "gagne {C:money}+$#2#{}" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Actuellement {C:red}+#1#{C:inactive} Multi)" }, + plus_chips = { "{C:inactive}(Actuellement {C:blue}+#1#{C:inactive} Jetons)" }, + x_mult = { "{C:inactive}(Actuellement {X:red,C:white} X#1# {C:inactive} Multi)" }, + x_chips = { "{C:inactive}(Actuellement {X:blue,C:white} X#1# {C:inactive} Jetons)" }, + h_size = { "{C:inactive}(Actuellement {C:attention}+#1#{C:inactive} taille de main)" }, + money = { "{C:inactive}(Actuellement {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Crée un {C:attention}#2# Joker{}" }, + make_tarot = { "Crée une carte {C:attention}#2#{C:tarot} Tarot" }, + make_planet = { "Crée une carte {C:attention}#2#{C:planet} Planète" }, + make_spectral = { "Crée une carte {C:attention}#2#{C:spectral} Spectrale{}" }, + add_dollars = { "Gagne {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "lorsqu'un {C:attention}paquet{} est ouvert" }, + buying_card = { "lorsqu'une carte est achetée" }, + selling_self = { "lorsque cette carte est vendue" }, + selling_card = { "lorsqu'une carte est vendue" }, + reroll_shop = { "lors d'un réassort" }, + ending_shop = { "à la fin de la {C:attention}boutique{}" }, + skip_blind = { "lorsqu'une {C:attention}blinde{} est passée" }, + skipping_booster = { "lorsque n'importe quel {C:attention}paquet{} est passé" }, + playing_card_added = { "à chaque fois qu'une {C:attention}carte à jouer{} est ajoutée à votre jeu" }, + first_hand_drawn = { "au début de la manche" }, + setting_blind = { "lorsque la {C:attention}Blinde{} est sélectionnée" }, + remove_playing_cards = { "lorsqu'une carte est détruite" }, + using_consumeable = { "lorsq'une carte {C:attention}consommable{} est utilisée" }, + debuffed_hand = { "si la {C:attention}main jouée{} n'est pas autorisée" }, + pre_discard = { "avant chaque défausse" }, + discard = { "pour chaque carte défaussée" }, + end_of_round = { "à la fin de {C:attention}la manche{}" }, + individual_play = { "pour chaque carte marquée" }, + individual_hand_score = { "pour chaque carte en main lors du compte" }, + individual_hand_end = { "pour chaque carte en main à la fin de la {C:attention}manche{}" }, + repetition_play = { "Redéclenche les cartes jouées" }, + repetition_hand = { "Redéclenche les cartes en main" }, + other_joker = { "pour chaque {C:attention}Joker{}" }, + before = { "avant chaque {C:attention}main{}" }, + after = { "après chaque {C:attention}main{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "si c'est un {C:attention}Joker{} {C:blue}Commun{}" }, + buy_uncommon = { "si c'est un {C:attention}Joker{} {C:blue}Peu commun{}" }, + tarot = { "si cette carte est une carte {C:tarot}Tarot{}" }, + planet = { "si cette carte est une carte {C:planet}Planète{}" }, + spectral = { "si cette carte est une carte {C:spectral}Spectrale{}" }, + joker = { "si cette carte est un {C:attention}Joker{}" }, + suit = { "si cette carte est un {V:1}#3#{}" }, + rank = { "si cette carte est un {C:attention}#3#{}" }, + face = { "si cette carte est une carte {C:attention}figure{}" }, + boss = { "si la {C:attention}blinde{} est une {C:attention}Blinde de Boss{}" }, + non_boss = { "si la {C:attention}blinde{} n'est pas une {C:attention}Blinde de Boss{}" }, + small = { "si la {C:attention}blinde{} est une {C:attention}Petite Blinde{}" }, + big = { "si la {C:attention}blinde{} est une {C:attention}Grosse Blinde{}" }, + first = { "si c'est la {C:attention}première main{}" }, + last = { "si c'est la {C:attention}dernière main{}" }, + common = { "si c'est un {C:attention}Joker {C:blue}Commun{}" }, + uncommon = { "si c'est un {C:attention}Joker{} {C:green}Peu commun{}" }, + rare = { "si c'est un {C:attention}Joker{} {C:red}Rare{}" }, + poker_hand = { "si la main contient une {C:attention}#3#{}" }, + or_more = { "si la main contient au moins {C:attention}#3#{} cartes" }, + or_less = { "si la main contient au plus {C:attention}#3#{} cartes" }, + hands_left = { "s'il reste #3# {C:blue}mains{} à la fin de la manche" }, + discards_left = { "s'il reste #3# {C:red}défausses{} à la fin de la manche" }, + first_discard = { "si c'est la {C:attention}première défausse{}" }, + last_discard = { "si c'est la {C:attention}dernière défausse{}" }, + odds = { "avec {C:green}#4# chances sur {C:green}#3#{}" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Jetons" }, + a_powmult = { "^#1# Multi" }, + a_powchips = { "^#1# Jetons" }, + a_powmultchips = { "^#1# Multi+Jetons" }, + a_round = { "+#1# Manche(s)" }, + a_candy = { "+#1# bonbon" }, + a_xchips_minus = { "-X#1# Jetons" }, + a_powmult_minus = { "-^#1# Multi" }, + a_powchips_minus = { "-^#1# Jetons" }, + a_powmultchips_minus = { "-^#1# Multi+Jetons" }, + a_round_minus = { "-#1# Manche(s)" }, + a_tag_minus = { "-#1# Badge" }, + a_tags_minus = { "-#1# Badges" }, + a_tag = { "#1# Badge" }, + a_tags = { "#1# Badges" }, - a_tag = { "#1# Badge" }, - a_tags = { "#1# Badges" }, + cry_sticker_name = { "Sticker #1#" }, + cry_sticker_desc = { + "Vous avez remporté", + "la #2#Mise #1##3#", + "avec ce Joker", + }, - cry_sticker_name = { "Sticker #1#" }, - cry_sticker_desc = { - "Vous avez remporté", - "la #2#Mise #1##3#", - "avec ce Joker" - }, - - cry_art = {"Graphismes : #1#"}, - cry_code = {"Code : #1#"}, - cry_idea = {"Idée : #1#"}, - }, - v_text = { - ch_c_cry_all_perishable = { "Tous les jokers sont {C:eternal}Périssables{}" }, - ch_c_cry_all_rental = { "Tous les jokers sont {C:eternal}en Location{}" }, - ch_c_cry_all_pinned = { "Tous les jokers sont {C:eternal}Épinglés{}" }, - ch_c_cry_all_banana = { "Tous les jokers sont {C:eternal}Bananes{}" }, - ch_c_all_rnj = { "Tous les jokers sont {C:attention}RNJoker{}" }, - ch_c_cry_sticker_sheet_plus = { "Tous les objets achetables ont tous les stickers" }, - ch_c_cry_rush_hour = { "Toutes les Blindes de Boss sont {C:attention}L'Horloge{} ou la {C:attention}Boucle Lavande" }, - ch_c_cry_rush_hour_ii = { "Toutes les blindes sont des {C:attention}Blindes de Boss{}" }, - ch_c_cry_rush_hour_iii = { "{C:attention}L'Horloge{} et la {C:attention}Boucle Lavande{} augmentent {C:attention}deux fois{} plus vite" }, - ch_c_cry_no_tags = { "Passer la blinde n'est {C:attention}plus possible{}" }, - ch_c_cry_no_vouchers = { "Les {C:attention}coupons{} n'apparaissent plus dans la boutique" }, - ch_c_cry_no_boosters = { "Les {C:attention}Paquets Booster{} n'apparaissent plus dans la boutique" }, - ch_c_cry_no_rerolls = { "Le réapprovisionnement n'est {C:attention}plus possible{}" }, - ch_c_cry_no_consumables = { "Les {C:attention}consommables{} n'apparaissent plus" } - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + cry_art = { "Graphismes : #1#" }, + cry_code = { "Code : #1#" }, + cry_idea = { "Idée : #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "Tous les jokers sont {C:eternal}Périssables{}" }, + ch_c_cry_all_rental = { "Tous les jokers sont {C:eternal}en Location{}" }, + ch_c_cry_all_pinned = { "Tous les jokers sont {C:eternal}Épinglés{}" }, + ch_c_cry_all_banana = { "Tous les jokers sont {C:eternal}Bananes{}" }, + ch_c_all_rnj = { "Tous les jokers sont {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "Tous les objets achetables ont tous les stickers" }, + ch_c_cry_rush_hour = { + "Toutes les Blindes de Boss sont {C:attention}L'Horloge{} ou la {C:attention}Boucle Lavande", + }, + ch_c_cry_rush_hour_ii = { "Toutes les blindes sont des {C:attention}Blindes de Boss{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}L'Horloge{} et la {C:attention}Boucle Lavande{} augmentent {C:attention}deux fois{} plus vite", + }, + ch_c_cry_no_tags = { "Passer la blinde n'est {C:attention}plus possible{}" }, + ch_c_cry_no_vouchers = { "Les {C:attention}coupons{} n'apparaissent plus dans la boutique" }, + ch_c_cry_no_boosters = { "Les {C:attention}Paquets Booster{} n'apparaissent plus dans la boutique" }, + ch_c_cry_no_rerolls = { "Le réapprovisionnement n'est {C:attention}plus possible{}" }, + ch_c_cry_no_consumables = { "Les {C:attention}consommables{} n'apparaissent plus" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { + "see this ad?", + "if you are, then it's working", + "and you could have it for your own", + }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { + "FREE VOUCHERS", + "HOT VOUCHERS NEAR YOU", + "GET VOUCHERS QUICK WITH THIS ONE TRICK", + }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { + "A VOUCHER!", + "IT'S JUST IMAGINARY", + "WE IMAGINED YOU WOULD WANT IT, THAT IS", + }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { + "IF YOU HAVE", + "A PROBLEM WITH THIS", + "EMAIL IT TO US AT NORESPONSE@JMAIL.COM", + }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/id.lua b/Cryptid/localization/id.lua index 65b3b86..dec9d88 100644 --- a/Cryptid/localization/id.lua +++ b/Cryptid/localization/id.lua @@ -1,3314 +1,3316 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - b_cry_legendary = { - name = "Legendary Deck", - text = { - "Start with an {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + b_cry_legendary = { + name = "Legendary Deck", + text = { + "Start with an {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to multiple of #1#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped at", - "0.4X blind requirements", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "The {C:cry_code}next{} hand played", - "is calculated as a", - "{C:cry_code}chosen{} poker hand", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers", - "to become {C:cry_code}Hooked", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - "{C:inactive}(Blank side can be merged", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to multiple of #1#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped at", + "0.4X blind requirements", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanently{} remove a", + "{C:cry_code}selected{} shop item", + "{C:inactive,s:0.8}Item cannot appear again this run", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "The {C:cry_code}next{} hand played", + "is calculated as a", + "{C:cry_code}chosen{} poker hand", + "{C:inactive,s:0.8}Secret hands must be", + "{C:inactive,s:0.8}discovered to be valid", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers", + "to become {C:cry_code}Hooked", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card and", + "{C:cry_code}#1#{} extra choice", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected cards", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + "{C:inactive}(Blank side can be merged", "{C:inactive}with another card)", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}1 in 4{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "instead of the front side", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", - "and create 1 {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker{} at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Oversaturated Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "times when scored", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand(s) when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}1 in 4{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} rounds", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hands remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "instead of the front side", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker{} at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Oversaturated Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_disable_music = "Disable Music", + k_disable_music = "Disable Music", - k_cry_epic = "Epic", - k_cry_epic = "Exotic", + k_cry_epic = "Epic", + k_cry_epic = "Exotic", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Notice", - cry_notif_jimball_d1 = "Jimball plays the song \"Funkytown\",", - cry_notif_jimball_d2 = "which is copyrighted and can't be", - cry_notif_jimball_d3 = "used for streams and videos.", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Notice", + cry_notif_jimball_d1 = 'Jimball plays the song "Funkytown",', + cry_notif_jimball_d2 = "which is copyrighted and can't be", + cry_notif_jimball_d3 = "used for streams and videos.", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Vouchers{} no longer appear in the shop"}, - ch_c_cry_no_boosters = {"{C:attention}Booster Packs{} no longer appear in the shop"}, - ch_c_cry_no_rerolls = {"Rerolling is {C:attention}disabled{}"}, - ch_c_cry_no_consumables = {"{C:attention}Consumables{} no longer appear"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Vouchers{} no longer appear in the shop" }, + ch_c_cry_no_boosters = { "{C:attention}Booster Packs{} no longer appear in the shop" }, + ch_c_cry_no_rerolls = { "Rerolling is {C:attention}disabled{}" }, + ch_c_cry_no_consumables = { "{C:attention}Consumables{} no longer appear" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/ja.lua b/Cryptid/localization/ja.lua index c254527..7728020 100644 --- a/Cryptid/localization/ja.lua +++ b/Cryptid/localization/ja.lua @@ -1,3314 +1,3316 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - b_cry_legendary = { - name = "Legendary Deck", - text = { - "Start with an {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + b_cry_legendary = { + name = "Legendary Deck", + text = { + "Start with an {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to multiple of #1#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped at", - "0.4X blind requirements", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "The {C:cry_code}next{} hand played", - "is calculated as a", - "{C:cry_code}chosen{} poker hand", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers", - "to become {C:cry_code}Hooked", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - "{C:inactive}(Blank side can be merged", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to multiple of #1#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped at", + "0.4X blind requirements", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanently{} remove a", + "{C:cry_code}selected{} shop item", + "{C:inactive,s:0.8}Item cannot appear again this run", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "The {C:cry_code}next{} hand played", + "is calculated as a", + "{C:cry_code}chosen{} poker hand", + "{C:inactive,s:0.8}Secret hands must be", + "{C:inactive,s:0.8}discovered to be valid", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers", + "to become {C:cry_code}Hooked", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card and", + "{C:cry_code}#1#{} extra choice", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected cards", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + "{C:inactive}(Blank side can be merged", "{C:inactive}with another card)", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}1 in 4{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "instead of the front side", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", - "and create 1 {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker{} at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Oversaturated Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "times when scored", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand(s) when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}1 in 4{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} rounds", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hands remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "instead of the front side", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker{} at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Oversaturated Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_disable_music = "Disable Music", + k_disable_music = "Disable Music", - k_cry_epic = "Epic", - k_cry_epic = "Exotic", + k_cry_epic = "Epic", + k_cry_epic = "Exotic", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Notice", - cry_notif_jimball_d1 = "Jimball plays the song \"Funkytown\",", - cry_notif_jimball_d2 = "which is copyrighted and can't be", - cry_notif_jimball_d3 = "used for streams and videos.", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Notice", + cry_notif_jimball_d1 = 'Jimball plays the song "Funkytown",', + cry_notif_jimball_d2 = "which is copyrighted and can't be", + cry_notif_jimball_d3 = "used for streams and videos.", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Vouchers{} no longer appear in the shop"}, - ch_c_cry_no_boosters = {"{C:attention}Booster Packs{} no longer appear in the shop"}, - ch_c_cry_no_rerolls = {"Rerolling is {C:attention}disabled{}"}, - ch_c_cry_no_consumables = {"{C:attention}Consumables{} no longer appear"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Vouchers{} no longer appear in the shop" }, + ch_c_cry_no_boosters = { "{C:attention}Booster Packs{} no longer appear in the shop" }, + ch_c_cry_no_rerolls = { "Rerolling is {C:attention}disabled{}" }, + ch_c_cry_no_consumables = { "{C:attention}Consumables{} no longer appear" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/ko.lua b/Cryptid/localization/ko.lua index 65b3b86..dec9d88 100644 --- a/Cryptid/localization/ko.lua +++ b/Cryptid/localization/ko.lua @@ -1,3314 +1,3316 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - b_cry_legendary = { - name = "Legendary Deck", - text = { - "Start with an {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + b_cry_legendary = { + name = "Legendary Deck", + text = { + "Start with an {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to multiple of #1#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped at", - "0.4X blind requirements", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "The {C:cry_code}next{} hand played", - "is calculated as a", - "{C:cry_code}chosen{} poker hand", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers", - "to become {C:cry_code}Hooked", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - "{C:inactive}(Blank side can be merged", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to multiple of #1#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped at", + "0.4X blind requirements", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanently{} remove a", + "{C:cry_code}selected{} shop item", + "{C:inactive,s:0.8}Item cannot appear again this run", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "The {C:cry_code}next{} hand played", + "is calculated as a", + "{C:cry_code}chosen{} poker hand", + "{C:inactive,s:0.8}Secret hands must be", + "{C:inactive,s:0.8}discovered to be valid", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers", + "to become {C:cry_code}Hooked", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card and", + "{C:cry_code}#1#{} extra choice", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected cards", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + "{C:inactive}(Blank side can be merged", "{C:inactive}with another card)", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}1 in 4{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "instead of the front side", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", - "and create 1 {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker{} at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Oversaturated Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "times when scored", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand(s) when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}1 in 4{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} rounds", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hands remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "instead of the front side", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker{} at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Oversaturated Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_disable_music = "Disable Music", + k_disable_music = "Disable Music", - k_cry_epic = "Epic", - k_cry_epic = "Exotic", + k_cry_epic = "Epic", + k_cry_epic = "Exotic", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Notice", - cry_notif_jimball_d1 = "Jimball plays the song \"Funkytown\",", - cry_notif_jimball_d2 = "which is copyrighted and can't be", - cry_notif_jimball_d3 = "used for streams and videos.", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Notice", + cry_notif_jimball_d1 = 'Jimball plays the song "Funkytown",', + cry_notif_jimball_d2 = "which is copyrighted and can't be", + cry_notif_jimball_d3 = "used for streams and videos.", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Vouchers{} no longer appear in the shop"}, - ch_c_cry_no_boosters = {"{C:attention}Booster Packs{} no longer appear in the shop"}, - ch_c_cry_no_rerolls = {"Rerolling is {C:attention}disabled{}"}, - ch_c_cry_no_consumables = {"{C:attention}Consumables{} no longer appear"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Vouchers{} no longer appear in the shop" }, + ch_c_cry_no_boosters = { "{C:attention}Booster Packs{} no longer appear in the shop" }, + ch_c_cry_no_rerolls = { "Rerolling is {C:attention}disabled{}" }, + ch_c_cry_no_consumables = { "{C:attention}Consumables{} no longer appear" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/nl.lua b/Cryptid/localization/nl.lua index 77dca8e..461ee49 100644 --- a/Cryptid/localization/nl.lua +++ b/Cryptid/localization/nl.lua @@ -21,3278 +21,3281 @@ Tags: No Other (packs, stickers, etc): No Misc: No -]]-- +]] +-- return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to multiple of #1#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped at", - "0.4X blind requirements", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "The {C:cry_code}next{} hand played", - "is calculated as a", - "{C:cry_code}chosen{} poker hand", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers", - "to become {C:cry_code}Hooked", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}1 in 4{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips, {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M-Jokers{} and {C:attention}Jolly Jokers{}", - "and create 1 {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create up to 4 {C:attention}Jolly Jokers{} when obtained", - "Each {C:attention}Jolly Joker{} gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{} and", - "create an {C:legendary}M Joker{} {C:red}once per round", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round#3#", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "{X:chips,C:white} X#1# {} Chips until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to multiple of #1#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped at", + "0.4X blind requirements", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanently{} remove a", + "{C:cry_code}selected{} shop item", + "{C:inactive,s:0.8}Item cannot appear again this run", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "The {C:cry_code}next{} hand played", + "is calculated as a", + "{C:cry_code}chosen{} poker hand", + "{C:inactive,s:0.8}Secret hands must be", + "{C:inactive,s:0.8}discovered to be valid", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers", + "to become {C:cry_code}Hooked", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card and", + "{C:cry_code}#1#{} extra choice", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected cards", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "times when scored", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand(s) when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}1 in 4{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} rounds", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips, {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hands remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M-Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create up to 4 {C:attention}Jolly Jokers{} when obtained", + "Each {C:attention}Jolly Joker{} gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{} and", + "create an {C:legendary}M Joker{} {C:red}once per round", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round#3#", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "{X:chips,C:white} X#1# {} Chips until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/pl.lua b/Cryptid/localization/pl.lua index 461b80f..8aeb852 100644 --- a/Cryptid/localization/pl.lua +++ b/Cryptid/localization/pl.lua @@ -1,389 +1,389 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antymateryjna Talia", - text = { - "Aplikuje {C:legendary,E:1}zalety{}", - "{C:attention}każdej{} talii", - }, - }, - b_cry_beta = { - name = "Nostalgiczna Talia", - text = { - "Miejsce na {C:attention}jokery{}", - "i i {C:attention}przedmioty zużywalne{} są połączone,", - "a {C:attention}Nostalgiczne{} przeszkadzajki", - "zastępują ich zaktualizowane wersje" - }, - }, - b_cry_blank = { - name = "Pusta Talia", - text = { - "{C:inactive,E:1}Nie robi nic?", - }, - }, + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antymateryjna Talia", + text = { + "Aplikuje {C:legendary,E:1}zalety{}", + "{C:attention}każdej{} talii", + }, + }, + b_cry_beta = { + name = "Nostalgiczna Talia", + text = { + "Miejsce na {C:attention}jokery{}", + "i i {C:attention}przedmioty zużywalne{} są połączone,", + "a {C:attention}Nostalgiczne{} przeszkadzajki", + "zastępują ich zaktualizowane wersje", + }, + }, + b_cry_blank = { + name = "Pusta Talia", + text = { + "{C:inactive,E:1}Nie robi nic?", + }, + }, b_cry_bountiful = { name = "Obfita Talia", text = { - "Po {C:blue}zagraniu{} lub {C:red}zrzutce{},", - "zawsze dobierasz {C:attention}5{} kart" + "Po {C:blue}zagraniu{} lub {C:red}zrzutce{},", + "zawsze dobierasz {C:attention}5{} kart", }, }, - b_cry_CCD = { - name = "Talia CCD", - text = { - "Każda karta jest jednocześnie", - "{C:attention}losowym{} przedmiotem zużywalnym", - }, - }, - b_cry_conveyor = { - name = "Taśmociągowa Talia", - text = { - "Jokery {C:attention}nie mogą{} zmieniać pozycji", - "Na początku rundy,", - "{C:attention}duplikuje{} jokera najbardziej wysuniętego na prawo", - "i {C:attention}niszczy{} najbardziej wysuniętego na lewo", - }, - }, - b_cry_critical = { - name = "Krytyczna Talia", - text = { - "Po każdej zagranej ręce,", - "{C:green}#1# na 4{} szans na mnożnik {X:dark_edition,C:white} ^2 {}", - "{C:green}#1# na 8{} szans na mnożnik {X:dark_edition,C:white} ^0.5 {}", - }, - }, - b_cry_encoded = { - name = "Zakodowana Talia", - text = { - "Rozpoczynasz podejście z", - "{C:cry_code,T:j_cry_CodeJoker}Kodowym Jokerem{} i {C:cry_code,T:j_cry_copypaste}Kopiuj/Wklej{}", - "Tylko {C:cry_code}Karty kodowe{} pojawiają się w sklepie", - }, - }, - b_cry_equilibrium = { - name = "Talia Równowagi", - text = { - "Wszystkie karty mają", - "{C:attention}równą{} szansę", - "pojawienia się w sklepie,", - "rozpoczynasz podejście z kuponem", - "{C:attention,T:v_overstock_plus}Nadmiar Zapasów+", - }, - }, - b_cry_glowing = { - name = "Świecąca Talia", - text = { - "Po pokonaniu przeszkadzajki bossa,", - "wszystkie wartości jokerów", - "są mnożone przez {X:dark_edition,C:white} X1.25 {}", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Nieskończona Talia", - text = { - "Możesz wybrać {C:attention}dowolną", - "liczbę kart", - "{C:attention}+1{} do rozmiaru ręki", - }, - }, - b_cry_misprint = { - name = "Błędna Talia", - text = { - "Wartości kart", - "i układów pokerowych", - "są {C:attention}losowe", - }, - }, - b_cry_redeemed = { - name = "Odkupiona Talia", - text = { - "Przy zakupie {C:attention}kuponu{},", - "otrzymujesz jego {C:attention}dodatkowe poziomy", - }, - }, - b_cry_spooky = { - name = "Upiorna Talia", - text = { - "Rozpoczynasz podejście z {C:eternal}Wieczną{} {C:attention,T:j_cry_chocolate_dice}Czekoladową Kostką", - "Po każdym {C:attention}wejściu{}, tworzy", - "{C:cry_candy}Cukierka{} lub {X:cry_cursed,C:white}Przeklętego{} jokera", - } - }, - b_cry_very_fair = { - name = "Bardzo Uczciwa Talia", - text = { - "{C:blue}-2{} od ręki, {C:red}-2{} od zrzutek", - "w każdej rundzie", - "{C:attention}Kupony{} nie pojawiają", - "się w sklepie", - }, - }, - b_cry_wormhole = { - name = "Tuneloczasowa Talia", - text = { - "Rozpoczynasz podejście z {C:cry_exotic}egzotycznym{C:attention} jokerem", - "{C:attention}X20{} prawdopodobieństwa", - "na {C:dark_edition}Negatywy{} jokerów", - "{C:attention}-2{} sloty na jokera", - }, - }, - b_cry_legendary = { - name = "Legendarna Talia", - text = { - "Rozpoczynasz podejście z {C:legendary}legendarnym{C:legendary} jokerem", - "{C:green}1 in 5{} szans na dodanie kolejnego", + b_cry_CCD = { + name = "Talia CCD", + text = { + "Każda karta jest jednocześnie", + "{C:attention}losowym{} przedmiotem zużywalnym", + }, + }, + b_cry_conveyor = { + name = "Taśmociągowa Talia", + text = { + "Jokery {C:attention}nie mogą{} zmieniać pozycji", + "Na początku rundy,", + "{C:attention}duplikuje{} jokera najbardziej wysuniętego na prawo", + "i {C:attention}niszczy{} najbardziej wysuniętego na lewo", + }, + }, + b_cry_critical = { + name = "Krytyczna Talia", + text = { + "Po każdej zagranej ręce,", + "{C:green}#1# na 4{} szans na mnożnik {X:dark_edition,C:white} ^2 {}", + "{C:green}#1# na 8{} szans na mnożnik {X:dark_edition,C:white} ^0.5 {}", + }, + }, + b_cry_encoded = { + name = "Zakodowana Talia", + text = { + "Rozpoczynasz podejście z", + "{C:cry_code,T:j_cry_CodeJoker}Kodowym Jokerem{} i {C:cry_code,T:j_cry_copypaste}Kopiuj/Wklej{}", + "Tylko {C:cry_code}Karty kodowe{} pojawiają się w sklepie", + }, + }, + b_cry_equilibrium = { + name = "Talia Równowagi", + text = { + "Wszystkie karty mają", + "{C:attention}równą{} szansę", + "pojawienia się w sklepie,", + "rozpoczynasz podejście z kuponem", + "{C:attention,T:v_overstock_plus}Nadmiar Zapasów+", + }, + }, + b_cry_glowing = { + name = "Świecąca Talia", + text = { + "Po pokonaniu przeszkadzajki bossa,", + "wszystkie wartości jokerów", + "są mnożone przez {X:dark_edition,C:white} X1.25 {}", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Nieskończona Talia", + text = { + "Możesz wybrać {C:attention}dowolną", + "liczbę kart", + "{C:attention}+1{} do rozmiaru ręki", + }, + }, + b_cry_misprint = { + name = "Błędna Talia", + text = { + "Wartości kart", + "i układów pokerowych", + "są {C:attention}losowe", + }, + }, + b_cry_redeemed = { + name = "Odkupiona Talia", + text = { + "Przy zakupie {C:attention}kuponu{},", + "otrzymujesz jego {C:attention}dodatkowe poziomy", + }, + }, + b_cry_spooky = { + name = "Upiorna Talia", + text = { + "Rozpoczynasz podejście z {C:eternal}Wieczną{} {C:attention,T:j_cry_chocolate_dice}Czekoladową Kostką", + "Po każdym {C:attention}wejściu{}, tworzy", + "{C:cry_candy}Cukierka{} lub {X:cry_cursed,C:white}Przeklętego{} jokera", + }, + }, + b_cry_very_fair = { + name = "Bardzo Uczciwa Talia", + text = { + "{C:blue}-2{} od ręki, {C:red}-2{} od zrzutek", + "w każdej rundzie", + "{C:attention}Kupony{} nie pojawiają", + "się w sklepie", + }, + }, + b_cry_wormhole = { + name = "Tuneloczasowa Talia", + text = { + "Rozpoczynasz podejście z {C:cry_exotic}egzotycznym{C:attention} jokerem", + "{C:attention}X20{} prawdopodobieństwa", + "na {C:dark_edition}Negatywy{} jokerów", + "{C:attention}-2{} sloty na jokera", + }, + }, + b_cry_legendary = { + name = "Legendarna Talia", + text = { + "Rozpoczynasz podejście z {C:legendary}legendarnym{C:legendary} jokerem", + "{C:green}1 in 5{} szans na dodanie kolejnego", "po pokonaniu przeszkadzajki bossa", - "{C:inactive}(wymaga miejsca){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "Pudełko", - text = { - "Wszystkie pospolite jokery", - "zostają osłabione", - }, - }, - bl_cry_clock = { - name = "Zegar", - text = { - "+0.1X wymagań przeszkadzajki", - "co 3 sekundy tego wejścia", - }, - }, - bl_cry_hammer = { - name = "Młot", - text = { - "AWszystkie karty z nieparzystą", - "rangą zostają osłabione", - }, - }, - bl_cry_joke = { - name = "Żart", - text = { - "Jeśli końcowy wynik przekracza >2X wymagań przeszkadzajki", - "ustawia wejście na #1#", - }, - }, - bl_cry_magic = { - name = "Magia", - text = { - "Wszystkie karty z parzystą", - "rangą zostają osłabione", - }, - }, - bl_cry_lavender_loop = { - name = "Lawendowa Pętla", - text = { - "1,25x wymagań przeszkadzajki", - "co 1,5 sekundy tego wejścia", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidianowa Kula", - text = { - "Aplikuje zdolności", - "wszystkich pokonanych bossów", - }, - }, - bl_cry_oldarm = { - name = "Nostalgiczne Ramię", - text = { - "Należy zagrać 4", - "albo mniej kart", - }, - }, - bl_cry_oldfish = { - name = "Nostalgiczna Ryba", - text = { - "Wszystkie ręce zaczynają", - "z mnożnikiem 1", - }, - }, - bl_cry_oldflint = { - name = "Nostalgiczny Flint", - text = { - "Kolor nie może być zagrany", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgiczny Dom", - text = { - "Full House nie może być zagrany", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgiczne Kajdany", - text = { - "Mnożnik dzieli się przez zrzutki", - }, - }, - bl_cry_oldmark = { - name = "Nostalgiczny Znak", - text = { - "Układy z Parą", - "nie mogą być zagrane", - }, - }, - bl_cry_oldox = { - name = "Nostalgiczny Wół", - text = { - "Wszystkie ręce", - "zaczynają bez żetonów", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgiczny Filar", - text = { - "Strit nie może być zagrany", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgiczny Wąż", - text = { - "Mnożnik dzieli się", - "przez poziom układu pokerowego", - }, - }, - bl_cry_pin = { - name = "Szpilka", - text = { - "Epickie i egzotyczne jokery", - "zostają osłabione", - }, - }, - bl_cry_pinkbow = { - name = "Różowa Kokardka", - text = { - "Losuje rangi kart", - "trzymanych w ręce podczas zagrania", - }, - }, - bl_cry_sapphire_stamp = { - name = "Szafirowy Znaczek", - text = { - "Wybiera dodatkową kartę", - "usuwa losową przed punktacją", - }, - }, - bl_cry_shackle = { - name = "Szekla", - text = { - "Wszystkie negatywy jokerów", - "zostają osłabione", - }, - }, - bl_cry_striker = { - name = "Napastnik", - text = { - "Wszystkie rzadkie jokery", - "zostają osłabione", - }, - }, - bl_cry_tax = { - name = "Podatek", - text = { - "Wynik ręki ograniczony", - "do 0,4-krotności przeszkadzajki", - }, - }, - bl_cry_tornado = { - name = "Turkusowe Tornado", - text = { - "#1# na #2# szans, że", - "zagrana ręka nie zdobędzie punktów", - }, - }, - bl_cry_trick = { - name = "Sztuczka", - text = { - "Po każdej ręce, wszystkie karty w dłoni", - "zostają obrócone", - }, - }, - bl_cry_vermillion_virus = { - name = "Cynobrowy Wirus", - text = { - "Podczas każdej ręki, jeden losowy joker", - "zostaje permanentnie zastąpiony innym jokerem", - }, - }, - bl_cry_windmill = { - name = "Wiatrak", - text = { - "Wszystkie niepospolite jokery", - "zostają osłabione", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Przekształca {C:cry_code}#1#{} wybraną kartę", - "na {C:cry_code}dowolne{} ulepszenie", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Niszczy {C:cry_code}wybranego{} jokera,", - "tworzy {C:cry_code}nowego{} jokera", - "o tej samej {C:cry_code}rzadkości", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Nie.", - }, - }, - c_cry_ctrl_v = { - name = "://CTRL+V", - text = { - "Tworzy {C:cry_code}kopię{} wybranej karty", - "lub przedmiotu zużywalnego" - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanentnie{} usuwa", - "{C:cry_code}wybrany{} przedmiot ze sklepu", - "{C:inactive,s:0.8}Przedmiot nie może ponownie pojawić się w trakcie podejścia", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "Obniża o {C:cry_code}połowę{} wszystkie ceny", - "w obecnym sklepie", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "Następna ręka jest liczona jako", - "{C:cry_code}wybrany{} układ pokerowy,", - "resetuje się na koniec rundy", - "{C:inactive,s:0.8}Sekretne ręce muszą być", - "{C:inactive,s:0.8}odkryte aby można było z nich skorzystać", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Wybierz dwa jokery, które zostaną {C:cry_code}Zahaczone", - "{C:inactive,s:0.8}Działają poprawnie jeśli jokery aktywują się w tym samym kontekście,", - "{C:inactive,s:0.8}jak na przykład Joker i Duet (oba po zdobyciu punktów)", - }, - }, + "{C:inactive}(wymaga miejsca){}", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "Pudełko", + text = { + "Wszystkie pospolite jokery", + "zostają osłabione", + }, + }, + bl_cry_clock = { + name = "Zegar", + text = { + "+0.1X wymagań przeszkadzajki", + "co 3 sekundy tego wejścia", + }, + }, + bl_cry_hammer = { + name = "Młot", + text = { + "AWszystkie karty z nieparzystą", + "rangą zostają osłabione", + }, + }, + bl_cry_joke = { + name = "Żart", + text = { + "Jeśli końcowy wynik przekracza >2X wymagań przeszkadzajki", + "ustawia wejście na #1#", + }, + }, + bl_cry_magic = { + name = "Magia", + text = { + "Wszystkie karty z parzystą", + "rangą zostają osłabione", + }, + }, + bl_cry_lavender_loop = { + name = "Lawendowa Pętla", + text = { + "1,25x wymagań przeszkadzajki", + "co 1,5 sekundy tego wejścia", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidianowa Kula", + text = { + "Aplikuje zdolności", + "wszystkich pokonanych bossów", + }, + }, + bl_cry_oldarm = { + name = "Nostalgiczne Ramię", + text = { + "Należy zagrać 4", + "albo mniej kart", + }, + }, + bl_cry_oldfish = { + name = "Nostalgiczna Ryba", + text = { + "Wszystkie ręce zaczynają", + "z mnożnikiem 1", + }, + }, + bl_cry_oldflint = { + name = "Nostalgiczny Flint", + text = { + "Kolor nie może być zagrany", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgiczny Dom", + text = { + "Full House nie może być zagrany", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgiczne Kajdany", + text = { + "Mnożnik dzieli się przez zrzutki", + }, + }, + bl_cry_oldmark = { + name = "Nostalgiczny Znak", + text = { + "Układy z Parą", + "nie mogą być zagrane", + }, + }, + bl_cry_oldox = { + name = "Nostalgiczny Wół", + text = { + "Wszystkie ręce", + "zaczynają bez żetonów", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgiczny Filar", + text = { + "Strit nie może być zagrany", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgiczny Wąż", + text = { + "Mnożnik dzieli się", + "przez poziom układu pokerowego", + }, + }, + bl_cry_pin = { + name = "Szpilka", + text = { + "Epickie i egzotyczne jokery", + "zostają osłabione", + }, + }, + bl_cry_pinkbow = { + name = "Różowa Kokardka", + text = { + "Losuje rangi kart", + "trzymanych w ręce podczas zagrania", + }, + }, + bl_cry_sapphire_stamp = { + name = "Szafirowy Znaczek", + text = { + "Wybiera dodatkową kartę", + "usuwa losową przed punktacją", + }, + }, + bl_cry_shackle = { + name = "Szekla", + text = { + "Wszystkie negatywy jokerów", + "zostają osłabione", + }, + }, + bl_cry_striker = { + name = "Napastnik", + text = { + "Wszystkie rzadkie jokery", + "zostają osłabione", + }, + }, + bl_cry_tax = { + name = "Podatek", + text = { + "Wynik ręki ograniczony", + "do 0,4-krotności przeszkadzajki", + }, + }, + bl_cry_tornado = { + name = "Turkusowe Tornado", + text = { + "#1# na #2# szans, że", + "zagrana ręka nie zdobędzie punktów", + }, + }, + bl_cry_trick = { + name = "Sztuczka", + text = { + "Po każdej ręce, wszystkie karty w dłoni", + "zostają obrócone", + }, + }, + bl_cry_vermillion_virus = { + name = "Cynobrowy Wirus", + text = { + "Podczas każdej ręki, jeden losowy joker", + "zostaje permanentnie zastąpiony innym jokerem", + }, + }, + bl_cry_windmill = { + name = "Wiatrak", + text = { + "Wszystkie niepospolite jokery", + "zostają osłabione", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Przekształca {C:cry_code}#1#{} wybraną kartę", + "na {C:cry_code}dowolne{} ulepszenie", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Niszczy {C:cry_code}wybranego{} jokera,", + "tworzy {C:cry_code}nowego{} jokera", + "o tej samej {C:cry_code}rzadkości", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Nie.", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Tworzy {C:cry_code}kopię{} wybranej karty", + "lub przedmiotu zużywalnego", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanentnie{} usuwa", + "{C:cry_code}wybrany{} przedmiot ze sklepu", + "{C:inactive,s:0.8}Przedmiot nie może ponownie pojawić się w trakcie podejścia", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "Obniża o {C:cry_code}połowę{} wszystkie ceny", + "w obecnym sklepie", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "Następna ręka jest liczona jako", + "{C:cry_code}wybrany{} układ pokerowy,", + "resetuje się na koniec rundy", + "{C:inactive,s:0.8}Sekretne ręce muszą być", + "{C:inactive,s:0.8}odkryte aby można było z nich skorzystać", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Wybierz dwa jokery, które zostaną {C:cry_code}Zahaczone", + "{C:inactive,s:0.8}Działają poprawnie jeśli jokery aktywują się w tym samym kontekście,", + "{C:inactive,s:0.8}jak na przykład Joker i Duet (oba po zdobyciu punktów)", + }, + }, c_cry_inst = { name = "://INSTANTIATE", text = { @@ -392,1577 +392,1577 @@ return { "{C:inactive}(jeśli to możliwe){}", }, }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "{C:cry_code}Wszystkie karty w ręcę", "zostają {C:dark_edition}zglitchowane{}"}, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Scala wybrany {C:cry_code}przedmiot zużywalny", - "z wybraną {C:cry_code}kartą rozgrywającą", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Podwaja{} wartości", - "wybranego {C:cry_code}jokera{}", - "do końca rundy", - }, - }, - c_cry_patch = { - name = "://PATCH", - text = { - "Usuwa wszystkie osłabienia i", - "naklejki z obecnych kart", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Następna pokonana przeszkadzajka ", - "daje {C:cry_code}potrójne{} odsetki", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Następna {C:cry_code}paczka wzmacniająca{} ma", - "{C:cry_code}dodatkową{} kartę i", - "{C:cry_code}dodatkowy{} wybór", - "{C:inactive}(Obecnie {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Uzupełnia {C:blue}ręce{} i {C:red}zrzutki{},", - "{C:cry_code}wszystkie{} karty wracają do talii,", - "runda rozpoczyna się {C:cry_code}od nowa{}", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Cofa {C:cry_code}stan gry{} do", - "początku {C:cry_code}tego wejścia{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Niszczy {C:cry_code}wybranego{} jokera,", - "tworzy {C:cry_code}znacznik przeróbki{} z", - "{C:cry_code}ulepszoną{} edycją", - "{C:inactive,s:0.8}Ulepsza w kolejności z Kolekcji", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Odwiedź {C:cry_code}sklep", - "w trakcie {C:cry_code}przeszkadzajki", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Wybrany joker", - "lub karta rozgrywająca", - "zostaje {C:cry_code}zawsze aktywowana", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Kończy obecną przeszkadzajkę {C:cry_code}w ciemno{}", "{C:cry_code}bez{} wypłaty" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Tworzy {C:cry_code}zglitchowanego", - "kulinarnego jokera", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Przekształca {C:cry_code}#1#{} wybrane karty", - "na {C:cry_code}wybraną{} rangę", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astralna", - text = { - "Mnoż. {X:dark_edition,C:white}^#1#{}", - }, - }, - e_cry_blur = { - name = "Niewyraźna", - text = { - "{C:attention}Aktywuje ponownie{} kartę", - "z tą {C:dark_edition}edycją{}", - "{C:green}#1# na #2#{} szans", - "na aktyowanie ponownie", - "po raz kolejny", - }, - }, - e_cry_double_sided = { - name = "Dwustronna", - text = { - "Tę kartę można", - "{C:attention}odwrócić{}, aby", - "odkryć inną kartę", - "{C:inactive}(Pusta strona może być połączona", + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "{C:cry_code}Wszystkie karty w ręcę", "zostają {C:dark_edition}zglitchowane{}" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Scala wybrany {C:cry_code}przedmiot zużywalny", + "z wybraną {C:cry_code}kartą rozgrywającą", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Podwaja{} wartości", + "wybranego {C:cry_code}jokera{}", + "do końca rundy", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Usuwa wszystkie osłabienia i", + "naklejki z obecnych kart", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Następna pokonana przeszkadzajka ", + "daje {C:cry_code}potrójne{} odsetki", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Następna {C:cry_code}paczka wzmacniająca{} ma", + "{C:cry_code}dodatkową{} kartę i", + "{C:cry_code}dodatkowy{} wybór", + "{C:inactive}(Obecnie {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Uzupełnia {C:blue}ręce{} i {C:red}zrzutki{},", + "{C:cry_code}wszystkie{} karty wracają do talii,", + "runda rozpoczyna się {C:cry_code}od nowa{}", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Cofa {C:cry_code}stan gry{} do", + "początku {C:cry_code}tego wejścia{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Niszczy {C:cry_code}wybranego{} jokera,", + "tworzy {C:cry_code}znacznik przeróbki{} z", + "{C:cry_code}ulepszoną{} edycją", + "{C:inactive,s:0.8}Ulepsza w kolejności z Kolekcji", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Odwiedź {C:cry_code}sklep", + "w trakcie {C:cry_code}przeszkadzajki", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Wybrany joker", + "lub karta rozgrywająca", + "zostaje {C:cry_code}zawsze aktywowana", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Kończy obecną przeszkadzajkę {C:cry_code}w ciemno{}", "{C:cry_code}bez{} wypłaty" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Tworzy {C:cry_code}zglitchowanego", + "kulinarnego jokera", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Przekształca {C:cry_code}#1#{} wybrane karty", + "na {C:cry_code}wybraną{} rangę", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astralna", + text = { + "Mnoż. {X:dark_edition,C:white}^#1#{}", + }, + }, + e_cry_blur = { + name = "Niewyraźna", + text = { + "{C:attention}Aktywuje ponownie{} kartę", + "z tą {C:dark_edition}edycją{}", + "{C:green}#1# na #2#{} szans", + "na aktyowanie ponownie", + "po raz kolejny", + }, + }, + e_cry_double_sided = { + name = "Dwustronna", + text = { + "Tę kartę można", + "{C:attention}odwrócić{}, aby", + "odkryć inną kartę", + "{C:inactive}(Pusta strona może być połączona", "{C:inactive}z inną kartą)", - }, - }, - e_cry_glass = { - name = "Krucha", - label = "Fragile", - text = { - "Mnoż. {C:white,X:mult} X#3# {}", - "{C:green}#1# na #2#{} szans", - "że ta karta {C:red}nie ulegnie zniszczeniu", - "kiedy zostanie aktywowana", - }, - }, - e_cry_glitched = { - name = "Zglitchowana", - text = { - "Wszystkie wartości tej karty", - "są {C:dark_edition}losowe{}", - "pomiędzy {C:attention}X0.1{} a {C:attention}X10{}", - "{C:inactive}(Jeśli to możliwe){}", - }, - }, - e_cry_gold = { - name = "Złota", - label = "Golden", - text = { - "Zarabiasz {C:money}$#1#{} kiedy zostaje użyta", - "lub uruchomiona", - }, - }, - e_cry_m = { - name = "Wesoła", - text = { - "Mnoż. {C:mult}+#1#{}", - "Ta karta jest", - "raczej {C:attention}wesoła{}", - }, - }, - e_cry_mosaic = { - name = "Mozaiczna", - text = { - "{X:chips,C:white} X#1# {} żet.", - }, - }, - e_cry_noisy = { - name = "Hałaśliwa", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Przesycona", - text = { - "Wszystkie wartości", - "na tej karcie", - "są {C:attention}podwojone{}", - "{C:inactive}(Jeśli to możliwe)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Karta Echa", - text = { - "{C:green}#2# na #3#{} szans", - "na {C:attention}ponowną aktywacje{} dodatkowe #1#", - "razy kiedy zdobywa punkty", - }, - }, - }, - Joker = { - j_cry_adroit = { - name = "Zręczny Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_altgoogol = { - name = "Nostalgiczna karta Googol Play", - text = { - "Sprzedaj tę kartę, aby stworzyć", - "{C:attention}2{} kopie {C:attention}jokera najbardziej wysuniętego na lewo{}", - "{C:inactive,s:0.8}Nie kopiuje Nostalgicznej Karty Googol Play{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Niczym anteny do nieba", - text = { - "Ten joker zdobywa", - "{X:chips,C:white} X#1# {} żet., kiedy każda", - "zagrana {C:attention}7{} lub {C:attention}4{} zdobywa punkty", - "{C:inactive}(obecny mnoż. żetonów: {X:chips,C:white}X#2# {C:inactive})", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "Mnoż. {X:mult,C:white} X#1# {} przeciwko {C:attention}Przeszkadzajkom Bossa{}" }, - }, - j_cry_astral_bottle = { - name = "Astral w butelce", - text = { - "Kiedy ten joker jest sprzedany, {C:attention}losowy joker{}", - "staje się {C:dark_edition}astralny{} i", - "{C:attention}nietrwały{}", - } - }, - j_cry_big_cube = { - name = "Duża kostka", - text = { - "{X:chips,C:white} X#1# {} żet.", - }, - }, - j_cry_biggestm = { - name = "ogroMny", - text = { - "Mnoż. {X:mult,C:white} X#1# {} do końca rundy", - "jeśli {C:attention}zagrana ręka{}", - "to {C:attention}#2#{}", - "{C:inactive}(obecnie: {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}nie jestem gruby, jestem grubokościsty!", - }, - }, - j_cry_blacklist = { - name = "Czarna lista", - text = { - "Jeśli karta o randze {C:attention}#1#{} jest w dłoni lub zdobywa punkty,", - "ustawia {C:chips}żetony{} i {C:mult}mnożnik{} na 0", - "{C:red,E:2}Ulega samozniszczeniu{} jeśli kart o randze {C:attention}#1#{} nie będzie w talii ", - "{C:inactive,s:0.8}Ranga się nie zmienia" - } - }, - j_cry_blender = { - name = "Blender", - text = { - "Tworzy {C:attention}losowy{}", - "przedmiot zużywalny, kiedy", - "{C:cry_code}Karta Kodowa{} jest użyta", - "{C:inactive}(wymaga miejsca){}", - }, - }, - j_cry_blurred = { - name = "Niewyraźny Joker", - text = { - "Zyskujesz {C:blue}+#1#{} do ręki,", - "kiedy {C:attention}przeszkadzajka{} jest wybrana", - }, - }, - j_cry_bonk = { - name = "Bęc!", - text = { - "Każdy {C:attention}joker{} daje {C:chips}+#1#{} żet.", - "Zwiększa ilość o {C:chips}+#2#{}, jeśli", - "zagrana {C:attention}ręka{} to {C:attention}#3#{}", - "{C:inactive,s:0.8}Wesołe Jokery{} dostają {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}żet.{}", - }, - }, - j_cry_bonkers = { - name = "Porąbany Joker", - text = { - "Mnoż. {C:red}+#1#{} jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_bonusjoker = { - name = "Bonusowy Joker", - text = { - "{C:green}#1# na #2#{} szans dla każdej", - "zagranej {C:attention}Karty Bonusowej{} na zwiększenie", - "slotów na {C:attention}jokera{} lub {C:attention}przedmioty zużywalne", - "o {C:dark_edition}1{} po zdobyciu punktów", - "{C:red}Działa dwa razy na rundę", - "{C:inactive,s:0.8}(Równa szansa dla każdej){}", - }, - }, - j_cry_booster = { - name = "Wzmacniający Joker", - text = { - "{C:attention}+#1#{} slot na paczkę wzmacniającą", - "w sklepie", - }, - }, - j_cry_boredom = { - name = "Znudzenie", - text = { - "{C:green}#1# na #2#{} szans na", - "{C:attention}ponowną aktywację{} każdego {C:attention}jokera{}", - "lub {C:attention}karty rozgrywającej{}", - "{C:inactive,s:0.8}nie dotyczy Znudzenia{}", - }, - }, - j_cry_brittle = { - name = "Krokantowy cukierek", - text = { - "Przez następne {C:attention}#1#{} rąk,", - "aplikuje Kartę {C:attention}Kamienną{}, {C:attention}Złotą{} lub {C:attention}Stalową{} do", - "najbardziej wysuniętej na prawo karty, która zdobyła punkty" - } - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Tworzy {C:attention}Wesołego Jokera{} {C:dark_edition}w folii,", - "jeśli zagrana", - "ręka zawiera {C:attention}#1#{}", - "{C:red,E:2}Ulega samozniszczeniu{}", - }, - }, - j_cry_busdriver = { - name = "Kierowca busa", - text = { - "{C:green}#1# na #3#{} szans", - "na mnoż. {C:mult}+#2#{}", - "{C:green}1 na 4{} szans", - "na mnoż. {C:mult}-#2#{}", - }, - }, - j_cry_candy_basket = { - name = "Kosz słodyczy", - text = { - "Sprzedaj tę kartę, aby stworzyć {C:attention}#1#{} {C:cry_candy}Cukierków", - "{C:attention}+#2#{} {C:cry_candy}Cukierek{} co {C:attention}2{} pokonane przeszkadzajki", - "{C:attention}+#3#{} {C:cry_candy}Cukierki{}, kiedy {C:attention}Przeszkadzajka Bossa{} jest pokonana" - } - }, - j_cry_candy_buttons = { - name = "Guziki cukierkowe", - text = { - "Następne {C:attention}#1#{} ponownych rzutów", - "kosztuje {C:money}$1{}", - } - }, - j_cry_candy_cane = { - name = "Laska cukrowa", - text = { - "Przez następne {C:attention}#1#{} rund,", - "zagrane karty dają {C:money}$#2#,", - "kiedy są {C:attention}aktywowane ponownie" - } - }, - j_cry_candy_dagger = { - name = "Cukierkowy sztylet", - text = { - "Kiedy {C:attention}Przeszkadzajka{} jest wybrana,", - "niszczy jokera po prawej", - "i tworzy {C:cry_candy}Cukierka{}", - } - }, - j_cry_candy_sticks = { - name = "Cukrowe Pałeczki", - text = { - "Efekt przeszkadzajki następnego bossa nie jest aktywny,", - "dopóki nie zagrasz {C:attention}#1#{} ręki", - } - }, - j_cry_canvas = { - name = "Płótno", - text = { - "{C:attention}Aktywuj ponownie{} wszystkie {C:attention}jokery{} z lewej strony", - "za {C:attention}każdego{} {C:blue}niepospolitego{C:attention} jokera{}", - "po prawej stronie", - }, - }, - j_cry_caramel = { - name = "Karmel", - text = { - "Każda zagrana karta", - "daje mnoż. {X:mult,C:white}X#1#{} przy zdobyciu punktów", - "przez następne {C:attention}#2#{} rund", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Aktywuje {C:attention}jokera najbardziej wysuniętego na lewo{}", - "jeszcze {C:attention}#1#{} razy", - }, - }, - j_cry_chili_pepper = { - name = "Papryczka chilli", - text = { - "Ten joker zdobywa {X:mult,C:white} X#2# {} do mnożnika", - "na końcu rundy,", - "{C:red,E:2}Ulega samozniszczeniu{} po {C:attention}#3#{} rundach", - "{C:inactive}(obecny mnoż.:{} {X:mult,C:white} X#1# {}", - }, - }, - j_cry_chocolate_dice = { - name = "Czekoladowa kostka", - text = { - "Rzuca {C:green}kostką d10{}, kiedy", - "{C:attention}Przeszkadzajka Bossa{} jest pokonana,", - "aby zacząć {C:cry_ascendant,E:1}zdarzenie", - "{C:inactive}(obecne zdarzenie: #1#)" - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} żet. i mnoż. {X:dark_edition,C:white}^#1#{}, jeśli", - "zostały {C:attention}dokładnie{} #2#", - "ręce", - }, - }, - j_cry_circus = { - name = "Cyrk", - text = { - "{C:red}Rzadkie{} jokery dają mnoż. {X:mult,C:white} X#1# {}", - "{C:cry_epic}Epickie{} jokery dają mnoż. {X:mult,C:white} X#2# {}", - "{C:legendary}Legendarne{} jokery dają mnoż. {X:mult,C:white} X#3# {}", - "{C:cry_exotic}Egzotyczne{} jokery dają mnoż. {X:mult,C:white} X#4# {}", - }, - }, - j_cry_clash = { - name = "Starcie", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_CodeJoker = { - name = "Kodowy Joker", - text = { - "Tworzy {C:dark_edition}Negatyw{}", - "{C:cry_code}Karty Kodowej{}, kiedy", - "{C:attention}przeszkadzajka{} jest wybrana", - }, - }, - j_cry_coin = { - name = "Kryptomoneta", - text = { - "Zyskujesz pomiędzy", - "{C:money}$#1#{} a {C:money}$#2#{} za", - "każdego {C:attention}sprzedanego{} jokera", - }, - }, - j_cry_compound_interest = { - name = "Odsetkowy szał", - text = { - "Zdobywasz {C:money}#1#%{} całkowitej ilości pieniędzy", - "na koniec rundy,", - "zwiększa się o {C:money}#2#%{} przy", - "każdej następnej wypłacie", - }, - }, - j_cry_copypaste = { - name = "Kopiuj/Wklej", - text = { - "Kiedy {C:cry_code}Karta Kodowa{} jest użyta,", - "{C:green}#1# na #2#{} szans na dodanie jej kopii", - "do twojego obszaru przedmiotów zużywalnych", - "{C:inactive}(wymaga miejsce)", - }, - }, - j_cry_cotton_candy = { - name = "Wata cukrowa", - text = { - "Kiedy ta karta zostaje sprzedana, sąsiadujące", - "{C:attention}jokery{} dostają {C:dark_edition}Negatywy{}" - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "Ten joker zdobywa {C:chips}+#2#{} do żet.", - "za {C:attention}ponowny rzut{} w sklepie", - "{C:green}Wszystkie ponowne rzuty są darmowe{}", - "{C:inactive}(obecnie: {C:chips}+#1#{C:inactive} żet.)", - }, - }, - j_cry_cryptidmoment = { - name = "M Łańcuch", - text = { - "Sprzedaj tę kartę,", - "aby dodać {C:money}$#1#{} {C:attention}wartości sprzedaży{}", - "do każdego {C:attention}jokera{}", - }, - }, - j_cry_cube = { - name = "Sześcian", - text = { - "{C:chips}+#1#{} żet.", - }, - }, - j_cry_curse_sob = { - name = "Szloch", - text = { - "{C:edition,E:1}nie możesz{} {C:cry_ascendant,E:1}biec...{}", - "{C:edition,E:1}nie możesz{} {C:cry_ascendant,E:1}się ukryć...{}", - "{C:dark_edition,E:1}nie możesz uciec...{}", - "{C:inactive}(wymaga miejsca){}", - }, - }, - j_cry_cursor = { - name = "Kursor", - text = { - "Ten joker zdobywa {C:chips}+#2#{} żet.", - "za każdą {C:attention}kupioną{} kartę", - "{C:inactive}(obecnie {C:chips}+#1#{C:inactive} żet.)", - }, - }, - j_cry_cut = { - name = "Cięcie", - text = { - "Ten joker niszczy", - "losową {C:cry_code}Kartę Kodową{}", - "i zyskuje {X:mult,C:white} X#1# {} do mnożnika", - "na koniec {C:attention}sklepu{}", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", - }, - }, - j_cry_delirious = { - name = "Majaczący Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Dyskretny Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "gryzMoły", - text = { - "Tworzy 2 {C:dark_edition}Negatywy{} {C:attention}przedmiotów zużywalnych,{}", - "kiedy {C:attention}Przeszkadzajka{} jest wybrana", - "Tworzy 1 więcej {C:attention}przedmiot zużywalny", - "za każdego {C:attention}Wesołego Jokera{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Podwójna skala", - text = { - "Skalujące {C:attention}jokery{}", - "skalują się {C:attention}kwadratowo", - "{C:inactive,s:0.8}(np. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(rośną o +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Zrzut z góry", - text = { - "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika", - "za każdą kartę o kolorze {V:1}#2#{}, która {C:attention}nie zdobyła{} punktów", - "Kolor zmienia się co rundę", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#3# {C:inactive})", - }, - }, - j_cry_dubious = { - name = "Wątpliwy Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_duos = { - name = "Duety", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Ten joker zdobywa {X:mult,C:white} X#2# {} do mnożnika,", - "kiedy {C:attention}joker{} lub", - "karta rozgrwająca zdobywa punkty", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#1# {C:inactive})", - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Dobiera {C:green}pełną talię{} do ręki,", - "kiedy {C:attention}Przeszkadzajka{} jest wybrana", - "{C:inactive,s:0.8}\"Jeśli nie potrafisz mnie znieść przy 1x,", - "{C:inactive,s:0.8}to nie zasługujesz na mnie przy 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "Kiedy {C:attention}znacznik{} jest pozyskany,", - "tworzy jego {C:attention}#1#{} kopie", - "i {C:attention}zwiększa{} ilość", - "kopii o {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "As równowagi", - text = { - "Jokery pojawiają się", - "według kolejności z {C:attention}kolekcji{}", - "Tworzy {C:attention}#1#{} {C:dark_edition}Negatywy{} jokerów,", - "kiedy ręka jest zagrana", - "{C:cry_exotic,s:0.8}Egzotyczne {C:inactive,s:0.8}lub lepsze jokery nie mogą się pojawić", - "{s:0.8}Ostatni utworzony joker: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Wieczny płomień", - text = { - "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika", - "za każdą {C:attention}sprzedaną{} kartę", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", - }, - }, - j_cry_exoplanet = { - name = "Egzoplaneta", - text = { - "Wszystkie karty {C:dark_edition}holograficzne{}", - "dają mnoż. {C:mult}+#1#{}", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "Ten joker zdobywa {X:dark_edition,C:white} ^#1# {} do mnożnika,", - "kiedy {X:red,C:white} XMnożnik {} jest aktywowany", - "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white} ^#2# {C:inactive})", - }, - }, - j_cry_exposed = { - name = "Zdemaskowany", - text = { - "Aktywuj ponownie wszystkie {C:attention}karty numerowane{}", - "jeszcze {C:attention}#1#{} razy", - "Wszystkie {C:attention}figury karciane{} zostają osłabione", - }, - }, - j_cry_facile = { - name = "Łatwizna", - text = { - "Mnoż. {X:dark_edition,C:white}^#1#{}, jeśli", - "zagrane karty zdobyły punkty", - "{C:attention}#2#{} lub więcej razy", - }, - }, - j_cry_filler = { - name = "Wypełniacz", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fraktalne palce", - text = { - "{C:attention}+#1#{} do limitu wyboru kart", - }, - }, - j_cry_flip_side = { - name = "Z drugiej strony", - text = { - "{C:dark_edition}Dwustronne{} jokery używają", - "swojej tylnej strony do efektów", - "zamiast przedniej strony", - "{C:attention}Atywuj ponownie{} wszystkie {C:dark_edition}dwustronne{} jokery" - }, - }, - j_cry_foodm = { - name = "Fast Foodowe M", - text = { - "Mnoż. {C:mult}+#1#{}", - "{C:red,E:2}Ulega samozniszczeniu{} po {C:attention}#2#{} rundach", - "Wzrasta o {C:attention}#3#{} rund, jeśli", - "{C:attention}Wesoły Joker{} jest {C:attention}sprzedany{}", - "{C:inactive,s:0.8}2 McDouble, 2 McChickeny{}", - "{C:inactive,s:0.8}Duże Frytki, 20 Nuggetsów & Duża Cola{}", - }, - }, - j_cry_foolhardy = { - name = "Lekkomyślny Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_formidiulosus = { - name = "Formidiulosus", - text = { - "Kiedy {X:cry_cursed,C:white}przeklęty{} joker jest pozyskany, niszczy go", - "i tworzy {C:attention}#1#{} {C:dark_edition}Negatywy {C:cry_candy}Cukierków{} na koniec sklepu", - "Każdy posiadany {C:cry_candy}Cukierek{} daje {X:dark_edition,C:white}^#2#{} do mnożnika", - "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white}^#3#{C:inactive})", - }, - }, - j_cry_foxy = { - name = "Sprytny Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget spinner", - text = { - "Ten joker zdobywa {C:chips}+#2#{} do żetonów,", - "jeśli zagrana ręka {C:attention}nie jest{}", - "najczęściej granym {C:attention}układem pokerowym{}", - "{C:inactive}(obecnie: {C:chips}+#1#{C:inactive} żet.)", - }, - }, - j_cry_fuckedup = { - name = "Pierdolnięty Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_gardenfork = { - name = "Ogród rozgałęziających się ścieżek", - text = { - "Zyskujesz {C:money}$#1#{}, jeśli {C:attention}zagrana ręka{}", - "zawiera {C:attention}Asa{} i {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Bliźnięta", - text = { - "{C:attention}Podwaja{} wszystkie wartości", - "{C:attention}jokera najbardziej wysuniętego na lewo{}", - "na koniec rundy", - }, - }, - j_cry_ghost = { - name = "Duch", - text = { - "Na koniec rundy:", - "{C:green}#1# na #2#{} szans", - "na {C:attention}opętanie{} losowego {C:attention}jokera", - "{C:green}#1# na #3#{} szans na", - "{E:2,C:red}samozniszczenie" - } - }, - j_cry_giggly = { - name = "Absurdalny Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Złoty Joker", - text = { - "Zyskujesz {C:money}#1#%{} całkowitej", - "ilości pieniędzy na koniec rundy", - "Wypłata rośnie o {C:money}#2#%{} za każdym razem,", - "kiedy Karta {C:attention}Złota{}", - "zdobywa punkty", - }, - }, - j_cry_googol_play = { - name = "Karta Googol Play", - text = { - "{C:green}#1# na #2#{} szans", - "na mnoż. {X:red,C:white} X#3# {}", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Tworzy losowego {C:attention}jokera{}", - "na końcu rundy", - "Sprzedaj tę kartę,", - "aby stworzyć losowego {C:attention}jokera{}", - "{C:inactive}(wymaga miejsca){}", - }, - }, - j_cry_happyhouse = { - name = "Szczęśliwy dom", - text = { - "Mnożnik {X:dark_edition,C:white}^#1#{} po zagraniu", - "{C:attention}114{} rąk{}", - "{C:inactive}(Obecnie #2#/114){}", - "{C:inactive,s:0.8}Nie ma jak w domu!{}", - }, - }, - j_cry_home = { - name = "Dom", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Do schrupania", - text = { - "Zyskujesz {C:money}$#1#{}, kiedy", - "używasz {C:attention}przedmiotu zużywalnego{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Aktywuj ponownie wszystkie zagrane karty", - "{C:attention}#2#{} razy,", - "Każda zagrana karta zdobywa", - "mnoż. {X:mult,C:white} X#1# {} kiedy zdobywa punkty", - }, - }, - j_cry_jawbreaker = { - name = "Łamiszczęka", - text = { - "Kiedy {C:attention}Przeszkadzajka{} jest pokonana,", - "{C:attention}podwaja{} wartości sąsiadujących jokerów", - "{E:2,C:red}Ulega samozniszczeniu{}", - } - }, - j_cry_jimball = { - name = "Jimball", - text = { - "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika", - "za {C:kattention}kolejne{} zagrywane ręce", - "z twoim", - "najczęściej zagrywanym {C:attention}układem pokerowym", - "{C:inactive}(obecny mnoż. {X:mult,C:white} X#2# {C:inactive}", - }, - }, - j_cry_jollysus = { - name = "Wesoły Joker?", - text = { - "Tworzy {C:dark_edition}Wesołego{} Jokera,", - "kiedy joker jest {C:attention}sprzedany{}", - "{C:red}Działa raz na rundę{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Wygląda legitnie...{}", - }, - }, - j_cry_kidnap = { - name = "Porwanie", - text = { - "Zyskujesz {C:money}$#2#{} na końcu rundy", - "Wypłata rośnie o {C:money}$#1#{}", - "kiedy Joker {C:attention}mnożnikowy{} lub", - "{C:attention}żetonowy{} zostaje sprzedany", - }, - }, - j_cry_kooky = { - name = "Szurnięty Joker", - text = { - "Mnożnik {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Klaun Krusty", - text = { - "Ten joker zdobywa", - "{X:mult,C:white} X#1# {} do mnożnika,", - "kiedy każda zagrana {C:attention}karta{} zdobywa punkty", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", - }, - }, - j_cry_kscope = { - name = "Kalejdoskop", - text = { - "Dodaje {C:dark_edition}polichromowanie{} do", - "losowego {C:attention}jokera{}, kiedy", - "pokonana zostanie {C:attention}Przeszkadzajka Bossa{}", - }, - }, - j_cry_lightupthenight = { - name = "Rozświetlenie nocy", - text = { - "Każda zagrana {C:attention}7{} lub {C:attention}2{}", - "daje mnoż. {X:mult,C:white}X#1#{}, kiedy zdobywa punkty", - }, - }, - j_cry_longboi = { - name = "Potwór", - text = { - "Daje przyszłym kopiom", - "tego jokera mnoż. {X:mult,C:white}X#1#{}", - "na koniec rundy", - "{C:inactive}(obecny mnoż.: {X:mult,C:white}X#2#{C:inactive}){}", - }, - }, - j_cry_loopy = { - name = "Zawijas", - text = { - "{C:attention}Aktywuje ponownie{} wszystkie jokery", - "za każdego {C:attention}Wesołego{}", - "{C:attention}Jokera{} sprzedanego w tym podejściu", - "{C:inactive}(obecnie:{}{C:attention:} #1#{}{C:inactive} ponownych aktywacji){}", - "{C:inactive,s:0.8}nie było wystarczająco miejsca...{}", - }, - }, - j_cry_lucky_joker = { - name = "Szczęśliwy Joker", - text = { - "Zyskujesz {C:money}$#1#{} za każdym razem,", - "kiedy {C:attention}Karta Szczęścia{} zostaje", - "{C:green}skutecznie aktywowana{}", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "Wszystkie jokery dają", - "{X:chips,C:white} X#1# {} żet.", - }, - }, - j_cry_m = { - name = "m", - text = { - "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika,", - "kiedy {C:attention}Wesoły Joker{} zostaje sprzedany", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", - }, - }, - j_cry_M = { - name = "M", - text = { - "Tworzy {C:dark_edition}Negatyw{}", - "{C:attention}Wesołego Jokera{}, kiedy", - "{C:attention}przeszkadzajka{} jest wybrana", - }, - }, - j_cry_macabre = { - name = "Makabryczny Joker", - text = { - "Kiedy {C:attention}przeszkadzajka{} jest wybrana,", - "niszczy każdego {C:attention}jokera{} oprócz", - "{C:legendary}M Jokerów{} i {C:attention}Wesołych Jokerów{}", - "i tworzy 1 {C:attention}Wesołego Jokera{}", - "za każdego zniszczonego jokera", - }, - }, - j_cry_magnet = { - name = "Magnes na lodówkę", - text = { - "Zyskujesz {C:money}$#1#{} na końcu rundy", - "Zyskujesz {X:money,C:white} X#2# {} więcej, jeśli posiadasz", - "{C:attention}#3#{} lub mniej {C:attention}jokerów{}", - }, - }, - j_cry_manic = { - name = "Maniakalny Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Aktywuje ponownie wszystkie jokery", - "jeszcze {C:attention}#1#{} razy", - }, - }, - j_cry_mask = { - name = "Maska", - text = { - "Uruchom ponownie wszystkie {C:attention}figury karciane{}", - "jeszcze {C:attention}#1#{} razy", - "Wszystkie {C:attention}numerowane karty{} zostają osłabione", - }, - }, - j_cry_maximized = { - name = "Na maksa", - text = { - "Wszystkie {C:attention}figury karciane{}", - "są traktowane jako {C:attention}Królowie{},", - "wszystkie {C:attention}numerowane karty{}", - "są traktowane jako {C:attention}10-tki{}", - }, - }, - j_cry_maze = { - name = "Labirynt", - text = { - "Wszystkie ręce są traktowane jako", - "{C:attention}pierwsza ręka{} rundy,", - "wszystkie zrzutki są traktowane jako", - "{C:attention}pierwsza zrzutka{} rundy", - }, - }, - j_cry_Megg = { - name = "M-Jajko", - text = { - "Sprzedaj tę kartę, aby stworzyć", - "{C:attention}#2#{} {C:attention}Wesołych Jokerów{}, liczba rośnie", - "o {C:attention}#1#{} na koniec rundy", - }, - }, - j_cry_mellowcreme = { - name = "Cukierkowa dynia", - text = { - "Sprzedaj tę kartę, aby {C:attention}pomnożyć", - "wartość sprzedaży wszystkich", - "{C:attention}przedmiotów zużywalnych{} o {C:attention}X#1#" - } - }, - j_cry_membershipcard = { - name = "Karta członkowska", - text = { - "Mnoż. {X:mult,C:white}X#1#{} za każdego członka", - "discordowego serwera {C:attention}Cryptid{}", - "{C:inactive}(obecny mnoż.: {X:mult,C:white}X#2#{C:inactive}", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Dawna karta członkowska", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} za każdego członka", - "discordowego serwera {C:attention}Cryptid{}", - "{C:inactive}(obecnie: {C:chips}+#2#{C:inactive} żet.)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Rój meteorów", - text = { - "Wszystkie karty {C:dark_edition}w folii{}", - "dają {C:chips}+#1#{} żet.", - }, - }, - j_cry_mneon = { - name = "Neonowe M", - text = { - "Na koniec rundy zyskujesz {C:money}$#2#{}", - "Wypłata zwiększa się", - "o {C:money}$#1#{} za każdego {C:attention}Wesołego Jokera{}", - "lub {C:legendary}M Jokera{} na", - "koniec rundy", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika,", - "jeśli nie skorzystano ze {C:attention}zrzutek{}", - "do końca tej rundy", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", - }, - }, - j_cry_monkey_dagger = { - name = "Małpi sztylet", - text = { - "Po wybraniu {C:attention}przeszkadzajki{},", - "niszczy jokera po lewej", - "i na stałe dodaje {C:attention}10-krototność{}", - "jego wartości sprzedaży do {C:chips}żetonów{}", - "{C:inactive}(obecnie: {C:chips}+#1#{C:inactive} żet.)", - }, - }, - j_cry_monopoly_money = { - name = "Monopolowe pieniądze", - text = { - "{C:green}#1# na #2#{} szans na", - "{C:attention}zniszczenie{} zakupionych przedmiotów", - "Obniża pieniądze o połowę po {C:attention}sprzedaży{} tej karty", - } - }, - j_cry_morse = { - name = "Kod Morse’a", - text = { - "Zyskujesz {C:money}$#2#{} na końcu rundy", - "Wypłata rośnie o {C:money}$#1#{}, kiedy", - "karta z {C:attention}edycją{} zostaje sprzedana", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Tworzy {C:legendary}M Jokera{} na koniec rundy", - "Każdy {C:attention}Wesoły Joker{} lub {C:legendary}M Joker", - "daje {X:dark_edition,C:white}^#1#{} do mnożnika", - "Zwiększa ilość o {X:dark_edition,C:white}^#2#{},", - "kiedy {C:attention}Wesoły Joker{} jest {C:attention}sprzedany", - "{C:inactive,s:0.8}(Tredecim nie może być stworzony)", - }, - }, - j_cry_mstack = { - name = "Stos M", - text = { - "Aktywuj ponownie wszystkie zagrane karty", - "za każde", - "{C:attention}#2#{} {C:inactive}[#3#]{} sprzedane {C:attention}Wesołe Jokery{}", - "{C:inactive}(obecnie{}{C:attention:} #1#{}{C:inactive} ponownych aktywacji){}", - }, - }, - j_cry_multjoker = { - name = "Mnożnikowy Joker", - text = { - "{C:green}#1# na #2#{} szans dla każdej", - "zagranej karty {C:attention}Karty Mnożnikowej{} na stworzenie", - "{C:spectral}Kryptydy{} po zdobyciu punktów", - "{C:inactive}(wymaga miejsca)", - }, - }, - j_cry_necromancer = { - name = "Nekromanta", - text = { - "Kiedy joker jest {C:attention}sprzedany{} za więcej niż {C:attention}$0{},", - "otrzymujesz {C:attention}losowego{} jokera {C:attention}sprzedanego{} w tym podejściu", - "o wartości {C:money}$0{}", + }, + }, + e_cry_glass = { + name = "Krucha", + label = "Fragile", + text = { + "Mnoż. {C:white,X:mult} X#3# {}", + "{C:green}#1# na #2#{} szans", + "że ta karta {C:red}nie ulegnie zniszczeniu", + "kiedy zostanie aktywowana", + }, + }, + e_cry_glitched = { + name = "Zglitchowana", + text = { + "Wszystkie wartości tej karty", + "są {C:dark_edition}losowe{}", + "pomiędzy {C:attention}X0.1{} a {C:attention}X10{}", + "{C:inactive}(Jeśli to możliwe){}", + }, + }, + e_cry_gold = { + name = "Złota", + label = "Golden", + text = { + "Zarabiasz {C:money}$#1#{} kiedy zostaje użyta", + "lub uruchomiona", + }, + }, + e_cry_m = { + name = "Wesoła", + text = { + "Mnoż. {C:mult}+#1#{}", + "Ta karta jest", + "raczej {C:attention}wesoła{}", + }, + }, + e_cry_mosaic = { + name = "Mozaiczna", + text = { + "{X:chips,C:white} X#1# {} żet.", + }, + }, + e_cry_noisy = { + name = "Hałaśliwa", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Przesycona", + text = { + "Wszystkie wartości", + "na tej karcie", + "są {C:attention}podwojone{}", + "{C:inactive}(Jeśli to możliwe)", + }, + }, }, - }, - j_cry_negative = { - name = "Negatywny Joker", - text = { - "{C:dark_edition}+#1# sloty na{C:attention} jokery{}", - }, - }, - j_cry_nice = { - name = "Najs", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana ręka", - "zawiera {C:attention}6{} i {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Noc", - text = { - "Mnoż. {X:dark_edition,C:white}^#1#{}", - "w ostatniej ręce rundy", - "{E:2,C:red}Ulega samozniszczeniu{}", - "w ostatniej ręce rundy", - }, - }, - j_cry_nosound = { - name = "Bez dźwięku, bez wspomnienia", - text = { - "Aktywuj ponownie każdą zagraną {C:attention}7{}", - "jeszcze {C:attention:}#1#{} razy", - }, - }, - j_cry_notebook = { - name = "Zeszyt", - text = { - "{C:green} #1# na #2#{} szans na {C:dark_edition}+1{} slot na jokera", - "za {C:attention}ponowny rzut{} w sklepie", - "{C:green}Zawsze aktywuje się,{} jeśli", - "posiadasz {C:attention}#5#{} lub więcej {C:attention}Wesołych Jokerów{}", - "{C:red}Działa raz na rundę{}", - "{C:inactive}(obecnie: {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Klocki liczbowe", - text = { - "Zdobywasz {C:money}$#1#{} na koniec rundy", - "Wypłata zwiększa się o {C:money}$#2#{}", - "za każdą kartę {C:attention}#3#{} trzymaną w ręcę,", - "ranga zmienia się co rundę", - }, - }, - j_cry_nuts = { - name = "Orzeszki", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Bzikowaty Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_oil_lamp = { - name = "Lampa naftowa", - text = { - "Zwiększa wartości {C:attention}jokera{} po prawej stronie", - "o {C:attention}X#1#{} na koniec rundy", + Enhanced = { + m_cry_echo = { + name = "Karta Echa", + text = { + "{C:green}#2# na #3#{} szans", + "na {C:attention}ponowną aktywacje{} dodatkowe #1#", + "razy kiedy zdobywa punkty", + }, + }, }, - }, - j_cry_oldblueprint = { - name = "Dawna światłokopia", - text = { - "Powiela zdolność", - "{C:attention}jokera{} na prawo", - "{C:green}#1# na #2#{} szans, że ta", - "karta zostanie zniszczona", - "na końcu rundy", - }, - }, - j_cry_oldcandy = { - name = "Nostalgiczny cukierek", - text = { - "Sprzedaj tę kartę,", - "aby na stałe zyskać", - "{C:attention}+#1#{} do rozmiaru ręki", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgiczny Niewidzialny Joker", - text = { - "{C:attention}Kopiuje{} losowego", - "{C:attention}joker{} co {C:attention}4", - "sprzedane jokery", - "{s:0.8}oprócz Nostalgicznego Niewidzialnego Jokera{}", - "{C:inactive}(obecnie: #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panoptykon", - text = { - "Wszystkie ręce są traktowane", - "jako {C:attention}ostatnia ręka{}", -- +$4 - }, - }, - j_cry_penetrating = { - name = "Penetrujący Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_pickle = { - name = "Ogór", - text = { - "Kiedy {C:attention}przeszkadzajka{} jest pominięta, tworzy", - "{C:attention}#1#{} znaczniki, zmniejsza się", - "o {C:red}#2#{} kiedy {C:attention}przeszkadzajka{} zostaje wybrana", - }, - }, - j_cry_pirate_dagger = { - name = "Piracki sztylet", - text = { - "Po wybraniu {C:attention}przeszkadzajki{},", - "niszczy jokera po prawej", - "oraz na stałe dodaje {C:attention}0,25{} jego", - "wartości sprzedaży do {X:chips,C:white} mnoż. żetonów {}", - "{C:inactive}(obecny mnoż. żetonów: {X:chips,C:white} X#1# {C:inactive})", - }, - }, + Joker = { + j_cry_adroit = { + name = "Zręczny Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_altgoogol = { + name = "Nostalgiczna karta Googol Play", + text = { + "Sprzedaj tę kartę, aby stworzyć", + "{C:attention}2{} kopie {C:attention}jokera najbardziej wysuniętego na lewo{}", + "{C:inactive,s:0.8}Nie kopiuje Nostalgicznej Karty Googol Play{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Niczym anteny do nieba", + text = { + "Ten joker zdobywa", + "{X:chips,C:white} X#1# {} żet., kiedy każda", + "zagrana {C:attention}7{} lub {C:attention}4{} zdobywa punkty", + "{C:inactive}(obecny mnoż. żetonów: {X:chips,C:white}X#2# {C:inactive})", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "Mnoż. {X:mult,C:white} X#1# {} przeciwko {C:attention}Przeszkadzajkom Bossa{}" }, + }, + j_cry_astral_bottle = { + name = "Astral w butelce", + text = { + "Kiedy ten joker jest sprzedany, {C:attention}losowy joker{}", + "staje się {C:dark_edition}astralny{} i", + "{C:attention}nietrwały{}", + }, + }, + j_cry_big_cube = { + name = "Duża kostka", + text = { + "{X:chips,C:white} X#1# {} żet.", + }, + }, + j_cry_biggestm = { + name = "ogroMny", + text = { + "Mnoż. {X:mult,C:white} X#1# {} do końca rundy", + "jeśli {C:attention}zagrana ręka{}", + "to {C:attention}#2#{}", + "{C:inactive}(obecnie: {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}nie jestem gruby, jestem grubokościsty!", + }, + }, + j_cry_blacklist = { + name = "Czarna lista", + text = { + "Jeśli karta o randze {C:attention}#1#{} jest w dłoni lub zdobywa punkty,", + "ustawia {C:chips}żetony{} i {C:mult}mnożnik{} na 0", + "{C:red,E:2}Ulega samozniszczeniu{} jeśli kart o randze {C:attention}#1#{} nie będzie w talii ", + "{C:inactive,s:0.8}Ranga się nie zmienia", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Tworzy {C:attention}losowy{}", + "przedmiot zużywalny, kiedy", + "{C:cry_code}Karta Kodowa{} jest użyta", + "{C:inactive}(wymaga miejsca){}", + }, + }, + j_cry_blurred = { + name = "Niewyraźny Joker", + text = { + "Zyskujesz {C:blue}+#1#{} do ręki,", + "kiedy {C:attention}przeszkadzajka{} jest wybrana", + }, + }, + j_cry_bonk = { + name = "Bęc!", + text = { + "Każdy {C:attention}joker{} daje {C:chips}+#1#{} żet.", + "Zwiększa ilość o {C:chips}+#2#{}, jeśli", + "zagrana {C:attention}ręka{} to {C:attention}#3#{}", + "{C:inactive,s:0.8}Wesołe Jokery{} dostają {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}żet.{}", + }, + }, + j_cry_bonkers = { + name = "Porąbany Joker", + text = { + "Mnoż. {C:red}+#1#{} jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_bonusjoker = { + name = "Bonusowy Joker", + text = { + "{C:green}#1# na #2#{} szans dla każdej", + "zagranej {C:attention}Karty Bonusowej{} na zwiększenie", + "slotów na {C:attention}jokera{} lub {C:attention}przedmioty zużywalne", + "o {C:dark_edition}1{} po zdobyciu punktów", + "{C:red}Działa dwa razy na rundę", + "{C:inactive,s:0.8}(Równa szansa dla każdej){}", + }, + }, + j_cry_booster = { + name = "Wzmacniający Joker", + text = { + "{C:attention}+#1#{} slot na paczkę wzmacniającą", + "w sklepie", + }, + }, + j_cry_boredom = { + name = "Znudzenie", + text = { + "{C:green}#1# na #2#{} szans na", + "{C:attention}ponowną aktywację{} każdego {C:attention}jokera{}", + "lub {C:attention}karty rozgrywającej{}", + "{C:inactive,s:0.8}nie dotyczy Znudzenia{}", + }, + }, + j_cry_brittle = { + name = "Krokantowy cukierek", + text = { + "Przez następne {C:attention}#1#{} rąk,", + "aplikuje Kartę {C:attention}Kamienną{}, {C:attention}Złotą{} lub {C:attention}Stalową{} do", + "najbardziej wysuniętej na prawo karty, która zdobyła punkty", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Tworzy {C:attention}Wesołego Jokera{} {C:dark_edition}w folii,", + "jeśli zagrana", + "ręka zawiera {C:attention}#1#{}", + "{C:red,E:2}Ulega samozniszczeniu{}", + }, + }, + j_cry_busdriver = { + name = "Kierowca busa", + text = { + "{C:green}#1# na #3#{} szans", + "na mnoż. {C:mult}+#2#{}", + "{C:green}1 na 4{} szans", + "na mnoż. {C:mult}-#2#{}", + }, + }, + j_cry_candy_basket = { + name = "Kosz słodyczy", + text = { + "Sprzedaj tę kartę, aby stworzyć {C:attention}#1#{} {C:cry_candy}Cukierków", + "{C:attention}+#2#{} {C:cry_candy}Cukierek{} co {C:attention}2{} pokonane przeszkadzajki", + "{C:attention}+#3#{} {C:cry_candy}Cukierki{}, kiedy {C:attention}Przeszkadzajka Bossa{} jest pokonana", + }, + }, + j_cry_candy_buttons = { + name = "Guziki cukierkowe", + text = { + "Następne {C:attention}#1#{} ponownych rzutów", + "kosztuje {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Laska cukrowa", + text = { + "Przez następne {C:attention}#1#{} rund,", + "zagrane karty dają {C:money}$#2#,", + "kiedy są {C:attention}aktywowane ponownie", + }, + }, + j_cry_candy_dagger = { + name = "Cukierkowy sztylet", + text = { + "Kiedy {C:attention}Przeszkadzajka{} jest wybrana,", + "niszczy jokera po prawej", + "i tworzy {C:cry_candy}Cukierka{}", + }, + }, + j_cry_candy_sticks = { + name = "Cukrowe Pałeczki", + text = { + "Efekt przeszkadzajki następnego bossa nie jest aktywny,", + "dopóki nie zagrasz {C:attention}#1#{} ręki", + }, + }, + j_cry_canvas = { + name = "Płótno", + text = { + "{C:attention}Aktywuj ponownie{} wszystkie {C:attention}jokery{} z lewej strony", + "za {C:attention}każdego{} {C:blue}niepospolitego{C:attention} jokera{}", + "po prawej stronie", + }, + }, + j_cry_caramel = { + name = "Karmel", + text = { + "Każda zagrana karta", + "daje mnoż. {X:mult,C:white}X#1#{} przy zdobyciu punktów", + "przez następne {C:attention}#2#{} rund", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Aktywuje {C:attention}jokera najbardziej wysuniętego na lewo{}", + "jeszcze {C:attention}#1#{} razy", + }, + }, + j_cry_chili_pepper = { + name = "Papryczka chilli", + text = { + "Ten joker zdobywa {X:mult,C:white} X#2# {} do mnożnika", + "na końcu rundy,", + "{C:red,E:2}Ulega samozniszczeniu{} po {C:attention}#3#{} rundach", + "{C:inactive}(obecny mnoż.:{} {X:mult,C:white} X#1# {}", + }, + }, + j_cry_chocolate_dice = { + name = "Czekoladowa kostka", + text = { + "Rzuca {C:green}kostką d10{}, kiedy", + "{C:attention}Przeszkadzajka Bossa{} jest pokonana,", + "aby zacząć {C:cry_ascendant,E:1}zdarzenie", + "{C:inactive}(obecne zdarzenie: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} żet. i mnoż. {X:dark_edition,C:white}^#1#{}, jeśli", + "zostały {C:attention}dokładnie{} #2#", + "ręce", + }, + }, + j_cry_circus = { + name = "Cyrk", + text = { + "{C:red}Rzadkie{} jokery dają mnoż. {X:mult,C:white} X#1# {}", + "{C:cry_epic}Epickie{} jokery dają mnoż. {X:mult,C:white} X#2# {}", + "{C:legendary}Legendarne{} jokery dają mnoż. {X:mult,C:white} X#3# {}", + "{C:cry_exotic}Egzotyczne{} jokery dają mnoż. {X:mult,C:white} X#4# {}", + }, + }, + j_cry_clash = { + name = "Starcie", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_CodeJoker = { + name = "Kodowy Joker", + text = { + "Tworzy {C:dark_edition}Negatyw{}", + "{C:cry_code}Karty Kodowej{}, kiedy", + "{C:attention}przeszkadzajka{} jest wybrana", + }, + }, + j_cry_coin = { + name = "Kryptomoneta", + text = { + "Zyskujesz pomiędzy", + "{C:money}$#1#{} a {C:money}$#2#{} za", + "każdego {C:attention}sprzedanego{} jokera", + }, + }, + j_cry_compound_interest = { + name = "Odsetkowy szał", + text = { + "Zdobywasz {C:money}#1#%{} całkowitej ilości pieniędzy", + "na koniec rundy,", + "zwiększa się o {C:money}#2#%{} przy", + "każdej następnej wypłacie", + }, + }, + j_cry_copypaste = { + name = "Kopiuj/Wklej", + text = { + "Kiedy {C:cry_code}Karta Kodowa{} jest użyta,", + "{C:green}#1# na #2#{} szans na dodanie jej kopii", + "do twojego obszaru przedmiotów zużywalnych", + "{C:inactive}(wymaga miejsce)", + }, + }, + j_cry_cotton_candy = { + name = "Wata cukrowa", + text = { + "Kiedy ta karta zostaje sprzedana, sąsiadujące", + "{C:attention}jokery{} dostają {C:dark_edition}Negatywy{}", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "Ten joker zdobywa {C:chips}+#2#{} do żet.", + "za {C:attention}ponowny rzut{} w sklepie", + "{C:green}Wszystkie ponowne rzuty są darmowe{}", + "{C:inactive}(obecnie: {C:chips}+#1#{C:inactive} żet.)", + }, + }, + j_cry_cryptidmoment = { + name = "M Łańcuch", + text = { + "Sprzedaj tę kartę,", + "aby dodać {C:money}$#1#{} {C:attention}wartości sprzedaży{}", + "do każdego {C:attention}jokera{}", + }, + }, + j_cry_cube = { + name = "Sześcian", + text = { + "{C:chips}+#1#{} żet.", + }, + }, + j_cry_curse_sob = { + name = "Szloch", + text = { + "{C:edition,E:1}nie możesz{} {C:cry_ascendant,E:1}biec...{}", + "{C:edition,E:1}nie możesz{} {C:cry_ascendant,E:1}się ukryć...{}", + "{C:dark_edition,E:1}nie możesz uciec...{}", + "{C:inactive}(wymaga miejsca){}", + }, + }, + j_cry_cursor = { + name = "Kursor", + text = { + "Ten joker zdobywa {C:chips}+#2#{} żet.", + "za każdą {C:attention}kupioną{} kartę", + "{C:inactive}(obecnie {C:chips}+#1#{C:inactive} żet.)", + }, + }, + j_cry_cut = { + name = "Cięcie", + text = { + "Ten joker niszczy", + "losową {C:cry_code}Kartę Kodową{}", + "i zyskuje {X:mult,C:white} X#1# {} do mnożnika", + "na koniec {C:attention}sklepu{}", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", + }, + }, + j_cry_delirious = { + name = "Majaczący Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Dyskretny Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "gryzMoły", + text = { + "Tworzy 2 {C:dark_edition}Negatywy{} {C:attention}przedmiotów zużywalnych,{}", + "kiedy {C:attention}Przeszkadzajka{} jest wybrana", + "Tworzy 1 więcej {C:attention}przedmiot zużywalny", + "za każdego {C:attention}Wesołego Jokera{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Podwójna skala", + text = { + "Skalujące {C:attention}jokery{}", + "skalują się {C:attention}kwadratowo", + "{C:inactive,s:0.8}(np. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(rośną o +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Zrzut z góry", + text = { + "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika", + "za każdą kartę o kolorze {V:1}#2#{}, która {C:attention}nie zdobyła{} punktów", + "Kolor zmienia się co rundę", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#3# {C:inactive})", + }, + }, + j_cry_dubious = { + name = "Wątpliwy Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_duos = { + name = "Duety", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Ten joker zdobywa {X:mult,C:white} X#2# {} do mnożnika,", + "kiedy {C:attention}joker{} lub", + "karta rozgrwająca zdobywa punkty", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#1# {C:inactive})", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Dobiera {C:green}pełną talię{} do ręki,", + "kiedy {C:attention}Przeszkadzajka{} jest wybrana", + '{C:inactive,s:0.8}"Jeśli nie potrafisz mnie znieść przy 1x,', + '{C:inactive,s:0.8}to nie zasługujesz na mnie przy 2x"', + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "Kiedy {C:attention}znacznik{} jest pozyskany,", + "tworzy jego {C:attention}#1#{} kopie", + "i {C:attention}zwiększa{} ilość", + "kopii o {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "As równowagi", + text = { + "Jokery pojawiają się", + "według kolejności z {C:attention}kolekcji{}", + "Tworzy {C:attention}#1#{} {C:dark_edition}Negatywy{} jokerów,", + "kiedy ręka jest zagrana", + "{C:cry_exotic,s:0.8}Egzotyczne {C:inactive,s:0.8}lub lepsze jokery nie mogą się pojawić", + "{s:0.8}Ostatni utworzony joker: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Wieczny płomień", + text = { + "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika", + "za każdą {C:attention}sprzedaną{} kartę", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", + }, + }, + j_cry_exoplanet = { + name = "Egzoplaneta", + text = { + "Wszystkie karty {C:dark_edition}holograficzne{}", + "dają mnoż. {C:mult}+#1#{}", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "Ten joker zdobywa {X:dark_edition,C:white} ^#1# {} do mnożnika,", + "kiedy {X:red,C:white} XMnożnik {} jest aktywowany", + "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white} ^#2# {C:inactive})", + }, + }, + j_cry_exposed = { + name = "Zdemaskowany", + text = { + "Aktywuj ponownie wszystkie {C:attention}karty numerowane{}", + "jeszcze {C:attention}#1#{} razy", + "Wszystkie {C:attention}figury karciane{} zostają osłabione", + }, + }, + j_cry_facile = { + name = "Łatwizna", + text = { + "Mnoż. {X:dark_edition,C:white}^#1#{}, jeśli", + "zagrane karty zdobyły punkty", + "{C:attention}#2#{} lub więcej razy", + }, + }, + j_cry_filler = { + name = "Wypełniacz", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fraktalne palce", + text = { + "{C:attention}+#1#{} do limitu wyboru kart", + }, + }, + j_cry_flip_side = { + name = "Z drugiej strony", + text = { + "{C:dark_edition}Dwustronne{} jokery używają", + "swojej tylnej strony do efektów", + "zamiast przedniej strony", + "{C:attention}Atywuj ponownie{} wszystkie {C:dark_edition}dwustronne{} jokery", + }, + }, + j_cry_foodm = { + name = "Fast Foodowe M", + text = { + "Mnoż. {C:mult}+#1#{}", + "{C:red,E:2}Ulega samozniszczeniu{} po {C:attention}#2#{} rundach", + "Wzrasta o {C:attention}#3#{} rund, jeśli", + "{C:attention}Wesoły Joker{} jest {C:attention}sprzedany{}", + "{C:inactive,s:0.8}2 McDouble, 2 McChickeny{}", + "{C:inactive,s:0.8}Duże Frytki, 20 Nuggetsów & Duża Cola{}", + }, + }, + j_cry_foolhardy = { + name = "Lekkomyślny Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_formidiulosus = { + name = "Formidiulosus", + text = { + "Kiedy {X:cry_cursed,C:white}przeklęty{} joker jest pozyskany, niszczy go", + "i tworzy {C:attention}#1#{} {C:dark_edition}Negatywy {C:cry_candy}Cukierków{} na koniec sklepu", + "Każdy posiadany {C:cry_candy}Cukierek{} daje {X:dark_edition,C:white}^#2#{} do mnożnika", + "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white}^#3#{C:inactive})", + }, + }, + j_cry_foxy = { + name = "Sprytny Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget spinner", + text = { + "Ten joker zdobywa {C:chips}+#2#{} do żetonów,", + "jeśli zagrana ręka {C:attention}nie jest{}", + "najczęściej granym {C:attention}układem pokerowym{}", + "{C:inactive}(obecnie: {C:chips}+#1#{C:inactive} żet.)", + }, + }, + j_cry_fuckedup = { + name = "Pierdolnięty Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_gardenfork = { + name = "Ogród rozgałęziających się ścieżek", + text = { + "Zyskujesz {C:money}$#1#{}, jeśli {C:attention}zagrana ręka{}", + "zawiera {C:attention}Asa{} i {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Bliźnięta", + text = { + "{C:attention}Podwaja{} wszystkie wartości", + "{C:attention}jokera najbardziej wysuniętego na lewo{}", + "na koniec rundy", + }, + }, + j_cry_ghost = { + name = "Duch", + text = { + "Na koniec rundy:", + "{C:green}#1# na #2#{} szans", + "na {C:attention}opętanie{} losowego {C:attention}jokera", + "{C:green}#1# na #3#{} szans na", + "{E:2,C:red}samozniszczenie", + }, + }, + j_cry_giggly = { + name = "Absurdalny Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Złoty Joker", + text = { + "Zyskujesz {C:money}#1#%{} całkowitej", + "ilości pieniędzy na koniec rundy", + "Wypłata rośnie o {C:money}#2#%{} za każdym razem,", + "kiedy Karta {C:attention}Złota{}", + "zdobywa punkty", + }, + }, + j_cry_googol_play = { + name = "Karta Googol Play", + text = { + "{C:green}#1# na #2#{} szans", + "na mnoż. {X:red,C:white} X#3# {}", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Tworzy losowego {C:attention}jokera{}", + "na końcu rundy", + "Sprzedaj tę kartę,", + "aby stworzyć losowego {C:attention}jokera{}", + "{C:inactive}(wymaga miejsca){}", + }, + }, + j_cry_happyhouse = { + name = "Szczęśliwy dom", + text = { + "Mnożnik {X:dark_edition,C:white}^#1#{} po zagraniu", + "{C:attention}114{} rąk{}", + "{C:inactive}(Obecnie #2#/114){}", + "{C:inactive,s:0.8}Nie ma jak w domu!{}", + }, + }, + j_cry_home = { + name = "Dom", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Do schrupania", + text = { + "Zyskujesz {C:money}$#1#{}, kiedy", + "używasz {C:attention}przedmiotu zużywalnego{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Aktywuj ponownie wszystkie zagrane karty", + "{C:attention}#2#{} razy,", + "Każda zagrana karta zdobywa", + "mnoż. {X:mult,C:white} X#1# {} kiedy zdobywa punkty", + }, + }, + j_cry_jawbreaker = { + name = "Łamiszczęka", + text = { + "Kiedy {C:attention}Przeszkadzajka{} jest pokonana,", + "{C:attention}podwaja{} wartości sąsiadujących jokerów", + "{E:2,C:red}Ulega samozniszczeniu{}", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika", + "za {C:kattention}kolejne{} zagrywane ręce", + "z twoim", + "najczęściej zagrywanym {C:attention}układem pokerowym", + "{C:inactive}(obecny mnoż. {X:mult,C:white} X#2# {C:inactive}", + }, + }, + j_cry_jollysus = { + name = "Wesoły Joker?", + text = { + "Tworzy {C:dark_edition}Wesołego{} Jokera,", + "kiedy joker jest {C:attention}sprzedany{}", + "{C:red}Działa raz na rundę{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Wygląda legitnie...{}", + }, + }, + j_cry_kidnap = { + name = "Porwanie", + text = { + "Zyskujesz {C:money}$#2#{} na końcu rundy", + "Wypłata rośnie o {C:money}$#1#{}", + "kiedy Joker {C:attention}mnożnikowy{} lub", + "{C:attention}żetonowy{} zostaje sprzedany", + }, + }, + j_cry_kooky = { + name = "Szurnięty Joker", + text = { + "Mnożnik {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Klaun Krusty", + text = { + "Ten joker zdobywa", + "{X:mult,C:white} X#1# {} do mnożnika,", + "kiedy każda zagrana {C:attention}karta{} zdobywa punkty", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", + }, + }, + j_cry_kscope = { + name = "Kalejdoskop", + text = { + "Dodaje {C:dark_edition}polichromowanie{} do", + "losowego {C:attention}jokera{}, kiedy", + "pokonana zostanie {C:attention}Przeszkadzajka Bossa{}", + }, + }, + j_cry_lightupthenight = { + name = "Rozświetlenie nocy", + text = { + "Każda zagrana {C:attention}7{} lub {C:attention}2{}", + "daje mnoż. {X:mult,C:white}X#1#{}, kiedy zdobywa punkty", + }, + }, + j_cry_longboi = { + name = "Potwór", + text = { + "Daje przyszłym kopiom", + "tego jokera mnoż. {X:mult,C:white}X#1#{}", + "na koniec rundy", + "{C:inactive}(obecny mnoż.: {X:mult,C:white}X#2#{C:inactive}){}", + }, + }, + j_cry_loopy = { + name = "Zawijas", + text = { + "{C:attention}Aktywuje ponownie{} wszystkie jokery", + "za każdego {C:attention}Wesołego{}", + "{C:attention}Jokera{} sprzedanego w tym podejściu", + "{C:inactive}(obecnie:{}{C:attention:} #1#{}{C:inactive} ponownych aktywacji){}", + "{C:inactive,s:0.8}nie było wystarczająco miejsca...{}", + }, + }, + j_cry_lucky_joker = { + name = "Szczęśliwy Joker", + text = { + "Zyskujesz {C:money}$#1#{} za każdym razem,", + "kiedy {C:attention}Karta Szczęścia{} zostaje", + "{C:green}skutecznie aktywowana{}", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "Wszystkie jokery dają", + "{X:chips,C:white} X#1# {} żet.", + }, + }, + j_cry_m = { + name = "m", + text = { + "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika,", + "kiedy {C:attention}Wesoły Joker{} zostaje sprzedany", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", + }, + }, + j_cry_M = { + name = "M", + text = { + "Tworzy {C:dark_edition}Negatyw{}", + "{C:attention}Wesołego Jokera{}, kiedy", + "{C:attention}przeszkadzajka{} jest wybrana", + }, + }, + j_cry_macabre = { + name = "Makabryczny Joker", + text = { + "Kiedy {C:attention}przeszkadzajka{} jest wybrana,", + "niszczy każdego {C:attention}jokera{} oprócz", + "{C:legendary}M Jokerów{} i {C:attention}Wesołych Jokerów{}", + "i tworzy 1 {C:attention}Wesołego Jokera{}", + "za każdego zniszczonego jokera", + }, + }, + j_cry_magnet = { + name = "Magnes na lodówkę", + text = { + "Zyskujesz {C:money}$#1#{} na końcu rundy", + "Zyskujesz {X:money,C:white} X#2# {} więcej, jeśli posiadasz", + "{C:attention}#3#{} lub mniej {C:attention}jokerów{}", + }, + }, + j_cry_manic = { + name = "Maniakalny Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Aktywuje ponownie wszystkie jokery", + "jeszcze {C:attention}#1#{} razy", + }, + }, + j_cry_mask = { + name = "Maska", + text = { + "Uruchom ponownie wszystkie {C:attention}figury karciane{}", + "jeszcze {C:attention}#1#{} razy", + "Wszystkie {C:attention}numerowane karty{} zostają osłabione", + }, + }, + j_cry_maximized = { + name = "Na maksa", + text = { + "Wszystkie {C:attention}figury karciane{}", + "są traktowane jako {C:attention}Królowie{},", + "wszystkie {C:attention}numerowane karty{}", + "są traktowane jako {C:attention}10-tki{}", + }, + }, + j_cry_maze = { + name = "Labirynt", + text = { + "Wszystkie ręce są traktowane jako", + "{C:attention}pierwsza ręka{} rundy,", + "wszystkie zrzutki są traktowane jako", + "{C:attention}pierwsza zrzutka{} rundy", + }, + }, + j_cry_Megg = { + name = "M-Jajko", + text = { + "Sprzedaj tę kartę, aby stworzyć", + "{C:attention}#2#{} {C:attention}Wesołych Jokerów{}, liczba rośnie", + "o {C:attention}#1#{} na koniec rundy", + }, + }, + j_cry_mellowcreme = { + name = "Cukierkowa dynia", + text = { + "Sprzedaj tę kartę, aby {C:attention}pomnożyć", + "wartość sprzedaży wszystkich", + "{C:attention}przedmiotów zużywalnych{} o {C:attention}X#1#", + }, + }, + j_cry_membershipcard = { + name = "Karta członkowska", + text = { + "Mnoż. {X:mult,C:white}X#1#{} za każdego członka", + "discordowego serwera {C:attention}Cryptid{}", + "{C:inactive}(obecny mnoż.: {X:mult,C:white}X#2#{C:inactive}", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Dawna karta członkowska", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} za każdego członka", + "discordowego serwera {C:attention}Cryptid{}", + "{C:inactive}(obecnie: {C:chips}+#2#{C:inactive} żet.)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Rój meteorów", + text = { + "Wszystkie karty {C:dark_edition}w folii{}", + "dają {C:chips}+#1#{} żet.", + }, + }, + j_cry_mneon = { + name = "Neonowe M", + text = { + "Na koniec rundy zyskujesz {C:money}$#2#{}", + "Wypłata zwiększa się", + "o {C:money}$#1#{} za każdego {C:attention}Wesołego Jokera{}", + "lub {C:legendary}M Jokera{} na", + "koniec rundy", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika,", + "jeśli nie skorzystano ze {C:attention}zrzutek{}", + "do końca tej rundy", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", + }, + }, + j_cry_monkey_dagger = { + name = "Małpi sztylet", + text = { + "Po wybraniu {C:attention}przeszkadzajki{},", + "niszczy jokera po lewej", + "i na stałe dodaje {C:attention}10-krototność{}", + "jego wartości sprzedaży do {C:chips}żetonów{}", + "{C:inactive}(obecnie: {C:chips}+#1#{C:inactive} żet.)", + }, + }, + j_cry_monopoly_money = { + name = "Monopolowe pieniądze", + text = { + "{C:green}#1# na #2#{} szans na", + "{C:attention}zniszczenie{} zakupionych przedmiotów", + "Obniża pieniądze o połowę po {C:attention}sprzedaży{} tej karty", + }, + }, + j_cry_morse = { + name = "Kod Morse’a", + text = { + "Zyskujesz {C:money}$#2#{} na końcu rundy", + "Wypłata rośnie o {C:money}$#1#{}, kiedy", + "karta z {C:attention}edycją{} zostaje sprzedana", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Tworzy {C:legendary}M Jokera{} na koniec rundy", + "Każdy {C:attention}Wesoły Joker{} lub {C:legendary}M Joker", + "daje {X:dark_edition,C:white}^#1#{} do mnożnika", + "Zwiększa ilość o {X:dark_edition,C:white}^#2#{},", + "kiedy {C:attention}Wesoły Joker{} jest {C:attention}sprzedany", + "{C:inactive,s:0.8}(Tredecim nie może być stworzony)", + }, + }, + j_cry_mstack = { + name = "Stos M", + text = { + "Aktywuj ponownie wszystkie zagrane karty", + "za każde", + "{C:attention}#2#{} {C:inactive}[#3#]{} sprzedane {C:attention}Wesołe Jokery{}", + "{C:inactive}(obecnie{}{C:attention:} #1#{}{C:inactive} ponownych aktywacji){}", + }, + }, + j_cry_multjoker = { + name = "Mnożnikowy Joker", + text = { + "{C:green}#1# na #2#{} szans dla każdej", + "zagranej karty {C:attention}Karty Mnożnikowej{} na stworzenie", + "{C:spectral}Kryptydy{} po zdobyciu punktów", + "{C:inactive}(wymaga miejsca)", + }, + }, + j_cry_necromancer = { + name = "Nekromanta", + text = { + "Kiedy joker jest {C:attention}sprzedany{} za więcej niż {C:attention}$0{},", + "otrzymujesz {C:attention}losowego{} jokera {C:attention}sprzedanego{} w tym podejściu", + "o wartości {C:money}$0{}", + }, + }, + j_cry_negative = { + name = "Negatywny Joker", + text = { + "{C:dark_edition}+#1# sloty na{C:attention} jokery{}", + }, + }, + j_cry_nice = { + name = "Najs", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana ręka", + "zawiera {C:attention}6{} i {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Noc", + text = { + "Mnoż. {X:dark_edition,C:white}^#1#{}", + "w ostatniej ręce rundy", + "{E:2,C:red}Ulega samozniszczeniu{}", + "w ostatniej ręce rundy", + }, + }, + j_cry_nosound = { + name = "Bez dźwięku, bez wspomnienia", + text = { + "Aktywuj ponownie każdą zagraną {C:attention}7{}", + "jeszcze {C:attention:}#1#{} razy", + }, + }, + j_cry_notebook = { + name = "Zeszyt", + text = { + "{C:green} #1# na #2#{} szans na {C:dark_edition}+1{} slot na jokera", + "za {C:attention}ponowny rzut{} w sklepie", + "{C:green}Zawsze aktywuje się,{} jeśli", + "posiadasz {C:attention}#5#{} lub więcej {C:attention}Wesołych Jokerów{}", + "{C:red}Działa raz na rundę{}", + "{C:inactive}(obecnie: {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Klocki liczbowe", + text = { + "Zdobywasz {C:money}$#1#{} na koniec rundy", + "Wypłata zwiększa się o {C:money}$#2#{}", + "za każdą kartę {C:attention}#3#{} trzymaną w ręcę,", + "ranga zmienia się co rundę", + }, + }, + j_cry_nuts = { + name = "Orzeszki", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Bzikowaty Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_oil_lamp = { + name = "Lampa naftowa", + text = { + "Zwiększa wartości {C:attention}jokera{} po prawej stronie", + "o {C:attention}X#1#{} na koniec rundy", + }, + }, + j_cry_oldblueprint = { + name = "Dawna światłokopia", + text = { + "Powiela zdolność", + "{C:attention}jokera{} na prawo", + "{C:green}#1# na #2#{} szans, że ta", + "karta zostanie zniszczona", + "na końcu rundy", + }, + }, + j_cry_oldcandy = { + name = "Nostalgiczny cukierek", + text = { + "Sprzedaj tę kartę,", + "aby na stałe zyskać", + "{C:attention}+#1#{} do rozmiaru ręki", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgiczny Niewidzialny Joker", + text = { + "{C:attention}Kopiuje{} losowego", + "{C:attention}joker{} co {C:attention}4", + "sprzedane jokery", + "{s:0.8}oprócz Nostalgicznego Niewidzialnego Jokera{}", + "{C:inactive}(obecnie: #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panoptykon", + text = { + "Wszystkie ręce są traktowane", + "jako {C:attention}ostatnia ręka{}", -- +$4 + }, + }, + j_cry_penetrating = { + name = "Penetrujący Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_pickle = { + name = "Ogór", + text = { + "Kiedy {C:attention}przeszkadzajka{} jest pominięta, tworzy", + "{C:attention}#1#{} znaczniki, zmniejsza się", + "o {C:red}#2#{} kiedy {C:attention}przeszkadzajka{} zostaje wybrana", + }, + }, + j_cry_pirate_dagger = { + name = "Piracki sztylet", + text = { + "Po wybraniu {C:attention}przeszkadzajki{},", + "niszczy jokera po prawej", + "oraz na stałe dodaje {C:attention}0,25{} jego", + "wartości sprzedaży do {X:chips,C:white} mnoż. żetonów {}", + "{C:inactive}(obecny mnoż. żetonów: {X:chips,C:white} X#1# {C:inactive})", + }, + }, j_cry_pity_prize = { name = "Nagroda pocieszenia", text = { - "Kiedy pomijasz {C:attention}paczkę wzmacniającą{}, zyskujesz losowy {C:attention}znacznik{}" + "Kiedy pomijasz {C:attention}paczkę wzmacniającą{}, zyskujesz losowy {C:attention}znacznik{}", + }, + }, + j_cry_pot_of_jokes = { + name = "Garnek żartów", + text = { + "{C:attention}#1#{} do rozmiaru ręki,", + "rośnie o ", + "{C:blue}#2#{} w każdej rundzie", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "Ten joker zdobywa {X:dark_edition,C:white} ^#1# {} do mnożnika,", + "jeśli wszystkie punktujące karty w zagranej ręce to", + "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, lub {C:attention}7{}", + "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white} ^#2# {C:inactive})", + }, + }, + j_cry_python = { + name = "Python", + text = { + "Ten joker zdobywa", + "{X:mult,C:white} X#1# {} do mnożnika, kiedy", + "{C:cry_code}Karta Kodowa{} jest użyta", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", + }, + }, + j_cry_queens_gambit = { + name = "Gambit królowej", + text = { + "Jeśli {C:attention}zagrana ręka{} to", + "{C:attention}Poker Królewski{}, niszczy", + "{C:attention}Królową{} i tworzy", + "{C:dark_edition}Negatyw {}{C:red}rzadkiego{}{C:attention} jokera{}", + }, + }, + j_cry_quintet = { + name = "Kwintet", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Czerwony balonik", + text = { + "Przez {C:attention}#2#{} rundy zyskujesz {C:money}$#1#{}", + "{C:red,E:2}Ulega samozniszczeniu{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} do wejścia, po", + "wydanych {C:money}$#2#{} {C:inactive}($#3#){}", + "{s:0.8}Wymagania rosną", + "{C:attention,s:0.8}wykładniczo{s:0.8} co użycie", + "{C:money,s:0.8}Następna podwyżka: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "Kiedy {C:attention}Joker{} jest sprzedany,", + "aplikuje jego efekty", + "do pozostałych jokerów", + "{C:inactive,s:0.8}nie dotyczy pozostałych Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Odwrócona karta", + text = { + "Wypełnia wszystkie puste sloty na jokery {C:inactive}(maks. 100){}", + "{C:dark_edition}holograficznymi{} {C:attention}Wesołymi Jokerami{}, jeśli", + "{C:attention}odrzucony układ pokerowy{} to {C:attention}#1#{}", + "{C:red,E:2}Ulega samozniszczeniu{}", + "{C:inactive,s:0.8}OSTATECZNY powrót{}", + }, + }, + j_cry_rnjoker = { + name = "RN Joker", + text = { + "Losuje umiejętności podczas każdego {C:attention}wejścia{}", + }, + }, + j_cry_sacrifice = { + name = "Poświęcenie", + text = { + "Tworzy {C:green}niepospolitego{} jokera", + "i 3 {C:attention}Wesołe Jokery{}, kiedy", + "karta {C:spectral}Ducha{} jest użyta", + "{C:red}Działa raz na rundę{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sadzonka", + text = { + "Po zagraniu {C:attention}#2#{} {C:inactive}[#1#]{} ulepszonych", + "kart, sprzedaj tę kartę", + "aby stworzyć {C:cry_epic}epickiego{} {C:attention}jokera{}", + "{C:inactive,s:0.8}stworzy {C:red,s:0.8}rzadkiego{} {C:attention,s:0.8}jokera{}", + "{C:inactive,s:0.8}jeśli {C:cry_epic,s:0.8}epickie{} {C:inactive,s:0.8}jokery są wyłączone{}", + }, + }, + j_cry_savvy = { + name = "Kumaty Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Skalujące {C:attention}jokery{} skalują się", + "jako wielomian stopnia {C:attention}#1#{}", + "Podnosi stopień o {C:attention}#2#{}", + "na koniec rundy", + "{C:inactive,s:0.8}({C:attention,s:0.8}Z wyjątkiem Scalae{C:inactive,s:0.8})", + }, + }, + j_cry_scrabble = { + name = "Płytka Scrabble", + text = { + "{C:green}#1# na #2#{} szans na stworzenie", + "{C:dark_edition}wesołego {C:green}niepospolitego{} jokera,", + "kiedy ręka jest zagrana", + }, + }, + j_cry_seal_the_deal = { + name = "Zapieczętowana sprawa", + text = { + "Dodaje {C:attention}losową pieczęć{} do wszystkich kart,", + "które zdobyły punkty w {C:attention}ostatniej ręce{} rundy", + }, + }, + j_cry_shrewd = { + name = "Przenikliwy Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Głupiutki Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Malutki", + text = { + "Tworzy {C:cry_jolly}znacznik podwójnego M,", + "jeśli {C:attention}zagrana ręka{},", + "to {C:attention}#1#{}", + "{C:inactive,s:0.8}ok zasadniczo to jestem bardzo mały", + }, + }, + j_cry_soccer = { + name = "Jeden dla wszystkich", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} slot na jokera", + "{C:attention}+#1#{} paczka wzmacniająca", + "{C:attention}+#1#{} do rozmiaru ręki", + "{C:attention}+#1#{} slot na przedmioty zużywalne", + "{C:attention}+#1#{} karta w sklepie", + }, + }, + j_cry_fleshpanopticon = { + name = "Cielesny Panoptykon", + text = { + "{C:red}X#1#{} do rozmiaru {C:attention}Przeszkadzajki Bossa{}", + "Kiedy {C:attention}Przeszkadzajka Bossa{} jest pokonana,", + "{C:red}karta ulega samozniszczeniu{} i tworzy", + " {C:dark_edition}Negatyw{} karty {C:spectral}Wrota{}", + '{C:inactive,s:0.8}"To więzienie... ma mnie powstrzymać?"', + }, + }, + j_cry_spaceglobe = { + name = "Niebiański glob", + text = { + "Ten joker zdobywa {X:chips,C:white}X#2#{} żet.,", + "jeśli zagrany {C:attention}układ pokerowy{} to {C:attention}#3#{},", + "Układ zmienia się po wzroście wartości{}", + "{C:inactive}(obecnie:{} {X:chips,C:white}X#1#{} {C:inactive}żet.){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Tworzy {C:dark_edition}Negatyw{} kopii", + "losowego {C:attention}jokera{}", + "na koniec {C:attention}sklepu", + "{C:inactive,s:0.8}Nie kopiuje Speculo{}", + }, + }, + j_cry_spy = { + name = "Szpieg", + text = { + "Mnoż. {X:mult,C:white} X#2# {}, {C:dark_edition}+1{} slot na {C:attention}jokera{}", + "{C:inactive}#1# jest szpiegiem!", + }, + }, + j_cry_stardust = { + name = "Gwiezdny pył", + text = { + "Wszystkie karty {C:dark_edition}polichromowane{}", + "dają mnoż. {X:mult,C:white}X#1#{}", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "Ten joker niszczy", + "losową Kartę {C:planet}Planety{}", + "i zdobywa {X:dark_edition,C:white} ^#1# {} do mnożnika", + "na koniec {C:attention}sklepu{}", + "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white} ^#2# {C:inactive})", + }, + }, + j_cry_stronghold = { + name = "Twierdza", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_subtle = { + name = "Subtelny Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Superkomórka", + text = { + "{C:chips}+#1#{} żet., mnoż. {C:mult}+#1#{},", + "{X:chips,C:white}X#2#{} żet., mnoż. {X:mult,C:white}X#2#{}", + "Zyskujesz {C:money}$#3#{}", + "na koniec rundy", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "Na końcu rundy, tworzy", + "{C:attention}kopię{} losowej", + "karty {C:attention}trzymanej w ręce{} i", + "niszczy pozostałe", + "{C:attention,s:0.8}Królowie{s:0.8} {C:hearts,s:0.8}Kier{s:0.8} mają priorytet", + }, + }, + j_cry_swarm = { + name = "Rój", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Katalizator synchronizacji", + text = { + "Równoważy {C:chips}żetony{} i {C:mult}mnożnik{}", + "{C:inactive,s:0.8}Ej! Gdzieś to widziałem!", }, }, - j_cry_pot_of_jokes = { - name = "Garnek żartów", - text = { - "{C:attention}#1#{} do rozmiaru ręki,", - "rośnie o ", - "{C:blue}#2#{} w każdej rundzie", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "Ten joker zdobywa {X:dark_edition,C:white} ^#1# {} do mnożnika,", - "jeśli wszystkie punktujące karty w zagranej ręce to", - "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, lub {C:attention}7{}", - "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white} ^#2# {C:inactive})", - }, - }, - j_cry_python = { - name = "Python", - text = { - "Ten joker zdobywa", - "{X:mult,C:white} X#1# {} do mnożnika, kiedy", - "{C:cry_code}Karta Kodowa{} jest użyta", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", - }, - }, - j_cry_queens_gambit = { - name = "Gambit królowej", - text = { - "Jeśli {C:attention}zagrana ręka{} to", - "{C:attention}Poker Królewski{}, niszczy", - "{C:attention}Królową{} i tworzy", - "{C:dark_edition}Negatyw {}{C:red}rzadkiego{}{C:attention} jokera{}", - }, - }, - j_cry_quintet = { - name = "Kwintet", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Czerwony balonik", - text = { - "Przez {C:attention}#2#{} rundy zyskujesz {C:money}$#1#{}", - "{C:red,E:2}Ulega samozniszczeniu{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} do wejścia, po", - "wydanych {C:money}$#2#{} {C:inactive}($#3#){}", - "{s:0.8}Wymagania rosną", - "{C:attention,s:0.8}wykładniczo{s:0.8} co użycie", - "{C:money,s:0.8}Następna podwyżka: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "Kiedy {C:attention}Joker{} jest sprzedany,", - "aplikuje jego efekty", - "do pozostałych jokerów", - "{C:inactive,s:0.8}nie dotyczy pozostałych Rescribere{}" - } - }, - j_cry_reverse = { - name = "Odwrócona karta", - text = { - "Wypełnia wszystkie puste sloty na jokery {C:inactive}(maks. 100){}", - "{C:dark_edition}holograficznymi{} {C:attention}Wesołymi Jokerami{}, jeśli", - "{C:attention}odrzucony układ pokerowy{} to {C:attention}#1#{}", - "{C:red,E:2}Ulega samozniszczeniu{}", - "{C:inactive,s:0.8}OSTATECZNY powrót{}", - }, - }, - j_cry_rnjoker = { - name = "RN Joker", - text = { - "Losuje umiejętności podczas każdego {C:attention}wejścia{}", - }, - }, - j_cry_sacrifice = { - name = "Poświęcenie", - text = { - "Tworzy {C:green}niepospolitego{} jokera", - "i 3 {C:attention}Wesołe Jokery{}, kiedy", - "karta {C:spectral}Ducha{} jest użyta", - "{C:red}Działa raz na rundę{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sadzonka", - text = { - "Po zagraniu {C:attention}#2#{} {C:inactive}[#1#]{} ulepszonych", - "kart, sprzedaj tę kartę", - "aby stworzyć {C:cry_epic}epickiego{} {C:attention}jokera{}", - "{C:inactive,s:0.8}stworzy {C:red,s:0.8}rzadkiego{} {C:attention,s:0.8}jokera{}", - "{C:inactive,s:0.8}jeśli {C:cry_epic,s:0.8}epickie{} {C:inactive,s:0.8}jokery są wyłączone{}", - }, - }, - j_cry_savvy = { - name = "Kumaty Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Skalujące {C:attention}jokery{} skalują się", - "jako wielomian stopnia {C:attention}#1#{}", - "Podnosi stopień o {C:attention}#2#{}", - "na koniec rundy", - "{C:inactive,s:0.8}({C:attention,s:0.8}Z wyjątkiem Scalae{C:inactive,s:0.8})", - }, - }, - j_cry_scrabble = { - name = "Płytka Scrabble", - text = { - "{C:green}#1# na #2#{} szans na stworzenie", - "{C:dark_edition}wesołego {C:green}niepospolitego{} jokera,", - "kiedy ręka jest zagrana", - }, - }, - j_cry_seal_the_deal = { - name = "Zapieczętowana sprawa", - text = { - "Dodaje {C:attention}losową pieczęć{} do wszystkich kart,", - "które zdobyły punkty w {C:attention}ostatniej ręce{} rundy", - }, - }, - j_cry_shrewd = { - name = "Przenikliwy Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_silly = { - name = "Głupiutki Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Malutki", - text = { - "Tworzy {C:cry_jolly}znacznik podwójnego M,", - "jeśli {C:attention}zagrana ręka{},", - "to {C:attention}#1#{}", - "{C:inactive,s:0.8}ok zasadniczo to jestem bardzo mały", - }, - }, - j_cry_soccer = { - name = "Jeden dla wszystkich", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} slot na jokera", - "{C:attention}+#1#{} paczka wzmacniająca", - "{C:attention}+#1#{} do rozmiaru ręki", - "{C:attention}+#1#{} slot na przedmioty zużywalne", - "{C:attention}+#1#{} karta w sklepie", - }, - }, - j_cry_fleshpanopticon = { - name = "Cielesny Panoptykon", - text = { - "{C:red}X#1#{} do rozmiaru {C:attention}Przeszkadzajki Bossa{}", - "Kiedy {C:attention}Przeszkadzajka Bossa{} jest pokonana,", - "{C:red}karta ulega samozniszczeniu{} i tworzy", - " {C:dark_edition}Negatyw{} karty {C:spectral}Wrota{}", - "{C:inactive,s:0.8}\"To więzienie... ma mnie powstrzymać?\"" - }, - }, - j_cry_spaceglobe = { - name = "Niebiański glob", - text = { - "Ten joker zdobywa {X:chips,C:white}X#2#{} żet.,", - "jeśli zagrany {C:attention}układ pokerowy{} to {C:attention}#3#{},", - "Układ zmienia się po wzroście wartości{}", - "{C:inactive}(obecnie:{} {X:chips,C:white}X#1#{} {C:inactive}żet.){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Tworzy {C:dark_edition}Negatyw{} kopii", - "losowego {C:attention}jokera{}", - "na koniec {C:attention}sklepu", - "{C:inactive,s:0.8}Nie kopiuje Speculo{}", - }, - }, - j_cry_spy = { - name = "Szpieg", - text = { - "Mnoż. {X:mult,C:white} X#2# {}, {C:dark_edition}+1{} slot na {C:attention}jokera{}", - "{C:inactive}#1# jest szpiegiem!", - }, - }, - j_cry_stardust = { - name = "Gwiezdny pył", - text = { - "Wszystkie karty {C:dark_edition}polichromowane{}", - "dają mnoż. {X:mult,C:white}X#1#{}", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "Ten joker niszczy", - "losową Kartę {C:planet}Planety{}", - "i zdobywa {X:dark_edition,C:white} ^#1# {} do mnożnika", - "na koniec {C:attention}sklepu{}", - "{C:inactive}(obecny mnoż.: {X:dark_edition,C:white} ^#2# {C:inactive})", - }, - }, - j_cry_stronghold = { - name = "Twierdza", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_subtle = { - name = "Subtelny Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Superkomórka", - text = { - "{C:chips}+#1#{} żet., mnoż. {C:mult}+#1#{},", - "{X:chips,C:white}X#2#{} żet., mnoż. {X:mult,C:white}X#2#{}", - "Zyskujesz {C:money}$#3#{}", - "na koniec rundy", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "Na końcu rundy, tworzy", - "{C:attention}kopię{} losowej", - "karty {C:attention}trzymanej w ręce{} i", - "niszczy pozostałe", - "{C:attention,s:0.8}Królowie{s:0.8} {C:hearts,s:0.8}Kier{s:0.8} mają priorytet", - }, - }, - j_cry_swarm = { - name = "Rój", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Katalizator synchronizacji", - text = { - "Równoważy {C:chips}żetony{} i {C:mult}mnożnik{}", - "{C:inactive,s:0.8}Ej! Gdzieś to widziałem!", - }, - }, j_cry_tax_fraud = { name = "Oszust podatkowy", text = { @@ -1970,1977 +1970,1980 @@ return { "jokera na koniec rundy", }, }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1# slotów na {C:attention}Jokery{}", - "Zyskujesz {C:money}$#2#{} na koniec rundy", - }, - }, - j_cry_translucent = { - name = "Przezroczysty Joker", - text = { - "Sprzedaj tę kartę, aby", - "stworzyć {C:attention}bananową, nietrwałą{} kopię", - "losowego {C:attention}jokera{}", - "{s:0.8,C:inactive}(kopia pomija niekompatybilność)", - }, - }, - j_cry_treacherous = { - name = "Podstępny Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_trick_or_treat = { - name = "Cukierek albo psikus", - text = { - "Kiedy ta karta jest {C:attention}sprzedana{}:", - "{C:green}#1# na #2#{} szans na stworzenie {C:attention}2{} {C:cry_candy}Cukierków", - "W innym razie, tworzy {X:cry_cursed,C:white}przeklętego{} jokera", - "{C:inactive}(może zignorować miejsce na jokery)" - } - }, - j_cry_tricksy = { - name = "Figlarny Joker", - text = { - "{C:chips}+#1#{} żet., jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Potrójny rytm", - text = { - "Mnoż. {X:mult,C:white} X#1# {},", - "jeśli zagrana ręka zawiera {C:attention}dokładnie{} trzy {C:attention}3", - }, - }, - j_cry_tropical_smoothie = { - name = "Tropikalne smoothie", - text = { - "Sprzedaj tę kartę, aby", - "{C:attention}zwiększyć{} wartości", - "posiadanych jokerów o {C:attention}X1.5{}", - }, - }, - j_cry_unity = { - name = "Jedność", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - j_cry_universe = { - name = "Wszechświat", - text = { - "Wszystkie karty {C:dark_edition}astralne{}", - "dają mnoż. {X:dark_edition,C:white}^#1#{}", - }, - }, - j_cry_universum = { - name = "Uniwersum", - text = { - "{C:attention}Układy pokerowe{} zdobywają", - "mnoż. {X:red,C:white} X#1# {} i mnoż. żet. {X:blue,C:white} X#1# {},", - "kiedy są ulepszane", - }, - }, - j_cry_unjust_dagger = { - name = "Niesprawiedliwy sztylet", - text = { - "Po wybraniu {C:attention}przeszkadzajki{},", - "niszczy jokera po lewej", - "i zdobywa {C:attention}0,2{} jego", - "sprzedaży do {X:mult,C:white} mnożnika {}", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#1# {C:inactive})", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Panna", - text = { - "Ten joker zyskuje {C:money}$#1#{} do {C:attention}wartości sprzedaży{},", - "jeśli {C:attention}zagrana ręka{} zawiera {C:attention}#2#{}", - "Sprzedaj tę kartę, aby stworzyć", - "{C:dark_edition}polichromowanego{} {C:attention}Wesołego Jokera{} za", - "każde {C:money}$4{} z jego {C:attention}wartości sprzedaży{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Ekscentryczny Joker", - text = { - "Mnoż. {C:red}+#1#{}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "Wszytkie jokery dają", - "mnoż. {X:mult,C:white} X#1#{}", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "Wszystkie jokery dają", - "{C:money}$#1#{} kiedy są aktywowane", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "Ten joker zdobywa", - "{C:mult}+#2#{} do mnożnika kiedy każdy", - "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "zdobywa punkty", - "{C:inactive}(obecny mnoż.: {C:mult}+#1#{C:inactive})", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Aktywuj ponownie wszystkie zagrane {C:attention}2{}", --wee gaming - "jeszcze {C:attention:}#2#{} razy", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Koło nadziei", - text = { - "Ten joker zdobywa", - "{X:mult,C:white} X#1# {} do mnożnika po nieudanej", - "aktywacji {C:attention}Koła Fortuny{}", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", - }, - }, - j_cry_whip = { - name = "Bicz", - text = { - "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika,", - "jeśli {C:attention}zagrana ręka{} zawiera", - "{C:attention}2{} i {C:attention}7{} w różnych kolorach", - "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", - }, - }, - j_cry_wrapped = { - name = "Zawinięty cukierek", - text = { - "Tworzy losowego {C:attention}kulinarnego jokera{}", - "po {C:attention}#1#{} rundach", - "{C:red,E:2}Ulega samozniszczeniu{}", - }, - }, - j_cry_wtf = { - name = "Co kurwa!?", - text = { - "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", - "ręka zawiera", - "{C:attention}#2#", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", - "Zwiększ poziom układów:", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "i {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", - "Zwiększ poziom układów:", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "i {C:attention}#3#{}", - }, - }, - c_cry_Kaikki = { - name = "Kaikki", - text = { - "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", - "Zwiększ poziom układów:", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "i {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Gwiazda Neutronowa", - text = { - "Ulepsza losowy", - "układ pokerowy o", - "{C:attention}1{} poziom po każdym", - "użyciu {C:attention}Gwiazdy Neutronowej{}", - "w tym podejściu", - "{C:inactive}(Obecnie{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# na #2#{} szans na", - "ulepszenie każdego", - "{C:legendary,E:1}układu pokerowego{}", - "o {C:attention}1{} poziom", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", - "Zwiększ poziom układów:", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "i {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", - "Zwiększ poziom układów:", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "i {C:attention}#3#{}", - }, - }, - c_cry_marsmoons = { - name = 'Fobos & Deimos', - text = { - "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", - "{C:attention}#2#", - "mnoż. {C:mult}+#3#{} oraz", - "{C:chips}+#4#{} żet." - } - }, - c_cry_void = { - name = 'Otchłań', - text = { - "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", - "{C:attention}#2#", - "mnoż. {C:mult}+#3#{} oraz", - "{C:chips}+#4#{} żet." - } - }, - c_cry_asteroidbelt = { - name = 'Pas Asteroid', - text = { - "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", - "{C:attention}#2#", - "mnoż. {C:mult}+#3#{} oraz", - "{C:chips}+#4#{} żet." - } - }, - c_cry_universe = { - name = 'Wszechświat W Swojej Całej Pierdolonej Okazałości', - text = { - "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", - "{C:attention}#2#", - "mnoż. {C:mult}+#3#{} oraz", - "{C:chips}+#4#{} żet." - } - }, - }, - Sleeve = { + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1# slotów na {C:attention}Jokery{}", + "Zyskujesz {C:money}$#2#{} na koniec rundy", + }, + }, + j_cry_translucent = { + name = "Przezroczysty Joker", + text = { + "Sprzedaj tę kartę, aby", + "stworzyć {C:attention}bananową, nietrwałą{} kopię", + "losowego {C:attention}jokera{}", + "{s:0.8,C:inactive}(kopia pomija niekompatybilność)", + }, + }, + j_cry_treacherous = { + name = "Podstępny Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_trick_or_treat = { + name = "Cukierek albo psikus", + text = { + "Kiedy ta karta jest {C:attention}sprzedana{}:", + "{C:green}#1# na #2#{} szans na stworzenie {C:attention}2{} {C:cry_candy}Cukierków", + "W innym razie, tworzy {X:cry_cursed,C:white}przeklętego{} jokera", + "{C:inactive}(może zignorować miejsce na jokery)", + }, + }, + j_cry_tricksy = { + name = "Figlarny Joker", + text = { + "{C:chips}+#1#{} żet., jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Potrójny rytm", + text = { + "Mnoż. {X:mult,C:white} X#1# {},", + "jeśli zagrana ręka zawiera {C:attention}dokładnie{} trzy {C:attention}3", + }, + }, + j_cry_tropical_smoothie = { + name = "Tropikalne smoothie", + text = { + "Sprzedaj tę kartę, aby", + "{C:attention}zwiększyć{} wartości", + "posiadanych jokerów o {C:attention}X1.5{}", + }, + }, + j_cry_unity = { + name = "Jedność", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_universe = { + name = "Wszechświat", + text = { + "Wszystkie karty {C:dark_edition}astralne{}", + "dają mnoż. {X:dark_edition,C:white}^#1#{}", + }, + }, + j_cry_universum = { + name = "Uniwersum", + text = { + "{C:attention}Układy pokerowe{} zdobywają", + "mnoż. {X:red,C:white} X#1# {} i mnoż. żet. {X:blue,C:white} X#1# {},", + "kiedy są ulepszane", + }, + }, + j_cry_unjust_dagger = { + name = "Niesprawiedliwy sztylet", + text = { + "Po wybraniu {C:attention}przeszkadzajki{},", + "niszczy jokera po lewej", + "i zdobywa {C:attention}0,2{} jego", + "sprzedaży do {X:mult,C:white} mnożnika {}", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#1# {C:inactive})", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Panna", + text = { + "Ten joker zyskuje {C:money}$#1#{} do {C:attention}wartości sprzedaży{},", + "jeśli {C:attention}zagrana ręka{} zawiera {C:attention}#2#{}", + "Sprzedaj tę kartę, aby stworzyć", + "{C:dark_edition}polichromowanego{} {C:attention}Wesołego Jokera{} za", + "każde {C:money}$4{} z jego {C:attention}wartości sprzedaży{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Ekscentryczny Joker", + text = { + "Mnoż. {C:red}+#1#{}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "Wszytkie jokery dają", + "mnoż. {X:mult,C:white} X#1#{}", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "Wszystkie jokery dają", + "{C:money}$#1#{} kiedy są aktywowane", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "Ten joker zdobywa", + "{C:mult}+#2#{} do mnożnika kiedy każdy", + "{C:attention}As{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "zdobywa punkty", + "{C:inactive}(obecny mnoż.: {C:mult}+#1#{C:inactive})", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Aktywuj ponownie wszystkie zagrane {C:attention}2{}", --wee gaming + "jeszcze {C:attention:}#2#{} razy", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Koło nadziei", + text = { + "Ten joker zdobywa", + "{X:mult,C:white} X#1# {} do mnożnika po nieudanej", + "aktywacji {C:attention}Koła Fortuny{}", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive})", + }, + }, + j_cry_whip = { + name = "Bicz", + text = { + "Ten joker zdobywa {X:mult,C:white} X#1# {} do mnożnika,", + "jeśli {C:attention}zagrana ręka{} zawiera", + "{C:attention}2{} i {C:attention}7{} w różnych kolorach", + "{C:inactive}(obecny mnoż.: {X:mult,C:white} X#2# {C:inactive}", + }, + }, + j_cry_wrapped = { + name = "Zawinięty cukierek", + text = { + "Tworzy losowego {C:attention}kulinarnego jokera{}", + "po {C:attention}#1#{} rundach", + "{C:red,E:2}Ulega samozniszczeniu{}", + }, + }, + j_cry_wtf = { + name = "Co kurwa!?", + text = { + "Mnoż. {X:mult,C:white} X#1# {}, jeśli zagrana", + "ręka zawiera", + "{C:attention}#2#", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", + "Zwiększ poziom układów:", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "i {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", + "Zwiększ poziom układów:", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "i {C:attention}#3#{}", + }, + }, + c_cry_Kaikki = { + name = "Kaikki", + text = { + "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", + "Zwiększ poziom układów:", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "i {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Gwiazda Neutronowa", + text = { + "Ulepsza losowy", + "układ pokerowy o", + "{C:attention}1{} poziom po każdym", + "użyciu {C:attention}Gwiazdy Neutronowej{}", + "w tym podejściu", + "{C:inactive}(Obecnie{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# na #2#{} szans na", + "ulepszenie każdego", + "{C:legendary,E:1}układu pokerowego{}", + "o {C:attention}1{} poziom", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", + "Zwiększ poziom układów:", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "i {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}poz.#4#{})({V:2}poz.#5#{})({V:3}poz.#6#{})", + "Zwiększ poziom układów:", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "i {C:attention}#3#{}", + }, + }, + c_cry_marsmoons = { + name = "Fobos & Deimos", + text = { + "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", + "{C:attention}#2#", + "mnoż. {C:mult}+#3#{} oraz", + "{C:chips}+#4#{} żet.", + }, + }, + c_cry_void = { + name = "Otchłań", + text = { + "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", + "{C:attention}#2#", + "mnoż. {C:mult}+#3#{} oraz", + "{C:chips}+#4#{} żet.", + }, + }, + c_cry_asteroidbelt = { + name = "Pas Asteroid", + text = { + "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", + "{C:attention}#2#", + "mnoż. {C:mult}+#3#{} oraz", + "{C:chips}+#4#{} żet.", + }, + }, + c_cry_universe = { + name = "Wszechświat W Swojej Całej Pierdolonej Okazałości", + text = { + "{S:0.8}({S:0.8,V:1}poz.#1#{S:0.8}){} Zwiększ poziom układu:", + "{C:attention}#2#", + "mnoż. {C:mult}+#3#{} oraz", + "{C:chips}+#4#{} żet.", + }, + }, + }, + Sleeve = { sleeve_cry_bountiful_sleeve = { name = "Obfity Rękaw", text = { - "Po {C:blue}zagraniu{} lub {C:red}zrzutce{},", - "zawsze dobierasz {C:attention}5{} kart" + "Po {C:blue}zagraniu{} lub {C:red}zrzutce{},", + "zawsze dobierasz {C:attention}5{} kart", + }, + }, + sleeve_cry_ccd_sleeve = { + name = "Rękaw CCD", + text = { + "Każda karta jest również", + "{C:attention}losowym{} przedmiotem zużywalnym", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Taśmociągowy Rękaw", + text = { + "Jokery {C:attention}nie mogą{} zmieniać pozycji", + "Na początku rundy,", + "{C:attention}duplikuje{} jokera najbardziej wysuniętego na prawo", + "i {C:attention}niszczy{} najbardziej wysuniętego na lewo", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Krytyczny Rękaw", + text = { + "Po każdej zagranej ręce,", + "{C:green}#1# na 4{} szans na mnożnik {X:dark_edition,C:white} ^2 {}", + "{C:green}#1# na 8{} szans na mnożnik {X:dark_edition,C:white} ^0.5 {}", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Zakodowany Rękaw", + text = { + "Rozpoczynasz podejście z", + "{C:cry_code,T:j_cry_CodeJoker}Kodowym Jokerem{} i {C:cry_code,T:j_cry_copypaste}Kopiuj/Wklej{}", + "Tylko {C:cry_code}Karty kodowe{} pojawiają się w sklepie", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Zbalansowany Rękaw", + text = { + "Wszystkie karty mają", + "{C:attention}równą{} szansę", + "pojawienia się w sklepie,", + "rozpoczynasz podejście z", + "dodatkowymi {C:attention,T:v_overstock_plus}+2 slotami{} w sklepie", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Nieskończony Rękaw", + text = { + "Możesz wybrać {C:attention}dowolną", + "liczbę kart", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Błędny Rękaw", + text = { + "Wartości kart", + "są {C:attention}losowe", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Odkupiony Rękaw", + text = { + "Przy zakupie {C:attention}kuponu{} ,", + "otrzymujesz jego {C:attention}dodatkowe poziomy", }, }, - sleeve_cry_ccd_sleeve = { - name = "Rękaw CCD", - text = { - "Każda karta jest również", - "{C:attention}losowym{} przedmiotem zużywalnym", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Taśmociągowy Rękaw", - text = { - "Jokery {C:attention}nie mogą{} zmieniać pozycji", - "Na początku rundy,", - "{C:attention}duplikuje{} jokera najbardziej wysuniętego na prawo", - "i {C:attention}niszczy{} najbardziej wysuniętego na lewo", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Krytyczny Rękaw", - text = { - "Po każdej zagranej ręce,", - "{C:green}#1# na 4{} szans na mnożnik {X:dark_edition,C:white} ^2 {}", - "{C:green}#1# na 8{} szans na mnożnik {X:dark_edition,C:white} ^0.5 {}", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Zakodowany Rękaw", - text = { - "Rozpoczynasz podejście z", - "{C:cry_code,T:j_cry_CodeJoker}Kodowym Jokerem{} i {C:cry_code,T:j_cry_copypaste}Kopiuj/Wklej{}", - "Tylko {C:cry_code}Karty kodowe{} pojawiają się w sklepie", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Zbalansowany Rękaw", - text = { - "Wszystkie karty mają", - "{C:attention}równą{} szansę", - "pojawienia się w sklepie,", - "rozpoczynasz podejście z", - "dodatkowymi {C:attention,T:v_overstock_plus}+2 slotami{} w sklepie", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Nieskończony Rękaw", - text = { - "Możesz wybrać {C:attention}dowolną", - "liczbę kart", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Błędny Rękaw", - text = { - "Wartości kart", - "są {C:attention}losowe", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Odkupiony Rękaw", - text = { - "Przy zakupie {C:attention}kuponu{} ,", - "otrzymujesz jego {C:attention}dodatkowe poziomy", - }, - }, sleeve_cry_spooky_sleeve = { - name = "Upiorny Rękaw", - text = { - "Rozpoczynasz podejście z {C:eternal}Wieczną{} {C:attention,T:j_cry_chocolate_dice}Czekoladową kostką", - "Po każdym {C:attention}wejściu{}, tworzy", - "{C:cry_candy}Cukierka{} lub {X:cry_cursed,C:white}Przeklętego{} jokera", - } - }, - sleeve_cry_wormhole_sleeve = { - name = "Tuneloczasowy Rękaw", - text = { - "Rozpoczynasz podejście z {C:cry_exotic}egzotycznym{C:attention} jokerem", - "{C:attention}X20{} prawdopodobieństwa", - "na {C:dark_edition}Negatywy{} jokerów", - "{C:attention}-2{} sloty na jokera", - }, - }, + name = "Upiorny Rękaw", + text = { + "Rozpoczynasz podejście z {C:eternal}Wieczną{} {C:attention,T:j_cry_chocolate_dice}Czekoladową kostką", + "Po każdym {C:attention}wejściu{}, tworzy", + "{C:cry_candy}Cukierka{} lub {X:cry_cursed,C:white}Przeklętego{} jokera", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Tuneloczasowy Rękaw", + text = { + "Rozpoczynasz podejście z {C:cry_exotic}egzotycznym{C:attention} jokerem", + "{C:attention}X20{} prawdopodobieństwa", + "na {C:dark_edition}Negatywy{} jokerów", + "{C:attention}-2{} sloty na jokera", + }, + }, sleeve_cry_legendary_sleeve = { - name = "Legendarny Rękaw", - text = { - "Rozpoczynasz podejście z {C:legendary}legendarnym{C:legendary} jokerem", - "{C:green}1 in 5{} szans na dodanie kolejnego", + name = "Legendarny Rękaw", + text = { + "Rozpoczynasz podejście z {C:legendary}legendarnym{C:legendary} jokerem", + "{C:green}1 in 5{} szans na dodanie kolejnego", "po pokonaniu przeszkadzajki bossa {C:inactive}(wymaga miejsca){}", - }, - }, - }, - Spectral = { - c_cry_adversary = { - name = "Adwersarz", - text = { - "{C:red}Wszystkie{} twoje {C:attention}jokery{} dostają {C:dark_edition}Negatyw{},", - "{C:red}wszystkie{} {C:attention}jokery{} w sklepie są", - "{C:red}dwa razy{} droższe do końca podejścia", - }, - }, - c_cry_analog = { - name = "Analog", - text = { - "Tworzy {C:attention}#1#{} kopie", - "losowego {C:attention}jokera{}, niszczy", - "wszystkie inne jokery, {C:attention}+#2#{} do wejścia", - }, - }, - c_cry_chambered = { - name = "Komora", - text = { - "Tworzy {C:attention}#1#{} {C:dark_edition}negatywne{}", - "kopie", - "{C:attention}dowolnego{} przedmiotu zużywalnego", - "{C:inactive,s:0.8}Nie kopiuje Komory{}" - }, - }, - c_cry_conduit = { - name = "Przewód", - text = { - "Zamienia {C:attention}edycje{}", - "{C:attention}2{} wybranych kart lub {C:attention}jokerów{}", - }, - }, - c_cry_gateway = { - name = "Brama", - text = { - "Tworzy losowego", - "{C:cry_exotic,E:1}egzotycznego{C:attention} jokera{}, niszczy", - "wszystkie inne jokery", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Dodaje losowe {C:attention}przedmioty zużywalne{}", - "jako {C:dark_edition}ulepszenia{}", - "do kart trzymanych w ręce", - }, - }, - c_cry_lock = { - name = "Blokada", - text = { - "Usuwa {C:red}wszystkie{} naklejki", - "ze {C:red}wszystkich{} jokerów,", - "a następnie dodaje {C:purple,E:1}Wieczną{}", - "naklejkę na losowego {C:attention}jokera{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Tworzy {C:cry_code}wybranego", - "jokera lub kartę", - "{C:inactive,s:0.8}(Z wyjątkiem egzotycznych jokerów)", - }, - }, - c_cry_replica = { - name = "Replika", - text = { - "Zamienia wszystkie", - "karty w ręcę", - "na {C:attention}losową{}", - "kartę trzymaną w ręcę", - }, - }, - c_cry_ritual = { - name = "Rytuał", - text = { - "Dodaje {C:dark_edition}Negatyw{}, {C:dark_edition}mozaiczną{},", - "lub {C:dark_edition}astralną{} edycję do {C:attention}#1#{}", - "wybranej karty w ręcę", - }, - }, - c_cry_source = { - name = "Źródło", - text = { - "Dodaj {C:cry_code}Zieloną Pieczęć{}", - "do {C:attention}#1#{} wybranej", - "karty w ręcę", - }, - }, - c_cry_summoning = { - name = "Przywołanie", - text = { - "Tworzy losowego", - "{C:cry_epic}epickiego{} {C:joker}jokera{}, niszczy", - "jednego losowego {C:joker}jokera{}", - }, - }, - c_cry_trade = { - name = "Handel", - text = { - "{C:attention}Tracisz{} losowy kupon,", - "zyskujesz {C:attention}2{} losowe kupony", - }, - }, - c_cry_typhoon = { - name = "Tajfun", - text = { - "Dodaj {C:cry_azure}Azurową Pieczęć{}", - "do {C:attention}#1#{} wybranej", - "karty w ręcę", - }, - }, - c_cry_vacuum = { - name = "Próżnia", - text = { - "Usuwa {C:red}wszystkie {C:green}modyfikacje{}", - "ze {C:red}wszystkich{} kart trzymanych w ręcę,", - "Zarabiasz {C:money}$#1#{} za każdą usuniętą {C:green}modyfikację{}", - "{C:inactive,s:0.7}(na przykład ulepszenia, pieczęcie, edycje)", - }, - }, - c_cry_white_hole = { - name = "Biała Dziura", - text = { - "{C:attention}Usuwa{} wszystkie poziomy układów pokerowych,", - "ulepsza {C:legendary,E:1}najczęściej grany{} układ pokerowy", - "o {C:attention}3{} za każdy usunięty poziom", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Różowa Stawka", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Wymagany wynik skaluje się", - "szybciej dla każdego {C:attention}wejścia", - }, - }, - stake_cry_brown = { - name = "Brązowa Stawka", - colour = "Brown", - text = { - "Wszystkie {C:attention}naklejki{} są", - "ze sobą kompatybilne", - }, - }, - stake_cry_yellow = { - name = "Żółta Stawka", - colour = "Yellow", - text = { - "{C:attention}Naklejki{} mogą pojawić się", - "na wszystkich przedmiotach do kupienia", - }, - }, - stake_cry_jade = { - name = "Nefrytowa Stawka", - colour = "Jade", - text = { - "Karty mogą być {C:attention}dobierane w dół{}", - }, - }, - stake_cry_cyan = { - name = "Cyjanowa Stawka", - colour = "Cyan", - text = { - "{C:green}Niepospolite{} i {C:red}rzadkie{} jokery mają", - "mniejsze prawdopodobieństwo występowania", - }, - }, - stake_cry_gray = { - name = "Szara Stawka", - colour = "Gray", - text = { - "Koszt ponownych rzutów wzrasta o {C:attention}$2{} przy każdym użyciu", - }, - }, - stake_cry_crimson = { - name = "Karmazynowa Stawka", - colour = "Crimson", - text = { - "Kupony są odnawiane przy {C:attention}parzystych{} wejściach", - }, - }, - stake_cry_diamond = { - name = "Diamentowa Stawka", - colour = "Diamond", - text = { - "{C:attention}+2{} do wejścia", - }, - }, - stake_cry_amber = { - name = "Bursztynowa Stawka", - colour = "Amber", - text = { - "{C:attention}-1{} slot na paczki wzmacniające", - }, - }, - stake_cry_bronze = { - name = "Miedziowa Stawka", - colour = "Bronze", - text = { - "Kupony są {C:attention}50%{} droższe", - }, - }, - stake_cry_quartz = { - name = "Kwarcowa Stawka", - colour = "Quartz", - text = { - "Jokery mogą być {C:attention}przyszpilone{}", - "{s:0.8,C:inactive}(pozostają na pozycji najbardziej wysuniętej na lewo){}", - }, - }, - stake_cry_ruby = { - name = "Rubinowa Stawka", - colour = "Ruby", - text = { - "{C:attention}Duże w ciemno{} Blinds mogą stać się", - "{C:attention}Przeszkadzajkami Bossa{}", - }, - }, - stake_cry_glass = { - name = "Szklana Stawka", - colour = "Glass", - text = { - "Karty mogą się {C:attention}roztrzaskać{} przy punktacji", - }, - }, - stake_cry_sapphire = { - name = "Szafirowa Stawka", - colour = "Sapphire", - text = { - "Tracisz {C:attention}25%{} obecnych pieniędzy", - "na koniec rundy", - "{s:0.8,C:inactive}(maksymalnie $10){}", - }, - }, - stake_cry_emerald = { - name = "Szmaragdowa Stawka", - colour = "Emerald", - text = { - "Karty, paczki i kupony", - "mogą być {C:attention}dobierane w dół{}", - "{s:0.8,C:inactive}(Nie można ich sprawdzić przed zakupem){}", - }, - }, - stake_cry_platinum = { - name = "Platynowa Stawka", - colour = "Platinum", - text = { - "Małe w ciemno zostają {C:attention}usunięte{}", - }, - }, - stake_cry_twilight = { - name = "Zmierzchowa Stawka", - colour = "Twilight", - text = { - "Karty mogą być {C:attention}bananowe{}", - "{s:0.8,C:inactive}(1 na 10 szans, że zostaną zniszczone w każdej rundzie){}", - }, - }, - stake_cry_verdant = { - name = "Zarośnięta Stawka", - colour = "Verdant", - text = { - "Wymagany wynik skaluje się", - "szybciej dla każdego {C:attention}wejścia", - }, - }, - stake_cry_ember = { - name = "Rozżarzona Stawka", - colour = "Ember", - text = { - "Wszystkie przedmioty mają zerową wartość sprzedaży", - }, - }, - stake_cry_dawn = { - name = "Świtowa Stawka", - colour = "Dawn", - text = { - "Efekty kart Tarota i Ducha są", - "zredukowane do {C:attention}1{} karty", - "{s:0.8,C:inactive}(minimum 1){}", - }, - }, - stake_cry_horizon = { - name = "Nieboskłonna Stawka", - colour = "Horizon", - text = { - "Po wybraniu przeszkadzajki, dodaje", - "{C:attention}losową kartę{} do talii", - }, - }, - stake_cry_blossom = { - name = "Kwitnąca Stawka", - colour = "Blossom", - text = { - "{C:attention}Finałowe{} Przeszkadzajki Bossa mogą", - "pojawić się w {C:attention}dowolnym{} wejściu", - }, - }, - stake_cry_azure = { - name = "Azurowa Stawka", - colour = "Azure", - text = { - "Wartości Jokerów są", - "zmniejszone o {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Wschodząca Stawka", - colour = "Ascendant", - text = { - "{C:attention}-1{} slot w sklepie", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Znacznik astralny", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}astralny{}", - }, - }, - tag_cry_banana = { - name = "Znacznik bananowy", - text = { - "Tworzy {C:attention}#1#", - "{C:inactive}(wymaga miejsca){}", - }, - }, - tag_cry_bettertop_up = { - name = "Znacznik superulepszenia", - text = { - "Otrzymujesz maks. {C:attention}#1#", - "{C:green}Niepospolitych{} Jokerów", - "{C:inactive}(wymaga miejsca){}", - }, - }, - tag_cry_better_voucher = { - name = "Złoty znacznik kuponu", - text = { - "Podczas następnej wizyty w sklepie", - "pojawia się kupon {C:attention}#1#{} poziomu", - }, - }, - tag_cry_blur = { - name = "Znacznik niewyraźny", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}niewyraźny{}", - }, - }, - tag_cry_booster = { - name = "Znacznik wzmacniający", - text = { - "Następna {C:cry_code}paczka wzmacniająca{} ma", - "{C:attention}podwójną{} ilość kart i", - "{C:attention}podwójny{} wybór", - }, - }, - tag_cry_bundle = { - name = "Znacznik pakietowy", - text = { - "Daje {C:attention}znacznik standardowy{}, {C:tarot}znacznik czaru{},", - "{C:attention}znacznik pajaca{} i {C:planet}znacznik meteorytu", - }, - }, - tag_cry_cat = { - name = "Znacznik koci", - text = { "Miau.", "{C:inactive}Poziom {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Znacznik konsoli", - text = { - "Daje darmową", - "{C:cry_code}paczkę programową", - }, - }, - tag_cry_double_m = { - name = "Znacznik podwójnego M", - text = { - "W sklepie jest", - "{C:dark_edition}wesoły {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Znacznik władny", - text = { - "Daje darmową {C:spectral}paczkę Ducha", - "z {C:legendary,E:1}Duszą{} i {C:cry_exotic,E:1}Wrotami{}", - }, - }, - tag_cry_epic = { - name = "Znacznik epicki", - text = { - "W sklepie jest {C:cry_epic}epicki joker", - "za pół ceny", - }, - }, - tag_cry_gambler = { - name = "Znacznik hazardzisty", - text = { - "{C:green}#1# na #2#{} szans na", - "utworzenie {C:cry_exotic,E:1}znacznika władczego", - }, - }, - tag_cry_glass = { - name = "Znacznik kruchy", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}kruchy{}", - }, - }, - tag_cry_glitched = { - name = "Znacznik zglitchowany", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}zglitchowany{}", - }, - }, - tag_cry_gold = { - name = "Znacznik złoty", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}złoty{}", - }, - }, - tag_cry_gourmand = { - name = "Znacznik smakosza", - text = { - "W sklepie jest darmowy", - "{C:attention}kulinarny joker", - }, - }, - tag_cry_loss = { - name = "Strata", - text = { - "Daje darmową", - "{C:cry_ascendant}paczkę memiczną", - }, - }, - tag_cry_m = { - name = "Znacznik wesoły", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}wesoły{}", - }, - }, - tag_cry_memory = { - name = "Znacznik pamięciowy", - text = { - "Daje {C:attention}#1#{} kopie", - "poprzedniego użytego {C:attention}znacznika{}", - "w tym podejściu", - "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", - "{s:0.8,C:inactive}Obecnie: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Znacznik mozaiczny", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}mozaiczny{}", - }, - }, - tag_cry_oversat = { - name = "Znacznik przesycony", - text = { - "Następny joker podstawowy", - "sklepu jest darmowy", - "i staje się {C:dark_edition}przesycony{}", - }, - }, - tag_cry_quadruple = { - name = "Znacznik poczwórny", - text = { - "Daje {C:attention}#1#{} kopie", - "następnego wybranego {C:attention}znacznika", - "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", - }, - }, - tag_cry_quintuple = { - name = "Znacznik popiątny", - text = { - "Daje {C:attention}#1#{} kopie", - "następnego wybranego {C:attention}znacznika", - "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", - }, - }, - tag_cry_rework = { - name = "Znacznik przeróbki", - text = { - "W sklepie jest", - "{C:cry_code}przerobiony joker", - }, - }, - tag_cry_schematic = { - name = "Znacznik schematyczny", - text = { - "W sklepie jest", - "{C:attention}Burza Mózgów", - }, - }, - tag_cry_scope = { - name = "Znacznik zakresowy", - text = { - "{C:attention}+#1# {C:blue}do ręki{} i", - "{C:red}zrzutek{} w następnej rundzie", - }, - }, - tag_cry_triple = { - name = "Znacznik potrójny", - text = { - "Daje {C:attention}#1#{} kopie", - "następnego wybranego {C:attention}znacznika", - "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "Automatyzacja", - text = { - "Otrzymujesz {C:attention}#1#", - "losową kartę {C:cry_code}Kodową{}", - "{C:inactive}(wymaga miejsca)", - }, - }, - c_cry_eclipse = { - name = "Zaćmienie", - text = { - "Ulepsza {C:attention}#1#{} wybraną kartę", - "do: {C:attention}Karta Echa", - }, - }, - c_cry_meld = { - name = "Wtopienie", - text = { - "Wybierz {C:attention}jokera{} lub", - "{C:attention}kartę rozgrywającą{}, aby", - "stała się {C:dark_edition}Dwustronna", - }, - }, - c_cry_theblessing = { - name = "Błogosławieństwo", - text = { - "Otrzymujesz {C:attention}1{}", - "losowy {C:attention}przedmiot zużywalny{}", - "{C:inactive}(wymaga miejsca){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglif", - text = { - "Ustawia wejście na {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Puste płótno", - text = { - "{C:attention}+#1#{} do rozmiaru ręki", - }, - }, - v_cry_clone_machine = { - name = "Maszyna klonująca", - text = { - "Znaczniki podwójne stają się", - "{C:attention}Znacznikami popiątnymi{} i", - "pojawiają się {C:attention}4X{} częściej", - }, - }, - v_cry_command_prompt = { - name = "Wiersz poleceń", - text = { - "{C:cry_code}Karty Kodowe{}", - "można kupić", - "w {C:attention}sklepie{}", - }, - }, - v_cry_copies = { - name = "Kopie", - text = { - "Znaczniki podwójne stają się", - "{C:attention}Znacznikami potrójnymi{} i", - "pojawiają się {C:attention}2X{} częściej", - }, - }, - v_cry_curate = { - name = "Kunszt", - text = { - "Wszystkie karty", - "pojawiają się z", - "{C:dark_edition}edycją{}", - }, - }, - v_cry_dexterity = { - name = "Zręczność", - text = { - "Zyskujesz na stałe", - "{C:blue}+#1#{} do ręki", - "na rundę", - }, - }, - v_cry_double_down = { - name = "Podwojenie stawki", - text = { - "Po każdej rundzie,", - "{X:dark_edition,C:white} X1.5 {} do wszystkich wartości", - "tylnej części", - "{C:dark_edition}Kart Dwustronnych{}" - }, - }, - v_cry_double_slit = { - name = "Podwójna szczelina", - text = { - "{C:attention}Wtopienie{} mogą", - "pojawić się w sklepie i", - "{C:tarot}paczkach wiedzy tajemnej{}", - }, - }, - v_cry_double_vision = { - name = "Podwójne widzenie", - text = { - "{C:dark_edition}Karty Dwustronne{} pojawiają się", - "{C:attention}4X{} razy częściej", - }, - }, - v_cry_fabric = { - name = "Uniwersalna tkanina", - text = { - "{C:dark_edition}+#1#{} sloty na jokera", - }, - }, - v_cry_massproduct = { - name = "Masowa produkcja", - text = { - "Wszystkie karty i paczki", - "w sklepie kosztują {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Pieniężna Fasola", - text = { - "Zwiększa limit", - "zdobywanych odstetek", - "w każdej rundzie do {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Nadmiar zapasów++", - text = { - "{C:attention}+#1#{} slot na kartę", - "{C:attention}+#1#{} slot na paczkę wzmacniającą", - "w sklepie", - }, - }, - v_cry_pacclimator = { - name = "Planetarny aklimator", - text = { - "Karty {C:planet}Planet{} pojawiają się", - "{C:attention}X#1#{} częściej", - "w sklepie", - "Wszystkie następne Karty {C:planet}Planet{}", - "stają się {C:green}darmowe{}", - }, - }, - v_cry_pairamount_plus = { - name = "Paramount Plus", - text = { - "{C:attention}Aktywuje ponownie{} wszystkie M Jokery", - "za każdą Parę", - "{C:attention}zawartą{} w zagranej ręce", - }, - }, - v_cry_pairing = { - name = "Parowanie", - text = { - "{C:attention}Aktywuj ponownie{} wszystkie M Jokery", - "jeśli zagrana ręka ma {C:attention}Parę", - }, - }, - v_cry_quantum_computing = { - name = "Obliczenia kwantowe", - text = { - "{C:cry_code}Karty Kodowe{} mogą pojawić się w sklepie", - "z {C:dark_edition}negatywną{} edycją", - }, - }, - v_cry_repair_man = { - name = "Pan od par", - text = { - "{C:attention}Aktywuj ponownie{} wszystkie M Jokery", - "jeśli zagrana ręka zawiera {C:attention}Parę", - }, - }, - v_cry_rerollexchange = { - name = "Zmiana losu", - text = { - "Ponowne rzuty", - "kosztują {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satelitarny łącznik", - text = { - "{C:cry_code}Karty Kodowe{} mogą", - "pojawić się w każdej", - "{C:attention}paczce niebiańskiej{}", - }, - }, - v_cry_scope = { - name = "Zakres galaktyczny", - text = { - "Tworzy kartę {C:planet}Planety", - "za zagrany", - "{C:attention}układ pokerowy{}", - "{C:inactive}(wymaga miejsca){}", - }, - }, - v_cry_tacclimator = { - name = "Tarotowy aklimator", - text = { - "Karty {C:tarot}Tarota{} pojawiają się", - "{C:attention}X#1#{} razy częściej", - "w sklepie", - "Wszystkie następne Karty {C:tarot}Tarota{}", - "stają się {C:green}darmowe{}", - }, - }, - v_cry_tag_printer = { - name = "Drukarka znaczników", - text = { - "Znaczniki podwójne stają się", - "{C:attention}Znacznikami poczwórnymi{} i", - "pojawiają się {C:attention}3X{} częściej", - }, - }, - v_cry_threers = { - name = "3 x R", - text = { - "Na stałe", - "zyskujesz {C:red}+#1#{} do zrzutek", - "w każdej rundzie", - }, - }, - v_cry_stickyhand = { - name = "Lepka dłoń", - text = { - "{C:attention}+#1#{} do limitu wyboru kart", - }, - }, - v_cry_grapplinghook = { - name = "Hak chwytający", - text = { - "{C:attention}+#1#{} do limitu wyboru kart", - "{C:inactive,s:0.7}Możesz zrobić o wiele więcej, niż myślisz.{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hiperprzestrzenny łańcuch", - text = { - "{C:attention}+#1#{} do limitu wyboru kart", - "{C:inactive,s:0.7}UWAGA: W przyszłości będzie mieć dodatkowe funkcje{}", - }, - }, - }, - Other = { - banana = { - name = "Bananowy", - text = { - "{C:green}#1# na #2#{} szans, że ta karta", - "zostanie zniszczona na końcu rundy", - }, - }, - cry_rigged = { - name = "Gwarantowany", - text = { - "Wszystkie {C:cry_code}wymienione{} prawdopodobieństwa", - "są {C:cry_code}zagwarantowane", - }, - }, - cry_hooked = { - name = "Zahaczony", - text = { - "Kiedy ten joker jest {C:cry_code}aktywowany{},", - "aktywuje {C:cry_code}#1#", - }, - }, - cry_flickering = { - name = "Migoczący", - text = { - "Ulega samozniszczeniu", - "po {C:attention}#1#{} aktywacjach", - "{C:inactive}({C:attention}#2#{C:inactive} pozostało)" - }, - }, - cry_flickering_desc = { --used by choco dice - name = "Migoczący", - text = { - "Ulega samozniszczeniu po", - "{C:attention}#1#{} aktywacjach", - }, - }, - cry_possessed = { - name = "Opętany", - text = { - "{C:attention}Wyłącza{} i {C:attention}odwraca{}", - "efekty, jeśli to możliwe", - "Ulega zniszczeniu razem z {C:attention}Duchem" - }, - }, - --todo? add candy jokers to list - food_jokers = { - name = "Kulinarne jokery", - text = { - "{s:0.8}Gros Michel, Jajo, Lody, Cavendish,", - "{s:0.8}Czarna Fasola, Dietetyczna Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Ogór, Papryczka Chilli, Karmel,", - "{s:0.8}Nostalgiczny Cukierek, Fast Foodowe M, itd.", - }, - }, - ev_cry_choco0 = { - name = "", - text = { - "Szczegóły aktywnego", - "{C:cry_ascendant,E:1}wydarzenia{} pojawią się tutaj" - } - }, - ev_cry_choco1 = { - name = "1: Opętanie", - text = { - "{C:attention}Jokery{} i karty rozgrywające mają", - "{C:green}1 na 3{} szans na Migotanie", - "Tworzy {C:attention}Ducha", - "{C:inactive,s:0.7}Zostałeś opętany przez Ducha, a twoja", - "{C:inactive,s:0.7}świadomość migocze w tę i z powrotem." - } - }, - ev_cry_choco2 = { - name = "2: Nawiedzony Dom", - text = { - "Uniemożliwia pomijanie {C:attention}Przeszkadzajki{}", - "Jeden {C:attention}ponowny rzut{} na sklep", - "Ceny {C:attention}kuponów{} są podwojone", - "{C:inactive,s:0.7}Upiorne duchy przejęły kontrolę! Niczego nie dotykaj", - "{C:inactive,s:0.7}i uciekaj stąd jak najszybciej!", - } - }, - ev_cry_choco3 = { - name = "3: Napary Czarownnic", - text = { - "Tworzy 3 {C:attention}mikstury", - "Wypij jedną z nich podczas {C:attention}małej w ciemno{},", - "albo {C:attention}wszystkie{} negatywne efekty zostaną zastosowane w tym {C:attention}wejściu", - "{C:inactive,s:0.7}Zostałeś porwany przez wiedźmę!", - "{C:inactive,s:0.7}Oferuje ci trzy mikstury, obserwując cię bardzo uważnie.", - "{C:inactive,s:0.7}Wybierz jedną, zanim ona podejmie decyzję za ciebie", - } - }, - ev_cry_choco4 = { - name = "4: Księżycowa Otchłań", - text = { - "Zagrane karty mają {C:green}1 na 4{} szans", - "na zmianę w losową figurę karcianą o randze {C:club}Trefl{}", - "{C:attention}Mnożnik{} dzieli się przez ilość zagranych figur karcianych", - "{C:inactive,s:0.7}Nawet człowiek o czystym sercu,", - "{C:inactive,s:0.7}modlący się co noc..." - } - }, - ev_cry_choco5 = { - name = "5: Krwiopijca", - text = { - "Usuwa {C:attention}ulepszenia{} ze wszystkich zagranych kart", - "{C:green}1 na 3{} szans na zniszczenie", - "{C:heart}Kierów{} i {C:diamond}Pików{}", - "{C:inactive,s:0.7}Bądź czujny w środku nocy wobec", - "{C:inactive,s:0.7,E:1}tych w cieniu{C:inactive,s:0.7}, czekających na zaspokojenie ich pragnień..." - } - }, - ev_cry_choco6 = { - name = "6: Proszę, weź jednego", - text = { - "{C:attention}Na koniec rundy{}, otwierasz", - "losową {C:attention}paczkę wzmacniającą{}", - "{C:inactive,s:0.7}Spacerując po ulicach, twoim oczom rzuca się", - "{C:inactive,s:0.7}skrzynia pełna paczek wzmacniających. Masz, poczęstuj się!" - } - }, - ev_cry_choco7 = { - name = "7: Świąteczna Atmosfera", - text = { - "Tworzy 3 kopie karty {C:attention}Cukierek albo Psikus{} 1 {C:attention}Kosz Słodyczy", - "W sklepie co rundę pojawia się {C:attention}Cukierek albo Psikus{}", - "{C:cry_candy}Słodycze{} dają {C:money}$3{} po nabyciu", - "{C:inactive,s:0.7}Okolica jest przystrojona wszelkimi upiornościami,", - "{C:inactive,s:0.7}przyjdź i poczuj świąteczną atmosferę!" - } - }, - ev_cry_choco8 = { - name = "8: Cukierkowy Deszcz", - text = { - "Kiedy {C:attention}Przeszkadzajka{} jest pokonana, zyskujesz 1 {C:cry_candy}Cukierek{}", - "za każdą pozostałą rękę. Dostajesz {C:attention}kulinarnego jokera,{}", - "kiedy {C:cry_candy}Cukierek{} zostaje wytworzony", - "{C:inactive,s:0.7}Z nieba spada deszcz cukierków!", - "{C:inactive,s:0.7,E:1}Szybko, weź ile potrafisz!" - } - }, - ev_cry_choco9 = { - name = "9: Upiorne Bogactwa", - text = { - "Zyskujesz {C:money}$20", - "Wszystkie zdobyte {C:money}pieniądze{} są {C:attention}podwojone", - "{C:inactive,s:0.7}Widmo dawno zmarłego krewnego", - "{C:inactive,s:0.7}odwiedza cię w środku nocy!", - "{C:inactive,s:0.7}Bez słowa, kładzie worek pieniędzy w twe dłonie,", - "{C:inactive,s:0.7}uśmiecha się ciepło i rozpływa się w powietrzu.", - } - }, - ev_cry_choco10 = { - name = "10: Szanowany Antyk", - text = { - "{C:legendary}Legendary{} {C:attention}joker{} pojawia się", - "w slocie na {C:attention}Kupony{} za {C:money}$50", - "Da się go kupić tylko jako {C:attention}ostatni{} przedmiot sklepu", - "{C:inactive,s:0.7}Przyciągnąłeś uwagę ducha relikwii,", - "{C:inactive,s:0.7}lecz stłumienie go nie będzie łatwe.", - } - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Wieczny", - text = { - "Wszystkie karty w paczce", - "są {C:attention}Wieczne{}", - }, - }, - cry_perishable_booster = { - name = "Nietrwały", - text = { - "Wszystkie karty w paczce", - "są {C:attention}Nietrwałe{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "Wszystkie karty w paczce", - "są {C:attention}Wypożyczone{}", - }, - }, - cry_pinned_booster = { - name = "Przyszpilony", - text = { - "Wszystkie karty w paczce", - "są {C:attention}Przyszpilone{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "Wszystkie karty w paczce", - "są {C:attention}Bananowe{}", - }, - }, - cry_eternal_voucher = { - name = "Wieczny", - text = { - "Nie może być wymieniony", - }, - }, - cry_perishable_voucher = { - name = "Nietrwały", - text = { - "Osłabienie po", - "{C:attention}#1#{} rund", - "{C:inactive}(pozostało: {C:attention}#2#{C:inactive})", - }, - }, - cry_rental_voucher = { - name = "Wypożyczony", - text = { - "Tracisz {C:money}#1#${} na", - "końcu rundy", - }, - }, - cry_pinned_voucher = { - name = "Przyszpilony", - text = { - "Zostaje w sklepie", - "do momentu wykupienia", - }, - }, - cry_banana_voucher = { - name = "Bananowy", - text = { - "{C:green}#1# na #2#{} szans", - "na zniknięcie pod koniec rundy", - }, - }, - cry_perishable_consumeable = { - name = "Nietrwały", - text = { - "Osłabiony na", - "końcu rundy", - }, - }, - cry_rental_consumeable = { - name = "Wypożyczony", - text = { - "Tracisz {C:money}$#1#{} na koniec", - "rundy i po użyciu", - }, - }, - cry_pinned_consumeable = { - name = "Przyszpilony", - text = { - "Nie można użyć innych", - "nie-{C:attention}Przyszpilonych{} przedmiotów zużywalnych", - }, - }, - cry_banana_consumeable = { - name = "Bananowy", - text = { - "{C:green}#1# na #2#{} na zrobienie", - "niczego", - }, - }, - p_cry_code_normal_1 = { - name = "Paczka programowa", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", - }, - }, - p_cry_code_normal_2 = { - name = "Paczka programowa", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", - }, - }, - p_cry_code_jumbo_1 = { - name = "Olbrzymia paczka programowa", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", - }, - }, - p_cry_code_mega_1 = { - name = "Megapaczka programowa", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", - }, - }, - p_cry_empowered = { - name = "Paczka kart Ducha [Znacznik władny]", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2#{} kart {C:spectral}Ducha{} ", - "{s:0.8,C:inactive}(stworzona przez znacznik władczy)", - }, - }, - p_cry_meme_1 = { - name = "Paczka memiczna", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2# memicznych jokerów{}", - }, - }, - p_cry_meme_two = { - name = "Paczka memiczna", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2# memicznych jokerów{}", - }, - }, - p_cry_meme_three = { - name = "Paczka memiczna", - text = { - "Wybierz {C:attention}#1#{} z", - "{C:attention}#2# memicznych jokerów{}", - }, - }, - undiscovered_code = { - name = "Nie odkryto", - text = { - "Kup albo użyj", - "tej karty w", - "nierozstawionym podejściu,", - "by dowiedzieć się, jaki jest jej efekt" - } - }, - undiscovered_unique = { - name = "Nie odkryto", - text = { - "Kup albo użyj", - "tej karty w", - "nierozstawionym podejściu,", - "by dowiedzieć się, jaki jest jej efekt" - } - }, - cry_green_seal = { - name = "Zielona Pieczęć", - text = { - "Tworzy {C:cry_code}Kartę Kodową{}", - "kiedy zagrana karta nie zdobywa punktów", - "{C:inactive}(wymaga miejsca)", - }, - }, - cry_azure_seal = { - name = "Azurowa Pieczęć", - text = { - "Tworzy {C:attention}#1#{} {C:dark_edition}Negatywy{}", - "{C:planet}Kart Planet{} za zagrany", - "{C:attention}układ pokerowy{}, a następnie", - "{C:red}niszczy{} kartę", - }, - }, - blurred_sdm0 = { - name = "a", - text = { - "{C:inactive,s:0.8}\"Nienawidzę tej karty\" - SDM0, 2024{}", - }, - }, - }, - Unique = { - c_cry_potion = { - name = "Mikstura", - text = { - "Aplikuje nieznany", - "{C:attention}negatywny efekt{} kiedy spożyta", - "{C:inactive,s:0.7}Zdobyta poprzez Czekoladową Kostkę" - } - } - } - }, - misc = { - poker_hands = { - ['cry_Bulwark'] = "Bastion", - ['cry_Clusterfuck'] = "Totalny Rozpierdol", - ['cry_UltPair'] = "Para Ostateczna", - ['cry_WholeDeck'] = "Cała Pierdolona Talia", - }, - poker_hand_descriptions = { - ['cry_Bulwark'] = { - '5 kart bez rangi i koloru', - }, - ['cry_Clusterfuck'] = { - 'Co najmniej 8 kart, które', - 'nie zawierają Pary, Koloru, lub Strita', - }, - ['cry_UltPair'] = { - 'Two Two Pairs, where each', - 'Two Pair is a single suit, for a', - 'total of two suits between them', - }, - ['cry_WholeDeck'] = { - 'Ręka, która zawiera każdą', - 'kartę w 52-kartowej talii.', - 'Zwariowałeś?', - }, - }, - achievement_names = { - ach_cry_ace_in_crash = "Kieszonkowy As", - ach_cry_blurred_blurred_joker = "Prawie Niewidomy", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Przełam Nieskończoność", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Dom Wariatów", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Agent Nieruchomości", - ach_cry_jokes_on_you = "Wystrychnięty na Dudka", - ach_cry_niw_uoy = "!owtsęicywZ", - ach_cry_now_the_fun_begins = "Czas na Prawdziwą Zabawę", - ach_cry_patience_virtue = "Cierpliwość Jest Cnotą", - ach_cry_perfectly_balanced = "Idealnie Zbalansowane", - ach_cry_pull_request = "Prośba o Połączenie", - ach_cry_traffic_jam = "Korek Uliczny", - ach_cry_ult_full_skip = "Absolutny Przeskok", - ach_cry_used_crash = "Ostrzegaliśmy Cię", - ach_cry_what_have_you_done = "CO NAROBIŁEŚ!?", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Zdobądź niewyraźnego Niewyraźnego Jokera", - ach_cry_bullet_hell = "Posiadaj 15 AP Jokerów", - ach_cry_break_infinity = "Zdobądź 1.79e308 żetonów z pojedyńczej ręki", - ach_cry_cryptid_the_cryptid = "Użyj Kryptydy na Kryptydzie", - ach_cry_exodia = "Posiadaj 5 egzotycznych jokerów", - ach_cry_freak_house = "Zagraj Garnitur Koloru z 6 i 9 karo posiadając Najs", - ach_cry_googol_play_pass = "Zhakuj Kartę Googol Play", - ach_cry_haxxor = "Wpisz kod do gry", - ach_cry_home_realtor = "Aktywuj Szczęśliwy Dom przed 8 wejściem (bez Talii Równowagi/Antymateryjnej)", - ach_cry_jokes_on_you = "Aktywuj efekt Dowcipu w pierwszym wejściu i wygraj podejście", - ach_cry_niw_uoy = "Osiągnij stawkę -8", - ach_cry_now_the_fun_begins = "Zdobądź Płótno", - ach_cry_patience_virtue = "Podczas Lawendowej Pętli, przeczekaj 2 minuty zanim zagrasz pierwszą rękę i pokonaj przeszkadzajkę", - ach_cry_perfectly_balanced = "Pokonaj Bardzo Uczciwą Talię na poziomie trudności Dominująca stawka", - ach_cry_pull_request = "Spraw, aby ://COMMIT stworzył tego samego jokera, którego zniszczył", - ach_cry_traffic_jam = "Pokonaj wszystkie wyzwania Godzin Szczytu", - ach_cry_ult_full_skip = "Wygraj w 1 rundzie", - ach_cry_used_crash = "Użyj ://CRASH", - ach_cry_what_have_you_done = "Sprzedaj lub poświęć egzotycznego jokera", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Wojna na Sztylety", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Pojedyńcza Karta", - c_cry_rng = "RNG", - c_cry_rush_hour = "Godzina Szczytu I", - c_cry_rush_hour_ii = "Godzina Szczytu II", - c_cry_rush_hour_iii = "Godzina Szczytu III", - c_cry_sticker_sheet = "Arkusz z Naklejkami", - c_cry_sticker_sheet_plus = "Arkusz z Naklejkami+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Funkcje", - cry_set_music = "Muzyka", - cry_set_enable_features = "Wybierz funkcje do włączenia (zastosują się po ponownym uruchomieniu gry):", - cry_feat_achievements = "Wyzwania", - ["cry_feat_antimatter deck"] = "Talia Antymateryjna", - cry_feat_blinds = "Przeszkadzajki", - cry_feat_challenges = "Wyzwania", - ["cry_feat_code cards"] = "Karty Kodowe", - ["cry_feat_misc. decks"] = "Różnorodne Talie", - ["cry_feat_https module"] = "Moduł HTTPS", - ["cry_feat_timer mechanics"] = "Mechanizm czasomierza", - ["cry_feat_enhanced decks"] = "Ulepszone Talie", - ["cry_feat_epic jokers"] = "Epickie Jokery", - ["cry_feat_exotic jokers"] = "Egzotyczne Jokery", - ["cry_feat_m jokers"] = "M Jokery", - cry_feat_menu = "Niestandardowe Menu Główne", - ["cry_feat_misc."] = "Różnorodne Jokery", - ["cry_feat_misc. jokers"] = "Inne Jokery", - cry_feat_planets = "Karty Planet", - cry_feat_jokerdisplay = "JokerDisplay (Nie robi nic)", - cry_feat_tags = "Znaczniki", - cry_feat_sleeves = "Pokrowce", - cry_feat_spectrals = "Karty Ducha", - cry_feat_spooky = "Upiorna Aktualizacja", - ["cry_feat_more stakes"] = "Stawki", - cry_feat_vouchers = "Kupony", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Chroniony prawem autorskim)", - cry_mus_code = "Karty Kodowe (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Egzotyczne Jokery (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "Wysoki Wynik (Finałowy Boss [Dla Twojego Komputera] by AlexZGreat)", + }, + }, + }, + Spectral = { + c_cry_adversary = { + name = "Adwersarz", + text = { + "{C:red}Wszystkie{} twoje {C:attention}jokery{} dostają {C:dark_edition}Negatyw{},", + "{C:red}wszystkie{} {C:attention}jokery{} w sklepie są", + "{C:red}dwa razy{} droższe do końca podejścia", + }, + }, + c_cry_analog = { + name = "Analog", + text = { + "Tworzy {C:attention}#1#{} kopie", + "losowego {C:attention}jokera{}, niszczy", + "wszystkie inne jokery, {C:attention}+#2#{} do wejścia", + }, + }, + c_cry_chambered = { + name = "Komora", + text = { + "Tworzy {C:attention}#1#{} {C:dark_edition}negatywne{}", + "kopie", + "{C:attention}dowolnego{} przedmiotu zużywalnego", + "{C:inactive,s:0.8}Nie kopiuje Komory{}", + }, + }, + c_cry_conduit = { + name = "Przewód", + text = { + "Zamienia {C:attention}edycje{}", + "{C:attention}2{} wybranych kart lub {C:attention}jokerów{}", + }, + }, + c_cry_gateway = { + name = "Brama", + text = { + "Tworzy losowego", + "{C:cry_exotic,E:1}egzotycznego{C:attention} jokera{}, niszczy", + "wszystkie inne jokery", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Dodaje losowe {C:attention}przedmioty zużywalne{}", + "jako {C:dark_edition}ulepszenia{}", + "do kart trzymanych w ręce", + }, + }, + c_cry_lock = { + name = "Blokada", + text = { + "Usuwa {C:red}wszystkie{} naklejki", + "ze {C:red}wszystkich{} jokerów,", + "a następnie dodaje {C:purple,E:1}Wieczną{}", + "naklejkę na losowego {C:attention}jokera{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Tworzy {C:cry_code}wybranego", + "jokera lub kartę", + "{C:inactive,s:0.8}(Z wyjątkiem egzotycznych jokerów)", + }, + }, + c_cry_replica = { + name = "Replika", + text = { + "Zamienia wszystkie", + "karty w ręcę", + "na {C:attention}losową{}", + "kartę trzymaną w ręcę", + }, + }, + c_cry_ritual = { + name = "Rytuał", + text = { + "Dodaje {C:dark_edition}Negatyw{}, {C:dark_edition}mozaiczną{},", + "lub {C:dark_edition}astralną{} edycję do {C:attention}#1#{}", + "wybranej karty w ręcę", + }, + }, + c_cry_source = { + name = "Źródło", + text = { + "Dodaj {C:cry_code}Zieloną Pieczęć{}", + "do {C:attention}#1#{} wybranej", + "karty w ręcę", + }, + }, + c_cry_summoning = { + name = "Przywołanie", + text = { + "Tworzy losowego", + "{C:cry_epic}epickiego{} {C:joker}jokera{}, niszczy", + "jednego losowego {C:joker}jokera{}", + }, + }, + c_cry_trade = { + name = "Handel", + text = { + "{C:attention}Tracisz{} losowy kupon,", + "zyskujesz {C:attention}2{} losowe kupony", + }, + }, + c_cry_typhoon = { + name = "Tajfun", + text = { + "Dodaj {C:cry_azure}Azurową Pieczęć{}", + "do {C:attention}#1#{} wybranej", + "karty w ręcę", + }, + }, + c_cry_vacuum = { + name = "Próżnia", + text = { + "Usuwa {C:red}wszystkie {C:green}modyfikacje{}", + "ze {C:red}wszystkich{} kart trzymanych w ręcę,", + "Zarabiasz {C:money}$#1#{} za każdą usuniętą {C:green}modyfikację{}", + "{C:inactive,s:0.7}(na przykład ulepszenia, pieczęcie, edycje)", + }, + }, + c_cry_white_hole = { + name = "Biała Dziura", + text = { + "{C:attention}Usuwa{} wszystkie poziomy układów pokerowych,", + "ulepsza {C:legendary,E:1}najczęściej grany{} układ pokerowy", + "o {C:attention}3{} za każdy usunięty poziom", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Różowa Stawka", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Wymagany wynik skaluje się", + "szybciej dla każdego {C:attention}wejścia", + }, + }, + stake_cry_brown = { + name = "Brązowa Stawka", + colour = "Brown", + text = { + "Wszystkie {C:attention}naklejki{} są", + "ze sobą kompatybilne", + }, + }, + stake_cry_yellow = { + name = "Żółta Stawka", + colour = "Yellow", + text = { + "{C:attention}Naklejki{} mogą pojawić się", + "na wszystkich przedmiotach do kupienia", + }, + }, + stake_cry_jade = { + name = "Nefrytowa Stawka", + colour = "Jade", + text = { + "Karty mogą być {C:attention}dobierane w dół{}", + }, + }, + stake_cry_cyan = { + name = "Cyjanowa Stawka", + colour = "Cyan", + text = { + "{C:green}Niepospolite{} i {C:red}rzadkie{} jokery mają", + "mniejsze prawdopodobieństwo występowania", + }, + }, + stake_cry_gray = { + name = "Szara Stawka", + colour = "Gray", + text = { + "Koszt ponownych rzutów wzrasta o {C:attention}$2{} przy każdym użyciu", + }, + }, + stake_cry_crimson = { + name = "Karmazynowa Stawka", + colour = "Crimson", + text = { + "Kupony są odnawiane przy {C:attention}parzystych{} wejściach", + }, + }, + stake_cry_diamond = { + name = "Diamentowa Stawka", + colour = "Diamond", + text = { + "{C:attention}+2{} do wejścia", + }, + }, + stake_cry_amber = { + name = "Bursztynowa Stawka", + colour = "Amber", + text = { + "{C:attention}-1{} slot na paczki wzmacniające", + }, + }, + stake_cry_bronze = { + name = "Miedziowa Stawka", + colour = "Bronze", + text = { + "Kupony są {C:attention}50%{} droższe", + }, + }, + stake_cry_quartz = { + name = "Kwarcowa Stawka", + colour = "Quartz", + text = { + "Jokery mogą być {C:attention}przyszpilone{}", + "{s:0.8,C:inactive}(pozostają na pozycji najbardziej wysuniętej na lewo){}", + }, + }, + stake_cry_ruby = { + name = "Rubinowa Stawka", + colour = "Ruby", + text = { + "{C:attention}Duże w ciemno{} Blinds mogą stać się", + "{C:attention}Przeszkadzajkami Bossa{}", + }, + }, + stake_cry_glass = { + name = "Szklana Stawka", + colour = "Glass", + text = { + "Karty mogą się {C:attention}roztrzaskać{} przy punktacji", + }, + }, + stake_cry_sapphire = { + name = "Szafirowa Stawka", + colour = "Sapphire", + text = { + "Tracisz {C:attention}25%{} obecnych pieniędzy", + "na koniec rundy", + "{s:0.8,C:inactive}(maksymalnie $10){}", + }, + }, + stake_cry_emerald = { + name = "Szmaragdowa Stawka", + colour = "Emerald", + text = { + "Karty, paczki i kupony", + "mogą być {C:attention}dobierane w dół{}", + "{s:0.8,C:inactive}(Nie można ich sprawdzić przed zakupem){}", + }, + }, + stake_cry_platinum = { + name = "Platynowa Stawka", + colour = "Platinum", + text = { + "Małe w ciemno zostają {C:attention}usunięte{}", + }, + }, + stake_cry_twilight = { + name = "Zmierzchowa Stawka", + colour = "Twilight", + text = { + "Karty mogą być {C:attention}bananowe{}", + "{s:0.8,C:inactive}(1 na 10 szans, że zostaną zniszczone w każdej rundzie){}", + }, + }, + stake_cry_verdant = { + name = "Zarośnięta Stawka", + colour = "Verdant", + text = { + "Wymagany wynik skaluje się", + "szybciej dla każdego {C:attention}wejścia", + }, + }, + stake_cry_ember = { + name = "Rozżarzona Stawka", + colour = "Ember", + text = { + "Wszystkie przedmioty mają zerową wartość sprzedaży", + }, + }, + stake_cry_dawn = { + name = "Świtowa Stawka", + colour = "Dawn", + text = { + "Efekty kart Tarota i Ducha są", + "zredukowane do {C:attention}1{} karty", + "{s:0.8,C:inactive}(minimum 1){}", + }, + }, + stake_cry_horizon = { + name = "Nieboskłonna Stawka", + colour = "Horizon", + text = { + "Po wybraniu przeszkadzajki, dodaje", + "{C:attention}losową kartę{} do talii", + }, + }, + stake_cry_blossom = { + name = "Kwitnąca Stawka", + colour = "Blossom", + text = { + "{C:attention}Finałowe{} Przeszkadzajki Bossa mogą", + "pojawić się w {C:attention}dowolnym{} wejściu", + }, + }, + stake_cry_azure = { + name = "Azurowa Stawka", + colour = "Azure", + text = { + "Wartości Jokerów są", + "zmniejszone o {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Wschodząca Stawka", + colour = "Ascendant", + text = { + "{C:attention}-1{} slot w sklepie", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Znacznik astralny", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}astralny{}", + }, + }, + tag_cry_banana = { + name = "Znacznik bananowy", + text = { + "Tworzy {C:attention}#1#", + "{C:inactive}(wymaga miejsca){}", + }, + }, + tag_cry_bettertop_up = { + name = "Znacznik superulepszenia", + text = { + "Otrzymujesz maks. {C:attention}#1#", + "{C:green}Niepospolitych{} Jokerów", + "{C:inactive}(wymaga miejsca){}", + }, + }, + tag_cry_better_voucher = { + name = "Złoty znacznik kuponu", + text = { + "Podczas następnej wizyty w sklepie", + "pojawia się kupon {C:attention}#1#{} poziomu", + }, + }, + tag_cry_blur = { + name = "Znacznik niewyraźny", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}niewyraźny{}", + }, + }, + tag_cry_booster = { + name = "Znacznik wzmacniający", + text = { + "Następna {C:cry_code}paczka wzmacniająca{} ma", + "{C:attention}podwójną{} ilość kart i", + "{C:attention}podwójny{} wybór", + }, + }, + tag_cry_bundle = { + name = "Znacznik pakietowy", + text = { + "Daje {C:attention}znacznik standardowy{}, {C:tarot}znacznik czaru{},", + "{C:attention}znacznik pajaca{} i {C:planet}znacznik meteorytu", + }, + }, + tag_cry_cat = { + name = "Znacznik koci", + text = { "Miau.", "{C:inactive}Poziom {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Znacznik konsoli", + text = { + "Daje darmową", + "{C:cry_code}paczkę programową", + }, + }, + tag_cry_double_m = { + name = "Znacznik podwójnego M", + text = { + "W sklepie jest", + "{C:dark_edition}wesoły {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Znacznik władny", + text = { + "Daje darmową {C:spectral}paczkę Ducha", + "z {C:legendary,E:1}Duszą{} i {C:cry_exotic,E:1}Wrotami{}", + }, + }, + tag_cry_epic = { + name = "Znacznik epicki", + text = { + "W sklepie jest {C:cry_epic}epicki joker", + "za pół ceny", + }, + }, + tag_cry_gambler = { + name = "Znacznik hazardzisty", + text = { + "{C:green}#1# na #2#{} szans na", + "utworzenie {C:cry_exotic,E:1}znacznika władczego", + }, + }, + tag_cry_glass = { + name = "Znacznik kruchy", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}kruchy{}", + }, + }, + tag_cry_glitched = { + name = "Znacznik zglitchowany", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}zglitchowany{}", + }, + }, + tag_cry_gold = { + name = "Znacznik złoty", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}złoty{}", + }, + }, + tag_cry_gourmand = { + name = "Znacznik smakosza", + text = { + "W sklepie jest darmowy", + "{C:attention}kulinarny joker", + }, + }, + tag_cry_loss = { + name = "Strata", + text = { + "Daje darmową", + "{C:cry_ascendant}paczkę memiczną", + }, + }, + tag_cry_m = { + name = "Znacznik wesoły", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}wesoły{}", + }, + }, + tag_cry_memory = { + name = "Znacznik pamięciowy", + text = { + "Daje {C:attention}#1#{} kopie", + "poprzedniego użytego {C:attention}znacznika{}", + "w tym podejściu", + "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", + "{s:0.8,C:inactive}Obecnie: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Znacznik mozaiczny", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}mozaiczny{}", + }, + }, + tag_cry_oversat = { + name = "Znacznik przesycony", + text = { + "Następny joker podstawowy", + "sklepu jest darmowy", + "i staje się {C:dark_edition}przesycony{}", + }, + }, + tag_cry_quadruple = { + name = "Znacznik poczwórny", + text = { + "Daje {C:attention}#1#{} kopie", + "następnego wybranego {C:attention}znacznika", + "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", + }, + }, + tag_cry_quintuple = { + name = "Znacznik popiątny", + text = { + "Daje {C:attention}#1#{} kopie", + "następnego wybranego {C:attention}znacznika", + "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", + }, + }, + tag_cry_rework = { + name = "Znacznik przeróbki", + text = { + "W sklepie jest", + "{C:cry_code}przerobiony joker", + }, + }, + tag_cry_schematic = { + name = "Znacznik schematyczny", + text = { + "W sklepie jest", + "{C:attention}Burza Mózgów", + }, + }, + tag_cry_scope = { + name = "Znacznik zakresowy", + text = { + "{C:attention}+#1# {C:blue}do ręki{} i", + "{C:red}zrzutek{} w następnej rundzie", + }, + }, + tag_cry_triple = { + name = "Znacznik potrójny", + text = { + "Daje {C:attention}#1#{} kopie", + "następnego wybranego {C:attention}znacznika", + "{s:0.8,C:inactive}Z wyjątkiem znaczników kopiujących", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "Automatyzacja", + text = { + "Otrzymujesz {C:attention}#1#", + "losową kartę {C:cry_code}Kodową{}", + "{C:inactive}(wymaga miejsca)", + }, + }, + c_cry_eclipse = { + name = "Zaćmienie", + text = { + "Ulepsza {C:attention}#1#{} wybraną kartę", + "do: {C:attention}Karta Echa", + }, + }, + c_cry_meld = { + name = "Wtopienie", + text = { + "Wybierz {C:attention}jokera{} lub", + "{C:attention}kartę rozgrywającą{}, aby", + "stała się {C:dark_edition}Dwustronna", + }, + }, + c_cry_theblessing = { + name = "Błogosławieństwo", + text = { + "Otrzymujesz {C:attention}1{}", + "losowy {C:attention}przedmiot zużywalny{}", + "{C:inactive}(wymaga miejsca){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglif", + text = { + "Ustawia wejście na {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Puste płótno", + text = { + "{C:attention}+#1#{} do rozmiaru ręki", + }, + }, + v_cry_clone_machine = { + name = "Maszyna klonująca", + text = { + "Znaczniki podwójne stają się", + "{C:attention}Znacznikami popiątnymi{} i", + "pojawiają się {C:attention}4X{} częściej", + }, + }, + v_cry_command_prompt = { + name = "Wiersz poleceń", + text = { + "{C:cry_code}Karty Kodowe{}", + "można kupić", + "w {C:attention}sklepie{}", + }, + }, + v_cry_copies = { + name = "Kopie", + text = { + "Znaczniki podwójne stają się", + "{C:attention}Znacznikami potrójnymi{} i", + "pojawiają się {C:attention}2X{} częściej", + }, + }, + v_cry_curate = { + name = "Kunszt", + text = { + "Wszystkie karty", + "pojawiają się z", + "{C:dark_edition}edycją{}", + }, + }, + v_cry_dexterity = { + name = "Zręczność", + text = { + "Zyskujesz na stałe", + "{C:blue}+#1#{} do ręki", + "na rundę", + }, + }, + v_cry_double_down = { + name = "Podwojenie stawki", + text = { + "Po każdej rundzie,", + "{X:dark_edition,C:white} X1.5 {} do wszystkich wartości", + "tylnej części", + "{C:dark_edition}Kart Dwustronnych{}", + }, + }, + v_cry_double_slit = { + name = "Podwójna szczelina", + text = { + "{C:attention}Wtopienie{} mogą", + "pojawić się w sklepie i", + "{C:tarot}paczkach wiedzy tajemnej{}", + }, + }, + v_cry_double_vision = { + name = "Podwójne widzenie", + text = { + "{C:dark_edition}Karty Dwustronne{} pojawiają się", + "{C:attention}4X{} razy częściej", + }, + }, + v_cry_fabric = { + name = "Uniwersalna tkanina", + text = { + "{C:dark_edition}+#1#{} sloty na jokera", + }, + }, + v_cry_massproduct = { + name = "Masowa produkcja", + text = { + "Wszystkie karty i paczki", + "w sklepie kosztują {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Pieniężna Fasola", + text = { + "Zwiększa limit", + "zdobywanych odstetek", + "w każdej rundzie do {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Nadmiar zapasów++", + text = { + "{C:attention}+#1#{} slot na kartę", + "{C:attention}+#1#{} slot na paczkę wzmacniającą", + "w sklepie", + }, + }, + v_cry_pacclimator = { + name = "Planetarny aklimator", + text = { + "Karty {C:planet}Planet{} pojawiają się", + "{C:attention}X#1#{} częściej", + "w sklepie", + "Wszystkie następne Karty {C:planet}Planet{}", + "stają się {C:green}darmowe{}", + }, + }, + v_cry_pairamount_plus = { + name = "Paramount Plus", + text = { + "{C:attention}Aktywuje ponownie{} wszystkie M Jokery", + "za każdą Parę", + "{C:attention}zawartą{} w zagranej ręce", + }, + }, + v_cry_pairing = { + name = "Parowanie", + text = { + "{C:attention}Aktywuj ponownie{} wszystkie M Jokery", + "jeśli zagrana ręka ma {C:attention}Parę", + }, + }, + v_cry_quantum_computing = { + name = "Obliczenia kwantowe", + text = { + "{C:cry_code}Karty Kodowe{} mogą pojawić się w sklepie", + "z {C:dark_edition}negatywną{} edycją", + }, + }, + v_cry_repair_man = { + name = "Pan od par", + text = { + "{C:attention}Aktywuj ponownie{} wszystkie M Jokery", + "jeśli zagrana ręka zawiera {C:attention}Parę", + }, + }, + v_cry_rerollexchange = { + name = "Zmiana losu", + text = { + "Ponowne rzuty", + "kosztują {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satelitarny łącznik", + text = { + "{C:cry_code}Karty Kodowe{} mogą", + "pojawić się w każdej", + "{C:attention}paczce niebiańskiej{}", + }, + }, + v_cry_scope = { + name = "Zakres galaktyczny", + text = { + "Tworzy kartę {C:planet}Planety", + "za zagrany", + "{C:attention}układ pokerowy{}", + "{C:inactive}(wymaga miejsca){}", + }, + }, + v_cry_tacclimator = { + name = "Tarotowy aklimator", + text = { + "Karty {C:tarot}Tarota{} pojawiają się", + "{C:attention}X#1#{} razy częściej", + "w sklepie", + "Wszystkie następne Karty {C:tarot}Tarota{}", + "stają się {C:green}darmowe{}", + }, + }, + v_cry_tag_printer = { + name = "Drukarka znaczników", + text = { + "Znaczniki podwójne stają się", + "{C:attention}Znacznikami poczwórnymi{} i", + "pojawiają się {C:attention}3X{} częściej", + }, + }, + v_cry_threers = { + name = "3 x R", + text = { + "Na stałe", + "zyskujesz {C:red}+#1#{} do zrzutek", + "w każdej rundzie", + }, + }, + v_cry_stickyhand = { + name = "Lepka dłoń", + text = { + "{C:attention}+#1#{} do limitu wyboru kart", + }, + }, + v_cry_grapplinghook = { + name = "Hak chwytający", + text = { + "{C:attention}+#1#{} do limitu wyboru kart", + "{C:inactive,s:0.7}Możesz zrobić o wiele więcej, niż myślisz.{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hiperprzestrzenny łańcuch", + text = { + "{C:attention}+#1#{} do limitu wyboru kart", + "{C:inactive,s:0.7}UWAGA: W przyszłości będzie mieć dodatkowe funkcje{}", + }, + }, + }, + Other = { + banana = { + name = "Bananowy", + text = { + "{C:green}#1# na #2#{} szans, że ta karta", + "zostanie zniszczona na końcu rundy", + }, + }, + cry_rigged = { + name = "Gwarantowany", + text = { + "Wszystkie {C:cry_code}wymienione{} prawdopodobieństwa", + "są {C:cry_code}zagwarantowane", + }, + }, + cry_hooked = { + name = "Zahaczony", + text = { + "Kiedy ten joker jest {C:cry_code}aktywowany{},", + "aktywuje {C:cry_code}#1#", + }, + }, + cry_flickering = { + name = "Migoczący", + text = { + "Ulega samozniszczeniu", + "po {C:attention}#1#{} aktywacjach", + "{C:inactive}({C:attention}#2#{C:inactive} pozostało)", + }, + }, + cry_flickering_desc = { --used by choco dice + name = "Migoczący", + text = { + "Ulega samozniszczeniu po", + "{C:attention}#1#{} aktywacjach", + }, + }, + cry_possessed = { + name = "Opętany", + text = { + "{C:attention}Wyłącza{} i {C:attention}odwraca{}", + "efekty, jeśli to możliwe", + "Ulega zniszczeniu razem z {C:attention}Duchem", + }, + }, + --todo? add candy jokers to list + food_jokers = { + name = "Kulinarne jokery", + text = { + "{s:0.8}Gros Michel, Jajo, Lody, Cavendish,", + "{s:0.8}Czarna Fasola, Dietetyczna Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Ogór, Papryczka Chilli, Karmel,", + "{s:0.8}Nostalgiczny Cukierek, Fast Foodowe M, itd.", + }, + }, + ev_cry_choco0 = { + name = "", + text = { + "Szczegóły aktywnego", + "{C:cry_ascendant,E:1}wydarzenia{} pojawią się tutaj", + }, + }, + ev_cry_choco1 = { + name = "1: Opętanie", + text = { + "{C:attention}Jokery{} i karty rozgrywające mają", + "{C:green}1 na 3{} szans na Migotanie", + "Tworzy {C:attention}Ducha", + "{C:inactive,s:0.7}Zostałeś opętany przez Ducha, a twoja", + "{C:inactive,s:0.7}świadomość migocze w tę i z powrotem.", + }, + }, + ev_cry_choco2 = { + name = "2: Nawiedzony Dom", + text = { + "Uniemożliwia pomijanie {C:attention}Przeszkadzajki{}", + "Jeden {C:attention}ponowny rzut{} na sklep", + "Ceny {C:attention}kuponów{} są podwojone", + "{C:inactive,s:0.7}Upiorne duchy przejęły kontrolę! Niczego nie dotykaj", + "{C:inactive,s:0.7}i uciekaj stąd jak najszybciej!", + }, + }, + ev_cry_choco3 = { + name = "3: Napary Czarownnic", + text = { + "Tworzy 3 {C:attention}mikstury", + "Wypij jedną z nich podczas {C:attention}małej w ciemno{},", + "albo {C:attention}wszystkie{} negatywne efekty zostaną zastosowane w tym {C:attention}wejściu", + "{C:inactive,s:0.7}Zostałeś porwany przez wiedźmę!", + "{C:inactive,s:0.7}Oferuje ci trzy mikstury, obserwując cię bardzo uważnie.", + "{C:inactive,s:0.7}Wybierz jedną, zanim ona podejmie decyzję za ciebie", + }, + }, + ev_cry_choco4 = { + name = "4: Księżycowa Otchłań", + text = { + "Zagrane karty mają {C:green}1 na 4{} szans", + "na zmianę w losową figurę karcianą o randze {C:club}Trefl{}", + "{C:attention}Mnożnik{} dzieli się przez ilość zagranych figur karcianych", + "{C:inactive,s:0.7}Nawet człowiek o czystym sercu,", + "{C:inactive,s:0.7}modlący się co noc...", + }, + }, + ev_cry_choco5 = { + name = "5: Krwiopijca", + text = { + "Usuwa {C:attention}ulepszenia{} ze wszystkich zagranych kart", + "{C:green}1 na 3{} szans na zniszczenie", + "{C:heart}Kierów{} i {C:diamond}Pików{}", + "{C:inactive,s:0.7}Bądź czujny w środku nocy wobec", + "{C:inactive,s:0.7,E:1}tych w cieniu{C:inactive,s:0.7}, czekających na zaspokojenie ich pragnień...", + }, + }, + ev_cry_choco6 = { + name = "6: Proszę, weź jednego", + text = { + "{C:attention}Na koniec rundy{}, otwierasz", + "losową {C:attention}paczkę wzmacniającą{}", + "{C:inactive,s:0.7}Spacerując po ulicach, twoim oczom rzuca się", + "{C:inactive,s:0.7}skrzynia pełna paczek wzmacniających. Masz, poczęstuj się!", + }, + }, + ev_cry_choco7 = { + name = "7: Świąteczna Atmosfera", + text = { + "Tworzy 3 kopie karty {C:attention}Cukierek albo Psikus{} 1 {C:attention}Kosz Słodyczy", + "W sklepie co rundę pojawia się {C:attention}Cukierek albo Psikus{}", + "{C:cry_candy}Słodycze{} dają {C:money}$3{} po nabyciu", + "{C:inactive,s:0.7}Okolica jest przystrojona wszelkimi upiornościami,", + "{C:inactive,s:0.7}przyjdź i poczuj świąteczną atmosferę!", + }, + }, + ev_cry_choco8 = { + name = "8: Cukierkowy Deszcz", + text = { + "Kiedy {C:attention}Przeszkadzajka{} jest pokonana, zyskujesz 1 {C:cry_candy}Cukierek{}", + "za każdą pozostałą rękę. Dostajesz {C:attention}kulinarnego jokera,{}", + "kiedy {C:cry_candy}Cukierek{} zostaje wytworzony", + "{C:inactive,s:0.7}Z nieba spada deszcz cukierków!", + "{C:inactive,s:0.7,E:1}Szybko, weź ile potrafisz!", + }, + }, + ev_cry_choco9 = { + name = "9: Upiorne Bogactwa", + text = { + "Zyskujesz {C:money}$20", + "Wszystkie zdobyte {C:money}pieniądze{} są {C:attention}podwojone", + "{C:inactive,s:0.7}Widmo dawno zmarłego krewnego", + "{C:inactive,s:0.7}odwiedza cię w środku nocy!", + "{C:inactive,s:0.7}Bez słowa, kładzie worek pieniędzy w twe dłonie,", + "{C:inactive,s:0.7}uśmiecha się ciepło i rozpływa się w powietrzu.", + }, + }, + ev_cry_choco10 = { + name = "10: Szanowany Antyk", + text = { + "{C:legendary}Legendary{} {C:attention}joker{} pojawia się", + "w slocie na {C:attention}Kupony{} za {C:money}$50", + "Da się go kupić tylko jako {C:attention}ostatni{} przedmiot sklepu", + "{C:inactive,s:0.7}Przyciągnąłeś uwagę ducha relikwii,", + "{C:inactive,s:0.7}lecz stłumienie go nie będzie łatwe.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Wieczny", + text = { + "Wszystkie karty w paczce", + "są {C:attention}Wieczne{}", + }, + }, + cry_perishable_booster = { + name = "Nietrwały", + text = { + "Wszystkie karty w paczce", + "są {C:attention}Nietrwałe{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "Wszystkie karty w paczce", + "są {C:attention}Wypożyczone{}", + }, + }, + cry_pinned_booster = { + name = "Przyszpilony", + text = { + "Wszystkie karty w paczce", + "są {C:attention}Przyszpilone{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "Wszystkie karty w paczce", + "są {C:attention}Bananowe{}", + }, + }, + cry_eternal_voucher = { + name = "Wieczny", + text = { + "Nie może być wymieniony", + }, + }, + cry_perishable_voucher = { + name = "Nietrwały", + text = { + "Osłabienie po", + "{C:attention}#1#{} rund", + "{C:inactive}(pozostało: {C:attention}#2#{C:inactive})", + }, + }, + cry_rental_voucher = { + name = "Wypożyczony", + text = { + "Tracisz {C:money}#1#${} na", + "końcu rundy", + }, + }, + cry_pinned_voucher = { + name = "Przyszpilony", + text = { + "Zostaje w sklepie", + "do momentu wykupienia", + }, + }, + cry_banana_voucher = { + name = "Bananowy", + text = { + "{C:green}#1# na #2#{} szans", + "na zniknięcie pod koniec rundy", + }, + }, + cry_perishable_consumeable = { + name = "Nietrwały", + text = { + "Osłabiony na", + "końcu rundy", + }, + }, + cry_rental_consumeable = { + name = "Wypożyczony", + text = { + "Tracisz {C:money}$#1#{} na koniec", + "rundy i po użyciu", + }, + }, + cry_pinned_consumeable = { + name = "Przyszpilony", + text = { + "Nie można użyć innych", + "nie-{C:attention}Przyszpilonych{} przedmiotów zużywalnych", + }, + }, + cry_banana_consumeable = { + name = "Bananowy", + text = { + "{C:green}#1# na #2#{} na zrobienie", + "niczego", + }, + }, + p_cry_code_normal_1 = { + name = "Paczka programowa", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", + }, + }, + p_cry_code_normal_2 = { + name = "Paczka programowa", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", + }, + }, + p_cry_code_jumbo_1 = { + name = "Olbrzymia paczka programowa", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", + }, + }, + p_cry_code_mega_1 = { + name = "Megapaczka programowa", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2#{} kart {C:cry_code}Kodowych{}", + }, + }, + p_cry_empowered = { + name = "Paczka kart Ducha [Znacznik władny]", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2#{} kart {C:spectral}Ducha{} ", + "{s:0.8,C:inactive}(stworzona przez znacznik władczy)", + }, + }, + p_cry_meme_1 = { + name = "Paczka memiczna", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2# memicznych jokerów{}", + }, + }, + p_cry_meme_two = { + name = "Paczka memiczna", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2# memicznych jokerów{}", + }, + }, + p_cry_meme_three = { + name = "Paczka memiczna", + text = { + "Wybierz {C:attention}#1#{} z", + "{C:attention}#2# memicznych jokerów{}", + }, + }, + undiscovered_code = { + name = "Nie odkryto", + text = { + "Kup albo użyj", + "tej karty w", + "nierozstawionym podejściu,", + "by dowiedzieć się, jaki jest jej efekt", + }, + }, + undiscovered_unique = { + name = "Nie odkryto", + text = { + "Kup albo użyj", + "tej karty w", + "nierozstawionym podejściu,", + "by dowiedzieć się, jaki jest jej efekt", + }, + }, + cry_green_seal = { + name = "Zielona Pieczęć", + text = { + "Tworzy {C:cry_code}Kartę Kodową{}", + "kiedy zagrana karta nie zdobywa punktów", + "{C:inactive}(wymaga miejsca)", + }, + }, + cry_azure_seal = { + name = "Azurowa Pieczęć", + text = { + "Tworzy {C:attention}#1#{} {C:dark_edition}Negatywy{}", + "{C:planet}Kart Planet{} za zagrany", + "{C:attention}układ pokerowy{}, a następnie", + "{C:red}niszczy{} kartę", + }, + }, + blurred_sdm0 = { + name = "a", + text = { + '{C:inactive,s:0.8}"Nienawidzę tej karty" - SDM0, 2024{}', + }, + }, + }, + Unique = { + c_cry_potion = { + name = "Mikstura", + text = { + "Aplikuje nieznany", + "{C:attention}negatywny efekt{} kiedy spożyta", + "{C:inactive,s:0.7}Zdobyta poprzez Czekoladową Kostkę", + }, + }, + }, + }, + misc = { + poker_hands = { + ["cry_Bulwark"] = "Bastion", + ["cry_Clusterfuck"] = "Totalny Rozpierdol", + ["cry_UltPair"] = "Para Ostateczna", + ["cry_WholeDeck"] = "Cała Pierdolona Talia", + }, + poker_hand_descriptions = { + ["cry_Bulwark"] = { + "5 kart bez rangi i koloru", + }, + ["cry_Clusterfuck"] = { + "Co najmniej 8 kart, które", + "nie zawierają Pary, Koloru, lub Strita", + }, + ["cry_UltPair"] = { + "Two Two Pairs, where each", + "Two Pair is a single suit, for a", + "total of two suits between them", + }, + ["cry_WholeDeck"] = { + "Ręka, która zawiera każdą", + "kartę w 52-kartowej talii.", + "Zwariowałeś?", + }, + }, + achievement_names = { + ach_cry_ace_in_crash = "Kieszonkowy As", + ach_cry_blurred_blurred_joker = "Prawie Niewidomy", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Przełam Nieskończoność", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Dom Wariatów", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Agent Nieruchomości", + ach_cry_jokes_on_you = "Wystrychnięty na Dudka", + ach_cry_niw_uoy = "!owtsęicywZ", + ach_cry_now_the_fun_begins = "Czas na Prawdziwą Zabawę", + ach_cry_patience_virtue = "Cierpliwość Jest Cnotą", + ach_cry_perfectly_balanced = "Idealnie Zbalansowane", + ach_cry_pull_request = "Prośba o Połączenie", + ach_cry_traffic_jam = "Korek Uliczny", + ach_cry_ult_full_skip = "Absolutny Przeskok", + ach_cry_used_crash = "Ostrzegaliśmy Cię", + ach_cry_what_have_you_done = "CO NAROBIŁEŚ!?", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Zdobądź niewyraźnego Niewyraźnego Jokera", + ach_cry_bullet_hell = "Posiadaj 15 AP Jokerów", + ach_cry_break_infinity = "Zdobądź 1.79e308 żetonów z pojedyńczej ręki", + ach_cry_cryptid_the_cryptid = "Użyj Kryptydy na Kryptydzie", + ach_cry_exodia = "Posiadaj 5 egzotycznych jokerów", + ach_cry_freak_house = "Zagraj Garnitur Koloru z 6 i 9 karo posiadając Najs", + ach_cry_googol_play_pass = "Zhakuj Kartę Googol Play", + ach_cry_haxxor = "Wpisz kod do gry", + ach_cry_home_realtor = "Aktywuj Szczęśliwy Dom przed 8 wejściem (bez Talii Równowagi/Antymateryjnej)", + ach_cry_jokes_on_you = "Aktywuj efekt Dowcipu w pierwszym wejściu i wygraj podejście", + ach_cry_niw_uoy = "Osiągnij stawkę -8", + ach_cry_now_the_fun_begins = "Zdobądź Płótno", + ach_cry_patience_virtue = "Podczas Lawendowej Pętli, przeczekaj 2 minuty zanim zagrasz pierwszą rękę i pokonaj przeszkadzajkę", + ach_cry_perfectly_balanced = "Pokonaj Bardzo Uczciwą Talię na poziomie trudności Dominująca stawka", + ach_cry_pull_request = "Spraw, aby ://COMMIT stworzył tego samego jokera, którego zniszczył", + ach_cry_traffic_jam = "Pokonaj wszystkie wyzwania Godzin Szczytu", + ach_cry_ult_full_skip = "Wygraj w 1 rundzie", + ach_cry_used_crash = "Użyj ://CRASH", + ach_cry_what_have_you_done = "Sprzedaj lub poświęć egzotycznego jokera", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Wojna na Sztylety", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Pojedyńcza Karta", + c_cry_rng = "RNG", + c_cry_rush_hour = "Godzina Szczytu I", + c_cry_rush_hour_ii = "Godzina Szczytu II", + c_cry_rush_hour_iii = "Godzina Szczytu III", + c_cry_sticker_sheet = "Arkusz z Naklejkami", + c_cry_sticker_sheet_plus = "Arkusz z Naklejkami+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Funkcje", + cry_set_music = "Muzyka", + cry_set_enable_features = "Wybierz funkcje do włączenia (zastosują się po ponownym uruchomieniu gry):", + cry_feat_achievements = "Wyzwania", + ["cry_feat_antimatter deck"] = "Talia Antymateryjna", + cry_feat_blinds = "Przeszkadzajki", + cry_feat_challenges = "Wyzwania", + ["cry_feat_code cards"] = "Karty Kodowe", + ["cry_feat_misc. decks"] = "Różnorodne Talie", + ["cry_feat_https module"] = "Moduł HTTPS", + ["cry_feat_timer mechanics"] = "Mechanizm czasomierza", + ["cry_feat_enhanced decks"] = "Ulepszone Talie", + ["cry_feat_epic jokers"] = "Epickie Jokery", + ["cry_feat_exotic jokers"] = "Egzotyczne Jokery", + ["cry_feat_m jokers"] = "M Jokery", + cry_feat_menu = "Niestandardowe Menu Główne", + ["cry_feat_misc."] = "Różnorodne Jokery", + ["cry_feat_misc. jokers"] = "Inne Jokery", + cry_feat_planets = "Karty Planet", + cry_feat_jokerdisplay = "JokerDisplay (Nie robi nic)", + cry_feat_tags = "Znaczniki", + cry_feat_sleeves = "Pokrowce", + cry_feat_spectrals = "Karty Ducha", + cry_feat_spooky = "Upiorna Aktualizacja", + ["cry_feat_more stakes"] = "Stawki", + cry_feat_vouchers = "Kupony", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Chroniony prawem autorskim)", + cry_mus_code = "Karty Kodowe (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Egzotyczne Jokery (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "Wysoki Wynik (Finałowy Boss [Dla Twojego Komputera] by AlexZGreat)", - k_cry_program_pack = "Paczka Programowa", - k_cry_meme_pack = "Paczka Memiczna", + k_cry_program_pack = "Paczka Programowa", + k_cry_meme_pack = "Paczka Memiczna", - cry_critical_hit_ex = "Trafienie Krytyczne!", - cry_critical_miss_ex = "Krytyczne chybienie!", + cry_critical_hit_ex = "Trafienie Krytyczne!", + cry_critical_miss_ex = "Krytyczne chybienie!", - cry_potion1 = "-1 do wszystkich układów pokerowych", - cry_potion2 = "X1.15 rozmiaru Przeszkadzajki", - cry_potion3 = "-1 Ręka i zrzutka", + cry_potion1 = "-1 do wszystkich układów pokerowych", + cry_potion2 = "X1.15 rozmiaru Przeszkadzajki", + cry_potion3 = "-1 Ręka i zrzutka", - cry_debuff_oldhouse = "Full House nie może być zagrany", - cry_debuff_oldarm = "Należy zagrać 4 albo mniej kart", - cry_debuff_oldpillar = " Strit nie może być zagrany", - cry_debuff_oldflint = "Kolor nie może być zagrany", - cry_debuff_oldmark = "Zagranie nie może posiadać Pary", - cry_debuff_obsidian_orb = "Aplikuje zdolności wszystkich pokonanych bossów", + cry_debuff_oldhouse = "Full House nie może być zagrany", + cry_debuff_oldarm = "Należy zagrać 4 albo mniej kart", + cry_debuff_oldpillar = " Strit nie może być zagrany", + cry_debuff_oldflint = "Kolor nie może być zagrany", + cry_debuff_oldmark = "Zagranie nie może posiadać Pary", + cry_debuff_obsidian_orb = "Aplikuje zdolności wszystkich pokonanych bossów", - k_code = "Kod", - k_unique = "Unikalny", - b_code_cards = "Karty Kodowe", - b_unique_cards = "Unikalne Karty", - b_pull = "PULL", - cry_hooked_ex = "Zahaczone!", - k_end_blind = "Koniec przeszkadzajki", + k_code = "Kod", + k_unique = "Unikalny", + b_code_cards = "Karty Kodowe", + b_unique_cards = "Unikalne Karty", + b_pull = "PULL", + cry_hooked_ex = "Zahaczone!", + k_end_blind = "Koniec przeszkadzajki", - cry_code_rank = "WPROWADŹ RANGĘ", - cry_code_enh = "WPROWADŹ ULEPSZENIE", - cry_code_hand = "WPROWADŹ UKŁAD POKEROWY", - cry_code_enter_card = "WPROWADŹ KARTĘ", - cry_code_apply = "ZASTOSUJ", - cry_code_apply_previous = "ZASTOSUJ POPRZEDNI", - cry_code_exploit = "WYKORZYSTAJ", - cry_code_exploit_previous = "WYKORZYSTAJ POPRZEDNI", - cry_code_create = "STWÓRZ", - cry_code_create_previous = "STWÓRZ POPRZEDNI", - cry_code_execute = "WYKONAJ", - cry_code_cancel = "ANULUJ", + cry_code_rank = "WPROWADŹ RANGĘ", + cry_code_enh = "WPROWADŹ ULEPSZENIE", + cry_code_hand = "WPROWADŹ UKŁAD POKEROWY", + cry_code_enter_card = "WPROWADŹ KARTĘ", + cry_code_apply = "ZASTOSUJ", + cry_code_apply_previous = "ZASTOSUJ POPRZEDNI", + cry_code_exploit = "WYKORZYSTAJ", + cry_code_exploit_previous = "WYKORZYSTAJ POPRZEDNI", + cry_code_create = "STWÓRZ", + cry_code_create_previous = "STWÓRZ POPRZEDNI", + cry_code_execute = "WYKONAJ", + cry_code_cancel = "ANULUJ", - b_flip = "ODWRÓĆ", - b_merge = "SCAL", + b_flip = "ODWRÓĆ", + b_merge = "SCAL", - cry_hand_bulwark = "Bastion", - cry_hand_clusterfuck = "Totalny Rozpierdol", - cry_hand_ultpair = "Para Ostateczna", + cry_hand_bulwark = "Bastion", + cry_hand_clusterfuck = "Totalny Rozpierdol", + cry_hand_ultpair = "Para Ostateczna", - cry_again_q = "Znowu?", - cry_curse = "Klątwa", - cry_curse_ex = "Klątwa!", - cry_sobbing = "Pomóż mi...", - cry_gaming = "Granie", - cry_gaming_ex = "Granie!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Uśmiechnij się!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 runda", - cry_plus_cryptid = "+1 Kryptyda", - cry_no_triggers = "Koniec aktywacji!", - cry_unredeemed = "Nieodkupiony...", - cry_active = "Aktywny", - cry_inactive = "Nieaktywny", + cry_again_q = "Znowu?", + cry_curse = "Klątwa", + cry_curse_ex = "Klątwa!", + cry_sobbing = "Pomóż mi...", + cry_gaming = "Granie", + cry_gaming_ex = "Granie!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Uśmiechnij się!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 runda", + cry_plus_cryptid = "+1 Kryptyda", + cry_no_triggers = "Koniec aktywacji!", + cry_unredeemed = "Nieodkupiony...", + cry_active = "Aktywny", + cry_inactive = "Nieaktywny", - k_disable_music = "Wyłącz muzykę", + k_disable_music = "Wyłącz muzykę", - k_cry_epic = "Epicki", - k_cry_exotic = "Egzotyczny", - k_cry_candy = "Cukierek", - k_cry_cursed = "Przeklęty", - k_planet_disc = "Dysk Protoplanetarny", - k_planet_satellite = "Naturalne Satelity", - k_planet_universe = "Cały Pierdolony Wszechświat", + k_cry_epic = "Epicki", + k_cry_exotic = "Egzotyczny", + k_cry_candy = "Cukierek", + k_cry_cursed = "Przeklęty", + k_planet_disc = "Dysk Protoplanetarny", + k_planet_satellite = "Naturalne Satelity", + k_planet_universe = "Cały Pierdolony Wszechświat", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Informacja o prawach autorskich", - cry_notif_jimball_d1 = "Jimball gra utwór \"Funkytown\",", - cry_notif_jimball_d2 = "który jest objęty prawami autorskimi i nie może być", - cry_notif_jimball_d3 = "używany do streamów i filmów.", - }, - labels = { - food_jokers = "Kulinarne jokery", - banana = "Bananowy", - code = "Kodowy", - unique = "Unikalny", - cry_rigged = "Gwarantowany", - cry_hooked = "Zahaczony", - cry_flickering = "Migoczący", - cry_possessed = "Opętany", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Informacja o prawach autorskich", + cry_notif_jimball_d1 = 'Jimball gra utwór "Funkytown",', + cry_notif_jimball_d2 = "który jest objęty prawami autorskimi i nie może być", + cry_notif_jimball_d3 = "używany do streamów i filmów.", + }, + labels = { + food_jokers = "Kulinarne jokery", + banana = "Bananowy", + code = "Kodowy", + unique = "Unikalny", + cry_rigged = "Gwarantowany", + cry_hooked = "Zahaczony", + cry_flickering = "Migoczący", + cry_possessed = "Opętany", - cry_green_seal = "Zielona Pieczęć", - cry_azure_seal = "Azurowa Pieczęć", + cry_green_seal = "Zielona Pieczęć", + cry_azure_seal = "Azurowa Pieczęć", - cry_astral = "Astralna", - cry_blur = "Niewyraźna", - cry_double_sided = "Dwustronna", - cry_glass = "Krucha", - cry_glitched = "Zgliczowana", - cry_gold = "Złota", - cry_m = "Wesoła", - cry_mosaic = "Mozaiczna", - cry_noisy = "Hałaśliwa", - cry_oversat = "Przesycona", + cry_astral = "Astralna", + cry_blur = "Niewyraźna", + cry_double_sided = "Dwustronna", + cry_glass = "Krucha", + cry_glitched = "Zgliczowana", + cry_gold = "Złota", + cry_m = "Wesoła", + cry_mosaic = "Mozaiczna", + cry_noisy = "Hałaśliwa", + cry_oversat = "Przesycona", - k_cry_epic = "Epicki", - k_cry_exotic = "Egzotyczny", - k_cry_candy = "Cukierek", - k_cry_cursed = "Przeklęty", - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_candy = {"+#1# Candy"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, + k_cry_epic = "Epicki", + k_cry_exotic = "Egzotyczny", + k_cry_candy = "Cukierek", + k_cry_cursed = "Przeklęty", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_candy = { "+#1# Candy" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, + a_tag_minus = { "-#1# Tag" }, + a_tags_minus = { "-#1# Tags" }, + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - - cry_art = {"Art: #1#"}, - cry_code = {"Code: #1#"}, - cry_idea = {"Idea: #1#"} - }, - v_text = { - ch_c_cry_all_perishable = {"Wszystkie jokery są {C:eternal}nietrwałe{}"}, - ch_c_cry_all_rental = {"Wszystkie jokery są {C:eternal}wypożyczone{}"}, - ch_c_cry_all_pinned = {"Wszystkie jokery są {C:eternal}przyszpilone{}"}, - ch_c_cry_all_banana = {"Wszystkie jokery są {C:eternal}bananowe{}"}, - ch_c_all_rnj = {"Wszystkie jokery to {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"Wszystkie karty dostępne w sklepie mają wszystkie naklejki"}, - ch_c_cry_rush_hour = {"Wszystkie bossy to {C:attention}Zegar{} lub {C:attention}Lawendowa Pętla"}, - ch_c_cry_rush_hour_ii = {"Wszystkie przeszkadzajki są {C:attention}przeszkadzajkami bossa{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}Zegar{} i {C:attention}Lawendowa Pętla{} skalują się {C:attention}dwa{} razy szybciej"}, - ch_c_cry_no_tags = {"Pomijanie jest {C:attention}zablokowane{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Kupony{} nie pojawiają się w sklepie"}, - ch_c_cry_no_boosters = {"{C:attention}Paczki wzmacniające{} nie pojawiają się w sklepie"}, - ch_c_cry_no_rerolls = {"Ponowne rzuty są {C:attention}zablokowane{}"}, - ch_c_cry_no_consumables = {"{C:attention}Przedmioty zużywalne{} nie pojawiają się"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + cry_art = { "Art: #1#" }, + cry_code = { "Code: #1#" }, + cry_idea = { "Idea: #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "Wszystkie jokery są {C:eternal}nietrwałe{}" }, + ch_c_cry_all_rental = { "Wszystkie jokery są {C:eternal}wypożyczone{}" }, + ch_c_cry_all_pinned = { "Wszystkie jokery są {C:eternal}przyszpilone{}" }, + ch_c_cry_all_banana = { "Wszystkie jokery są {C:eternal}bananowe{}" }, + ch_c_all_rnj = { "Wszystkie jokery to {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "Wszystkie karty dostępne w sklepie mają wszystkie naklejki" }, + ch_c_cry_rush_hour = { "Wszystkie bossy to {C:attention}Zegar{} lub {C:attention}Lawendowa Pętla" }, + ch_c_cry_rush_hour_ii = { "Wszystkie przeszkadzajki są {C:attention}przeszkadzajkami bossa{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}Zegar{} i {C:attention}Lawendowa Pętla{} skalują się {C:attention}dwa{} razy szybciej", + }, + ch_c_cry_no_tags = { "Pomijanie jest {C:attention}zablokowane{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Kupony{} nie pojawiają się w sklepie" }, + ch_c_cry_no_boosters = { "{C:attention}Paczki wzmacniające{} nie pojawiają się w sklepie" }, + ch_c_cry_no_rerolls = { "Ponowne rzuty są {C:attention}zablokowane{}" }, + ch_c_cry_no_consumables = { "{C:attention}Przedmioty zużywalne{} nie pojawiają się" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/pt_BR.lua b/Cryptid/localization/pt_BR.lua index 65b3b86..dec9d88 100644 --- a/Cryptid/localization/pt_BR.lua +++ b/Cryptid/localization/pt_BR.lua @@ -1,3314 +1,3316 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - b_cry_legendary = { - name = "Legendary Deck", - text = { - "Start with an {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + b_cry_legendary = { + name = "Legendary Deck", + text = { + "Start with an {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to multiple of #1#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped at", - "0.4X blind requirements", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "The {C:cry_code}next{} hand played", - "is calculated as a", - "{C:cry_code}chosen{} poker hand", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers", - "to become {C:cry_code}Hooked", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - "{C:inactive}(Blank side can be merged", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to multiple of #1#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped at", + "0.4X blind requirements", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanently{} remove a", + "{C:cry_code}selected{} shop item", + "{C:inactive,s:0.8}Item cannot appear again this run", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "The {C:cry_code}next{} hand played", + "is calculated as a", + "{C:cry_code}chosen{} poker hand", + "{C:inactive,s:0.8}Secret hands must be", + "{C:inactive,s:0.8}discovered to be valid", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers", + "to become {C:cry_code}Hooked", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card and", + "{C:cry_code}#1#{} extra choice", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected cards", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + "{C:inactive}(Blank side can be merged", "{C:inactive}with another card)", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}1 in 4{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "instead of the front side", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", - "and create 1 {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker{} at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Oversaturated Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "times when scored", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand(s) when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}1 in 4{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} rounds", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hands remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "instead of the front side", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker{} at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Oversaturated Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_disable_music = "Disable Music", + k_disable_music = "Disable Music", - k_cry_epic = "Epic", - k_cry_epic = "Exotic", + k_cry_epic = "Epic", + k_cry_epic = "Exotic", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Notice", - cry_notif_jimball_d1 = "Jimball plays the song \"Funkytown\",", - cry_notif_jimball_d2 = "which is copyrighted and can't be", - cry_notif_jimball_d3 = "used for streams and videos.", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Notice", + cry_notif_jimball_d1 = 'Jimball plays the song "Funkytown",', + cry_notif_jimball_d2 = "which is copyrighted and can't be", + cry_notif_jimball_d3 = "used for streams and videos.", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Vouchers{} no longer appear in the shop"}, - ch_c_cry_no_boosters = {"{C:attention}Booster Packs{} no longer appear in the shop"}, - ch_c_cry_no_rerolls = {"Rerolling is {C:attention}disabled{}"}, - ch_c_cry_no_consumables = {"{C:attention}Consumables{} no longer appear"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Vouchers{} no longer appear in the shop" }, + ch_c_cry_no_boosters = { "{C:attention}Booster Packs{} no longer appear in the shop" }, + ch_c_cry_no_rerolls = { "Rerolling is {C:attention}disabled{}" }, + ch_c_cry_no_consumables = { "{C:attention}Consumables{} no longer appear" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/ru.lua b/Cryptid/localization/ru.lua index e582d43..a286754 100644 --- a/Cryptid/localization/ru.lua +++ b/Cryptid/localization/ru.lua @@ -1,3329 +1,3337 @@ -- НАЙДИ РУССКИЙ ПЕРЕВО- -- --- ‹36ü¯ ‹¯¯¯` --- ‹ü6üÇÅ6‹ ‹üGGü66l --- `‡‡3ÇÇÞÅÇ*` `‹‹`` `¯ÇgÅ6Þü‡3¯ --- ¯ll‡3Ç6gÅÞ‡l¯¯***‡l6gg6Ç33l** --- `*ll33‡‡l*¯‹‹‹¯*‹¯¯*l*‡‡‡l**` --- `ll‹‹‹‹‹¯ll*3l‡‡l*¯¯‹‹‹‹ll‹ --- `¯¯¯‹‹¯*‡Ç6‡636ü‡6‡**¯*33¯ --- ‹*¯¯¯l‡‡üÞ3ÇÞÇÞ363ü‡3*¯lü3` --- ¯*l3l*ÞGÇG‡GÞÅGü‡ÞÇÇü3l*ü6* --- `lü‡*¯‡ÞÆÆÅlÇÞ6ü3ÆÆÆÇülü6üÇ3 --- `3l‹¯*3l3ü*ü‡‡33l*6üüü6ü6G63 --- ‹33‡l ‹‡‡36‡33l36ÇüllüÞ‡‡6ülllü666 --- ¯üÇÇÇü6Çü `l‡l*¯‹¯*‡3¯ÇÞÞÞ¯‡‡**lüü3üÇ3 --- ¯3Ç6ü36ÇÇ666‡ ¯*¯‹*¯¯¯¯‹``l3``‹¯¯*‡**ll‡` --- ‡66ÇÇ6ÇÇÇ6ÇÇüü‡ll‡l¯¯l‡ll**¯¯¯***l‡*¯¯¯*ll` --- ‹ü6Ç6ÇÇÇÇÇ63‡l*¯33ül*¯***¯¯****¯*¯¯¯¯‹‹¯***ll` --- `6ÇÇ66ü6üüÇl‡3336ÇÇ6ü*¯‹‹‹‹¯¯¯‹¯¯¯¯¯¯‹‹‹‹¯***l‡¯ --- ‡ÇÇÇ66ÇÇ36ÇüÇÇÇÇÇÇÇÇ6ü‡*‹‹‹¯¯‹‹‹¯‹¯‹‹‹‹¯*llll**‡l` --- lÇÇÇÇÇü33üü366ü66ÇÇÇ6ÇÇ66l¯‹‹‹‹‹‹¯l3ü6ÇÇÇÇ6666üÇÇ6‡¯¯ --- üÇÇÇ66ü3l*l‡ü3üüÇÇÇ3üÇÇ66ül¯¯¯¯*lÇÇ6663******¯¯***‡üÇü‹ --- `ÇÇÇü3‡3*‡l‡üü‡lll‡‡33‡36Ç63‡l**l*lüÇÇ6l‡ü3333ll‡3üü3*l` --- *ÇÇÇ63l*¯*l33l‡‡lll*‡ll‡‡ÇÇüü‡l**ÇÇÇÇ6¯``````````lÇÇÇÇLJ --- *ÇÇÇüll‡‡333lll33‡l*‡l*3lüÇÇ6ü‡l*ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇü‡ --- `6Ç6ÇÇÇ3ÇÇ6ü663‡l‡‡‡3l*‡*‡‡6Ç6Çü3üÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇLJ¯* --- üÇÇÇÇÇ6ÇÇüÇ6Ç33333‡36666üÇÇ6ÇÇÇ6üÇÇÇÇÇÇÇÇÇÇÇÇÇÇü63‡l‡ÞÇÞ3* --- ¯ÇÇÇÇÇÇ33ÇÇÇ3‡‡l3‡lÇÇü63‡Ç6l6Ç6üÇÞÇÇÇÇÇÇÇÇÇÇÇÇÇ33l3üü66ÇÇ* --- `ÇÇÇÇÇ6ü‡‡3ü66‡‡3l‡‡‡‡‡3ü6üüü66ÇÇÇÞÇÇÇÇÇÇÇÇÇÇ6üül*lll33ü6l --- `‡‡66Ç3‡l33633ülüü‡ü‡33ll3üÇü3‡36ÞÇÇÇÇÇÇÇÇÇÇÇG33l**ll‡6l --- ‡ü‡33ü3‡ü3‡l****lll‡‡‡*¯l‡üü‡l*l‡6ÇÇÇÇÇÇÇÇÇÇÇÇÇgÆ6633‡‹ --- `6Ç63‡‡3üÞÇül******lll*‡ll*‡‡lll‡‡*3ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ` --- üüü‡‡‡‡llü366‡l**¯*l**l3l***lll‡‡üüü3‡6ÇÇÇÇÇÇÇÇÇÇÇÇÇ6 --- ‡ü‡‡*ll*3ügÞ6ÇÇü‡*l***lll3363‡ü6ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇǯ --- lü‡l‡6G6ÇüÇÇ6Ç6‡*l‡3366ÇÇÇ6‡6üÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ --- `*36Ç6* *‡ÇÇÇÇü6Ç6ÇÇüüüülüÇÇÇÇÇÇÇÞÆÞ6ÇÇÇÇÇÇÇÇü‹` --- `l66ÇÇÇ6ü33‡63üÇÇÇÞgggÞÞÇÞGÇ3l*‡üÇÇ3 --- `6ÞÞÞÇÇÇÇÞÞGgÅgGÇ6ü33‡llll33333‡ll‹ --- ‹3‡3ü6üü66666ü33‡‡lll*l‡l***l‡l*l‡* --- ¯33‡l‡‡lll‡‡‡*‡‡‡‡lllll3llll*‡‡ll‡l --- +-- ‹36ü¯ ‹¯¯¯` +-- ‹ü6üÇÅ6‹ ‹üGGü66l +-- `‡‡3ÇÇÞÅÇ*` `‹‹`` `¯ÇgÅ6Þü‡3¯ +-- ¯ll‡3Ç6gÅÞ‡l¯¯***‡l6gg6Ç33l** +-- `*ll33‡‡l*¯‹‹‹¯*‹¯¯*l*‡‡‡l**` +-- `ll‹‹‹‹‹¯ll*3l‡‡l*¯¯‹‹‹‹ll‹ +-- `¯¯¯‹‹¯*‡Ç6‡636ü‡6‡**¯*33¯ +-- ‹*¯¯¯l‡‡üÞ3ÇÞÇÞ363ü‡3*¯lü3` +-- ¯*l3l*ÞGÇG‡GÞÅGü‡ÞÇÇü3l*ü6* +-- `lü‡*¯‡ÞÆÆÅlÇÞ6ü3ÆÆÆÇülü6üÇ3 +-- `3l‹¯*3l3ü*ü‡‡33l*6üüü6ü6G63 +-- ‹33‡l ‹‡‡36‡33l36ÇüllüÞ‡‡6ülllü666 +-- ¯üÇÇÇü6Çü `l‡l*¯‹¯*‡3¯ÇÞÞÞ¯‡‡**lüü3üÇ3 +-- ¯3Ç6ü36ÇÇ666‡ ¯*¯‹*¯¯¯¯‹``l3``‹¯¯*‡**ll‡` +-- ‡66ÇÇ6ÇÇÇ6ÇÇüü‡ll‡l¯¯l‡ll**¯¯¯***l‡*¯¯¯*ll` +-- ‹ü6Ç6ÇÇÇÇÇ63‡l*¯33ül*¯***¯¯****¯*¯¯¯¯‹‹¯***ll` +-- `6ÇÇ66ü6üüÇl‡3336ÇÇ6ü*¯‹‹‹‹¯¯¯‹¯¯¯¯¯¯‹‹‹‹¯***l‡¯ +-- ‡ÇÇÇ66ÇÇ36ÇüÇÇÇÇÇÇÇÇ6ü‡*‹‹‹¯¯‹‹‹¯‹¯‹‹‹‹¯*llll**‡l` +-- lÇÇÇÇÇü33üü366ü66ÇÇÇ6ÇÇ66l¯‹‹‹‹‹‹¯l3ü6ÇÇÇÇ6666üÇÇ6‡¯¯ +-- üÇÇÇ66ü3l*l‡ü3üüÇÇÇ3üÇÇ66ül¯¯¯¯*lÇÇ6663******¯¯***‡üÇü‹ +-- `ÇÇÇü3‡3*‡l‡üü‡lll‡‡33‡36Ç63‡l**l*lüÇÇ6l‡ü3333ll‡3üü3*l` +-- *ÇÇÇ63l*¯*l33l‡‡lll*‡ll‡‡ÇÇüü‡l**ÇÇÇÇ6¯``````````lÇÇÇÇLJ +-- *ÇÇÇüll‡‡333lll33‡l*‡l*3lüÇÇ6ü‡l*ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇü‡ +-- `6Ç6ÇÇÇ3ÇÇ6ü663‡l‡‡‡3l*‡*‡‡6Ç6Çü3üÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇLJ¯* +-- üÇÇÇÇÇ6ÇÇüÇ6Ç33333‡36666üÇÇ6ÇÇÇ6üÇÇÇÇÇÇÇÇÇÇÇÇÇÇü63‡l‡ÞÇÞ3* +-- ¯ÇÇÇÇÇÇ33ÇÇÇ3‡‡l3‡lÇÇü63‡Ç6l6Ç6üÇÞÇÇÇÇÇÇÇÇÇÇÇÇÇ33l3üü66ÇÇ* +-- `ÇÇÇÇÇ6ü‡‡3ü66‡‡3l‡‡‡‡‡3ü6üüü66ÇÇÇÞÇÇÇÇÇÇÇÇÇÇ6üül*lll33ü6l +-- `‡‡66Ç3‡l33633ülüü‡ü‡33ll3üÇü3‡36ÞÇÇÇÇÇÇÇÇÇÇÇG33l**ll‡6l +-- ‡ü‡33ü3‡ü3‡l****lll‡‡‡*¯l‡üü‡l*l‡6ÇÇÇÇÇÇÇÇÇÇÇÇÇgÆ6633‡‹ +-- `6Ç63‡‡3üÞÇül******lll*‡ll*‡‡lll‡‡*3ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ` +-- üüü‡‡‡‡llü366‡l**¯*l**l3l***lll‡‡üüü3‡6ÇÇÇÇÇÇÇÇÇÇÇÇÇ6 +-- ‡ü‡‡*ll*3ügÞ6ÇÇü‡*l***lll3363‡ü6ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇǯ +-- lü‡l‡6G6ÇüÇÇ6Ç6‡*l‡3366ÇÇÇ6‡6üÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ +-- `*36Ç6* *‡ÇÇÇÇü6Ç6ÇÇüüüülüÇÇÇÇÇÇÇÞÆÞ6ÇÇÇÇÇÇÇÇü‹` +-- `l66ÇÇÇ6ü33‡63üÇÇÇÞgggÞÞÇÞGÇ3l*‡üÇÇ3 +-- `6ÞÞÞÇÇÇÇÞÞGgÅgGÇ6ü33‡llll33333‡ll‹ +-- ‹3‡3ü6üü66666ü33‡‡lll*l‡l***l‡l*l‡* +-- ¯33‡l‡‡lll‡‡‡*‡‡‡‡lllll3llll*‡‡ll‡l +-- -- АХАХАХ ЭТА ЧЁ???? ОГРОМНЫЙ КОТ С ЧЕБУРЕКОМ И ПИВОМ ЧЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ??? Котяря блин ты либо делись либо улепётывая из перевода return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Колода антиматерии", - text = { - "Применяет {C:legendary,E:1}плюсы{}", - "{C:attention}каждой{} колоды", - }, - }, - b_cry_beta = { - name = "Ностальгическая колода", - text = { - "Слоты под {C:attention}Джокеры{}", - "и под {C:attention}Расходники{} {C:attention}соединены", - "{C:attention}Ностальгические{} блайнды заменяют", - "их обновлённые блайнды" - }, - }, - b_cry_blank = { - name = "Пустая колода", - text = { - "{C:inactive,E:1}Ничего не делает?", - }, - }, - b_cry_CCD = { - name = "CCD Колода", - text = { - "Каждая карта это ещё и", - "{C:attention}случайный{} расходник", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Критическая колода", - text = { - "После каждой сыгранной руки,", - "{C:green}#1# к 4{} шанс для {X:dark_edition,C:white} ^2 {} Множ", - "{C:green}#1# к 8{} шанс для {X:dark_edition,C:white} ^0.5 {} Множ", - }, - }, - b_cry_encoded = { - name = "Закодированная колода", - text = { - "Начинаете партию с {C:cry_code,T:j_cry_CodeJoker}Код Джокером{}", - "и {C:cry_code,T:j_cry_copypaste}Копировать/Вставить{}", - "Только {C:cry_code}Карты кода{} появляются в магазине", - }, - }, - b_cry_equilibrium = { - name = "Колода равновесия", - text = { - "Все карты имеют", - "{C:attention}одинаковый шанс{}", - "Появления в магазинах,", - "Начинаете партию с", - "{C:attention,T:v_overstock_plus}Изобилие перебросов", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Умножает значения всех", - "джокеров на {X:dark_edition,C:white} X1.25 {}", - "после победы над босс-блайндом", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Бесконечная колода", - text = { - "Вы можете выбрать{C:attention}любое", - "количество карт", - "{C:attention}+1{} размер руки", - }, - }, - b_cry_misprint = { - name = "Колода с опечатками", - text = { - "Числы карт", - "и покерных рук", - "{C:attention}случайны", - }, - }, - b_cry_redeemed = { - name = "Погашенная колода", - text = { - "Когда {C:attention}Ваучер{} куплен,", - "получаешь {C:attention}все улучш. версии", - }, - }, - b_cry_very_fair = { - name = "Очень честная колода", - text = { - "{C:blue}-2{} руки, {C:red}-2{} сброса", - "каждый раунд", - "{C:attention}Ваучеры{} не появляются", - "в магазине", - }, - }, - b_cry_wormhole = { - name = "Колода червоточины", - text = { - "Начинаете с {C:cry_exotic}Экзотическим{C:attention} Джокером", - "Джокеры в {C:attention}20X{} чаще", - "появляются {C:dark_edition}Негативными", - "{C:attention}-2{} Слота джокера", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "Коробка", - text = { - "Все обычные джокеры", - "ослабляются", - }, - }, - bl_cry_clock = { - name = "Часы", - text = { - "+0.1X минимум очков каждые", - "3 секунды в этом анте", - }, - }, - bl_cry_hammer = { - name = "Молоток", - text = { - "Все карты с нечётным", - "рангом ослабляются", - }, - }, - bl_cry_joke = { - name = "Шутка", - text = { - "Если очки в два раза больше минимума,", - "Умножить анте на #1#", - }, - }, - bl_cry_magic = { - name = "Магия", - text = { - "Все карты с чётным", - "рангом ослабляются", - }, - }, - bl_cry_lavender_loop = { - name = "Лавандовый круг", - text = { - "1.25X минимум очков каждые", - "1.5 секунды потраченные в этом раунде", - }, - }, - bl_cry_obsidian_orb = { - name = "Обсидиановая сфера", - text = { - "Применяет все способности", - "побеждённых босс-блайдов", - }, - }, - bl_cry_oldarm = { - name = "Рука, Ностальгия", - text = { - "Необходима сыграть 4", - "или меньше карт", - }, - }, - bl_cry_oldfish = { - name = "Рыба, Ностальгия", - text = { - "Все руки начинают", - "с 1 Множ.", - }, - }, - bl_cry_oldflint = { - name = "Кремень, Ностальгия", - text = { - "Без флешов", - }, - }, - bl_cry_oldhouse = { - name = "Дом, Ностальгия", - text = { - "Без фулл-хаусов", - }, - }, - bl_cry_oldmanacle = { - name = "Кандалы, Ностальгия", - text = { - "Разделить Множ. на Сбросы", - }, - }, - bl_cry_oldmark = { - name = "Знак, Ностальгия", - text = { - "Без рук,", - "которые содержат пару", - }, - }, - bl_cry_oldox = { - name = "Буйвол, Ностальгия", - text = { - "Все руки начинают", - "с нулём фишек", - }, - }, - bl_cry_oldpillar = { - name = "Столп, Ностальгия", - text = { - "Без стритов", - }, - }, - bl_cry_oldserpent = { - name = "Змей, Ностальгия", - text = { - "Разделить Множ.", - "на уровень разыгранной руки", - }, - }, - bl_cry_pin = { - name = "Булавка", - text = { - "Джокеры с эпической или выше", - "редкостью ослабляются", - }, - }, - bl_cry_pinkbow = { - name = "Бантик", - text = { - "Картам присваивается случайная", - "", - }, - }, - bl_cry_sapphire_stamp = { - name = "Сапфировый штамп", - text = { - "Выбор дополнительной карты,", - "случайная карта не учитывается", - }, - }, - bl_cry_shackle = { - name = "Кандалы 2.0", - text = { - "Все негативные джокеры", - "ослаблены", - }, - }, - bl_cry_striker = { - name = "Нападающий", - text = { - "Все редкие джокеры", - "ослаблены", - }, - }, - bl_cry_tax = { - name = "Налог", - text = { - "Максимальные очки за руку", - "0.4X требований блайнда", - }, - }, - bl_cry_tornado = { - name = "Бирюзовый торнадо", - text = { - "#1# в #2# шанс что", - "руку не посчитает", - }, - }, - bl_cry_trick = { - name = "Трюк", - text = { - "После каждой руки, переворачивает", - "все карты в руке рубашкой вверх", - }, - }, - bl_cry_vermillion_virus = { - name = "Вирус Вермиллион", - text = { - "Один случайный джокер", - "заменяется каждую руку", - }, - }, - bl_cry_windmill = { - name = "Мельница", - text = { - "Все необычные джокеры", - "ослаблены", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Конвертировать {C:cry_code}#1#{} выбранную карту", - "в {C:cry_code}выбранное{} улучшение", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Уничтожить {C:cry_code}выбранного{} Джокер,", - "создать {C:cry_code}нового{} Джокера", - "той же {C:cry_code}редкости", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Не думай.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Навсегда{} удалить", - "{C:cry_code}выбранный{} предмет из магазина", - "{C:inactive,s:0.8}Предмет больше не появится в этом забеге", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "Уменьшить цены {C:cry_code}Наполовину{}", - "в текущем магазине", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "{C:cry_code}Следущая{} рука", - "считается", - "{C:cry_code}выбранной{} покерной рукой", - "{C:inactive,s:0.8}Секретные покерные руки", - "{C:inactive,s:0.8}должны быть найдены, чтобы они считались", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Выбери двух джокеров", - "которые станут {C:cry_code}Соединены", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Добавляет {C:dark_edition}Глючный{} ко всем", "картам {C:cry_code}в руке" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Соединить {C:cry_code}Расходник", - "с выбранной {C:cry_code}игральной картой", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Удваивает{} все значения", - "выбранного {C:cry_code}Джокера{} до", - "конца раунда", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Следующий блайнд", - "даёт {C:cry_code}X#1#{} процентов ", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Следующий {C:cry_code}Набор{} имеет на", - "{C:cry_code}#1#{} дополнительную карту и", - "{C:cry_code}#1#{} дополнительный выбор", - "{C:inactive}(Сейчас: {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Даёт {C:blue}Рук{} и {C:red}Сбросов{},", - "возвращает {C:cry_code}все{} карты в карты", - "и вытянуть {C:cry_code}новую{} руку", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Ставит {C:cry_code}состояние игры{} на", - "начало {C:cry_code}Анте{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Уничтожить {C:cry_code}выбранного{} Джокера,", - "создаёт {C:cry_code}Тэг доработки{} с", - "{C:cry_code}улучшенной{} версии", - "{C:inactive,s:0.8}Следует порядку как в коллекции", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Посетить {C:cry_code}магазин", - "посреди {C:cry_code}Блайнда", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Выбери джокера", - "или игровую карту", - "чтобы те стали {C:cry_code}Подкрученными", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Закончить текущий не-босс {C:cry_code}Блайнд{}", "{C:cry_code}без{} подсчета денег" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Создать {C:cry_code}Глючного", - "Съедобного Джокера", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Конвертировать {C:cry_code}#1#{} выбранных карт", - "в {C:cry_code}выбранный{} ранг", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Астральный", - text = { - "{X:dark_edition,C:white}^#1#{} Множ.", - }, - }, - e_cry_blur = { - name = "Размытый", - text = { - "{C:attention}Перезапустить{} эту", - "карту {C:attention}1{} раз", - "{C:green}#1# к #2#{} шанс", - "перезапустить ещё{C:attention}#3#{}", - "раза", - }, - }, - e_cry_double_sided = { - name = "Двухсторонний", - text = { - "Эта карта может быть", - "{C:attention}перевёрнута{} чтобы", - "показать другую карту", - }, - }, - e_cry_glass = { - name = "Хрупкий", - label = "Хрупкий", - text = { - "{C:white,X:mult} X#3# {} Множ", - "{C:green}#1# к #2#{} шанс, чтобы эта", - "карта не {C:red}уничтожилась", - "при срабатывании", - }, - }, - e_cry_glitched = { - name = "Глючный", - text = { - "Все значения на карте", - "{C:dark_edition}случайны{}", - "между {C:attention}X0.1{} и {C:attention}X10{}", - "{C:inactive}(если возможно){}", - }, - }, - e_cry_gold = { - name = "Золотой", - label = "Золотой", - text = { - "Заработать {C:money}$#1#{} при использовании", - "или срабатывании", - }, - }, - e_cry_m = { - name = "Весёлый", - text = { - "{C:mult}+#1#{} Множ", - "Эта карта чуствует", - "скорее всего {C:attention}веселье{}", - }, - }, - e_cry_mosaic = { - name = "Мозаичный", - text = { - "{X:chips,C:white} X#1# {} Фишек", - }, - }, - e_cry_noisy = { - name = "Шумный", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Перенасыщенный", - text = { - "Все значения", - "на карте", - "{C:attention}удвоенны{}", - "{C:inactive}(Если возможно)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Эхо-Карта", - text = { - "{C:green}#2# к #3#{} шанс", - "{C:attention}перезапустить{} #1# дополнительный", - "раз когда сыграно", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Ностальгическая Гугол Игровая Карта", - text = { - "Продайте эту карту, чтобы создать", - "{C:attention}2{} копии крайнего левого {C:attention}Джокера{}", - "{C:inactive,s:0.8}Не копирует Ностальгические Гугол Игровые Карты{}", - }, - }, - j_cry_antennastoheaven = { - name = " ...КАК АНТЕННЫ ДО НЕБЕС", - text = { - "Этот джокер даёт", - "{X:chips,C:white} X#1# {} Фишек при подсчете", - "разыгранных {C:attention}7{} или {C:attention}4{}", - "{C:inactive}(Сейчас: {X:chips,C:white}X#2# {C:inactive} Фишек)" - }, - }, - j_cry_apjoker = { - name = "ББ Джокер", - text = { "{X:mult,C:white} X#1# {} Множ. против {C:attention}Босс-Блайндов{}" }, - }, - j_cry_big_cube = { - name = "Большой Куб", - text = { - "{X:chips,C:white} X#1# {} Фишек", - }, - }, - j_cry_biggestm = { - name = "Огромный", - text = { - "{X:mult,C:white} X#1# {} Множ. до конца", - "раунда если {C:attention}покерная рука{}", - "это {C:attention}#2#{}", - "{C:inactive}(Сейчас: Множ {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}просто широкая кость.", - }, - }, - j_cry_blender = { - name = "Блендер", - text = { - "Создать {C:attention}случайный{}", - "Расходник когда", - "{C:cry_code}Код{} карта использована", - "{C:inactive}(Должно быть место){}", - }, - }, - j_cry_blurred = { - name = "Мыльный джокер", - text = { - "{C:blue}+#1#{} рука(и) при", - "выборе {C:attention}блайнда{}", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Бустер Джокер", - text = { - "{C:attention}+#1#{}Слот под Бустерные джокеры", - "В магазине", - }, - }, - j_cry_boredom = { - name = "Скука", - text = { - "{C:green}#1# к #2#{} шанс", - "{C:attention}перезапустить{} каждого {C:attention}Джокера{}", - "или {C:attention}Игровую карту{}", - "{C:inactive,s:0.8}Не влияет на скуки{}", - }, - }, - j_cry_bubblem = { - name = "Пузырный М", - text = { - "Создаёт {C:dark_edition}Фольгового {C:attention}Весёлого Джокера{}", - "если сыгранная рука содержит {C:attention}#1#{}", - "{C:red,E:2}само уничтожается{}", - }, - }, - j_cry_busdriver = { - name = "Водитель автобуса", - text = { - "{C:green}#1# к #3#{} шанс", - "на {C:mult}+#2#{} Множ.", - "{C:green}1 к 4{} шанс", - "на {C:mult}-#2#{} Множ.", - }, - }, - j_cry_canvas = { - name = "Холст", - text = { - "{C:attention}Перезапускает{} ВСЕХ {C:attention}Джокеров{} слева", - "за {C:attention}каждого{} не-{C:blue}Обычного{C:attention} Джокера{}", - "справа этого джокера", - }, - }, - j_cry_caramel = { - name = "Карамель", - text = { - "Каждая сыгранная карта даёт", - "{X:mult,C:white}X#1#{} Множ. при подсчете", - "для следующих {C:attention}#2#{} раундов", - }, - }, - j_cry_chad = { - name = "Чад", - text = { - "Перезапуск {C:attention}крайнего левого{} Джокера", - "{C:attention}#1#{} дополнительный(ых) раз(а)", - }, - }, - j_cry_chili_pepper = { - name = "Перец чили", - text = { - "Этот джокер даёт {X:mult,C:white} X#2# {} Множ.", - "в конце раунда,", - "{C:red,E:2}самоуничтожается{} через {C:attention}#3#{} раунда", - "{C:inactive}(Сейчас:{} Множ.{X:mult,C:white} X#1# {} {C:inactive}){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Циркуль Писторис", - text = { - "{X:dark_edition,C:white}^#1#{} Фишек, {X:dark_edition,C:white}^#1#{} Множ.", - "если {C:attention}ровно{} #2#", - "руки остаются", - }, - }, - j_cry_circus = { - name = "Цирк", - text = { - "Каждый {C:red}Редкий{} даёт {X:mult,C:white} X#1# {} Множ.", - "Каждый {C:cry_epic}Эпический{} даёт {X:mult,C:white} X#2# {} Множ.", - "Каждый {C:legendary}Легендарный{} даёт {X:mult,C:white} X#3# {} Множ.", - "Каждый {C:cry_exotic}Экзотический{} даёт {X:mult,C:white} X#4# {} Множ.", - }, - }, - j_cry_CodeJoker = { - name = "Код Джокер", - text = { - "Создаёт {C:dark_edition}Негативную{}", - "{C:cry_code}Код карту{} при", - "выборе {C:attention}Блайнда{}", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "Macabre Joker", - text = { - "When {C:attention}Blind{} is selected,", - "destroys each {C:attention}Joker{} except", - "{C:legendary}M-Jokers{} and {C:attention}Jolly Jokers{}", - "and create 1 {C:attention}Jolly Joker{}", - "for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round#3#", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_tbree = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Эпические джокеры", - ["cry_feat_exotic jokers"] = "Экзотические джокеры", - ["cry_feat_m jokers"] = "М джокеры", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Колода антиматерии", + text = { + "Применяет {C:legendary,E:1}плюсы{}", + "{C:attention}каждой{} колоды", + }, + }, + b_cry_beta = { + name = "Ностальгическая колода", + text = { + "Слоты под {C:attention}Джокеры{}", + "и под {C:attention}Расходники{} {C:attention}соединены", + "{C:attention}Ностальгические{} блайнды заменяют", + "их обновлённые блайнды", + }, + }, + b_cry_blank = { + name = "Пустая колода", + text = { + "{C:inactive,E:1}Ничего не делает?", + }, + }, + b_cry_CCD = { + name = "CCD Колода", + text = { + "Каждая карта это ещё и", + "{C:attention}случайный{} расходник", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Критическая колода", + text = { + "После каждой сыгранной руки,", + "{C:green}#1# к 4{} шанс для {X:dark_edition,C:white} ^2 {} Множ", + "{C:green}#1# к 8{} шанс для {X:dark_edition,C:white} ^0.5 {} Множ", + }, + }, + b_cry_encoded = { + name = "Закодированная колода", + text = { + "Начинаете партию с {C:cry_code,T:j_cry_CodeJoker}Код Джокером{}", + "и {C:cry_code,T:j_cry_copypaste}Копировать/Вставить{}", + "Только {C:cry_code}Карты кода{} появляются в магазине", + }, + }, + b_cry_equilibrium = { + name = "Колода равновесия", + text = { + "Все карты имеют", + "{C:attention}одинаковый шанс{}", + "Появления в магазинах,", + "Начинаете партию с", + "{C:attention,T:v_overstock_plus}Изобилие перебросов", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Умножает значения всех", + "джокеров на {X:dark_edition,C:white} X1.25 {}", + "после победы над босс-блайндом", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Бесконечная колода", + text = { + "Вы можете выбрать{C:attention}любое", + "количество карт", + "{C:attention}+1{} размер руки", + }, + }, + b_cry_misprint = { + name = "Колода с опечатками", + text = { + "Числы карт", + "и покерных рук", + "{C:attention}случайны", + }, + }, + b_cry_redeemed = { + name = "Погашенная колода", + text = { + "Когда {C:attention}Ваучер{} куплен,", + "получаешь {C:attention}все улучш. версии", + }, + }, + b_cry_very_fair = { + name = "Очень честная колода", + text = { + "{C:blue}-2{} руки, {C:red}-2{} сброса", + "каждый раунд", + "{C:attention}Ваучеры{} не появляются", + "в магазине", + }, + }, + b_cry_wormhole = { + name = "Колода червоточины", + text = { + "Начинаете с {C:cry_exotic}Экзотическим{C:attention} Джокером", + "Джокеры в {C:attention}20X{} чаще", + "появляются {C:dark_edition}Негативными", + "{C:attention}-2{} Слота джокера", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "Коробка", + text = { + "Все обычные джокеры", + "ослабляются", + }, + }, + bl_cry_clock = { + name = "Часы", + text = { + "+0.1X минимум очков каждые", + "3 секунды в этом анте", + }, + }, + bl_cry_hammer = { + name = "Молоток", + text = { + "Все карты с нечётным", + "рангом ослабляются", + }, + }, + bl_cry_joke = { + name = "Шутка", + text = { + "Если очки в два раза больше минимума,", + "Умножить анте на #1#", + }, + }, + bl_cry_magic = { + name = "Магия", + text = { + "Все карты с чётным", + "рангом ослабляются", + }, + }, + bl_cry_lavender_loop = { + name = "Лавандовый круг", + text = { + "1.25X минимум очков каждые", + "1.5 секунды потраченные в этом раунде", + }, + }, + bl_cry_obsidian_orb = { + name = "Обсидиановая сфера", + text = { + "Применяет все способности", + "побеждённых босс-блайдов", + }, + }, + bl_cry_oldarm = { + name = "Рука, Ностальгия", + text = { + "Необходима сыграть 4", + "или меньше карт", + }, + }, + bl_cry_oldfish = { + name = "Рыба, Ностальгия", + text = { + "Все руки начинают", + "с 1 Множ.", + }, + }, + bl_cry_oldflint = { + name = "Кремень, Ностальгия", + text = { + "Без флешов", + }, + }, + bl_cry_oldhouse = { + name = "Дом, Ностальгия", + text = { + "Без фулл-хаусов", + }, + }, + bl_cry_oldmanacle = { + name = "Кандалы, Ностальгия", + text = { + "Разделить Множ. на Сбросы", + }, + }, + bl_cry_oldmark = { + name = "Знак, Ностальгия", + text = { + "Без рук,", + "которые содержат пару", + }, + }, + bl_cry_oldox = { + name = "Буйвол, Ностальгия", + text = { + "Все руки начинают", + "с нулём фишек", + }, + }, + bl_cry_oldpillar = { + name = "Столп, Ностальгия", + text = { + "Без стритов", + }, + }, + bl_cry_oldserpent = { + name = "Змей, Ностальгия", + text = { + "Разделить Множ.", + "на уровень разыгранной руки", + }, + }, + bl_cry_pin = { + name = "Булавка", + text = { + "Джокеры с эпической или выше", + "редкостью ослабляются", + }, + }, + bl_cry_pinkbow = { + name = "Бантик", + text = { + "Картам присваивается случайная", + "", + }, + }, + bl_cry_sapphire_stamp = { + name = "Сапфировый штамп", + text = { + "Выбор дополнительной карты,", + "случайная карта не учитывается", + }, + }, + bl_cry_shackle = { + name = "Кандалы 2.0", + text = { + "Все негативные джокеры", + "ослаблены", + }, + }, + bl_cry_striker = { + name = "Нападающий", + text = { + "Все редкие джокеры", + "ослаблены", + }, + }, + bl_cry_tax = { + name = "Налог", + text = { + "Максимальные очки за руку", + "0.4X требований блайнда", + }, + }, + bl_cry_tornado = { + name = "Бирюзовый торнадо", + text = { + "#1# в #2# шанс что", + "руку не посчитает", + }, + }, + bl_cry_trick = { + name = "Трюк", + text = { + "После каждой руки, переворачивает", + "все карты в руке рубашкой вверх", + }, + }, + bl_cry_vermillion_virus = { + name = "Вирус Вермиллион", + text = { + "Один случайный джокер", + "заменяется каждую руку", + }, + }, + bl_cry_windmill = { + name = "Мельница", + text = { + "Все необычные джокеры", + "ослаблены", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Конвертировать {C:cry_code}#1#{} выбранную карту", + "в {C:cry_code}выбранное{} улучшение", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Уничтожить {C:cry_code}выбранного{} Джокер,", + "создать {C:cry_code}нового{} Джокера", + "той же {C:cry_code}редкости", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Не думай.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Навсегда{} удалить", + "{C:cry_code}выбранный{} предмет из магазина", + "{C:inactive,s:0.8}Предмет больше не появится в этом забеге", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "Уменьшить цены {C:cry_code}Наполовину{}", + "в текущем магазине", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "{C:cry_code}Следущая{} рука", + "считается", + "{C:cry_code}выбранной{} покерной рукой", + "{C:inactive,s:0.8}Секретные покерные руки", + "{C:inactive,s:0.8}должны быть найдены, чтобы они считались", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Выбери двух джокеров", + "которые станут {C:cry_code}Соединены", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { + "Добавляет {C:dark_edition}Глючный{} ко всем", + "картам {C:cry_code}в руке", + }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Соединить {C:cry_code}Расходник", + "с выбранной {C:cry_code}игральной картой", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Удваивает{} все значения", + "выбранного {C:cry_code}Джокера{} до", + "конца раунда", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Следующий блайнд", + "даёт {C:cry_code}X#1#{} процентов ", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Следующий {C:cry_code}Набор{} имеет на", + "{C:cry_code}#1#{} дополнительную карту и", + "{C:cry_code}#1#{} дополнительный выбор", + "{C:inactive}(Сейчас: {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Даёт {C:blue}Рук{} и {C:red}Сбросов{},", + "возвращает {C:cry_code}все{} карты в карты", + "и вытянуть {C:cry_code}новую{} руку", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Ставит {C:cry_code}состояние игры{} на", + "начало {C:cry_code}Анте{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Уничтожить {C:cry_code}выбранного{} Джокера,", + "создаёт {C:cry_code}Тэг доработки{} с", + "{C:cry_code}улучшенной{} версии", + "{C:inactive,s:0.8}Следует порядку как в коллекции", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Посетить {C:cry_code}магазин", + "посреди {C:cry_code}Блайнда", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Выбери джокера", + "или игровую карту", + "чтобы те стали {C:cry_code}Подкрученными", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { + "Закончить текущий не-босс {C:cry_code}Блайнд{}", + "{C:cry_code}без{} подсчета денег", + }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Создать {C:cry_code}Глючного", + "Съедобного Джокера", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Конвертировать {C:cry_code}#1#{} выбранных карт", + "в {C:cry_code}выбранный{} ранг", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Астральный", + text = { + "{X:dark_edition,C:white}^#1#{} Множ.", + }, + }, + e_cry_blur = { + name = "Размытый", + text = { + "{C:attention}Перезапустить{} эту", + "карту {C:attention}1{} раз", + "{C:green}#1# к #2#{} шанс", + "перезапустить ещё{C:attention}#3#{}", + "раза", + }, + }, + e_cry_double_sided = { + name = "Двухсторонний", + text = { + "Эта карта может быть", + "{C:attention}перевёрнута{} чтобы", + "показать другую карту", + }, + }, + e_cry_glass = { + name = "Хрупкий", + label = "Хрупкий", + text = { + "{C:white,X:mult} X#3# {} Множ", + "{C:green}#1# к #2#{} шанс, чтобы эта", + "карта не {C:red}уничтожилась", + "при срабатывании", + }, + }, + e_cry_glitched = { + name = "Глючный", + text = { + "Все значения на карте", + "{C:dark_edition}случайны{}", + "между {C:attention}X0.1{} и {C:attention}X10{}", + "{C:inactive}(если возможно){}", + }, + }, + e_cry_gold = { + name = "Золотой", + label = "Золотой", + text = { + "Заработать {C:money}$#1#{} при использовании", + "или срабатывании", + }, + }, + e_cry_m = { + name = "Весёлый", + text = { + "{C:mult}+#1#{} Множ", + "Эта карта чуствует", + "скорее всего {C:attention}веселье{}", + }, + }, + e_cry_mosaic = { + name = "Мозаичный", + text = { + "{X:chips,C:white} X#1# {} Фишек", + }, + }, + e_cry_noisy = { + name = "Шумный", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Перенасыщенный", + text = { + "Все значения", + "на карте", + "{C:attention}удвоенны{}", + "{C:inactive}(Если возможно)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Эхо-Карта", + text = { + "{C:green}#2# к #3#{} шанс", + "{C:attention}перезапустить{} #1# дополнительный", + "раз когда сыграно", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Ностальгическая Гугол Игровая Карта", + text = { + "Продайте эту карту, чтобы создать", + "{C:attention}2{} копии крайнего левого {C:attention}Джокера{}", + "{C:inactive,s:0.8}Не копирует Ностальгические Гугол Игровые Карты{}", + }, + }, + j_cry_antennastoheaven = { + name = " ...КАК АНТЕННЫ ДО НЕБЕС", + text = { + "Этот джокер даёт", + "{X:chips,C:white} X#1# {} Фишек при подсчете", + "разыгранных {C:attention}7{} или {C:attention}4{}", + "{C:inactive}(Сейчас: {X:chips,C:white}X#2# {C:inactive} Фишек)", + }, + }, + j_cry_apjoker = { + name = "ББ Джокер", + text = { "{X:mult,C:white} X#1# {} Множ. против {C:attention}Босс-Блайндов{}" }, + }, + j_cry_big_cube = { + name = "Большой Куб", + text = { + "{X:chips,C:white} X#1# {} Фишек", + }, + }, + j_cry_biggestm = { + name = "Огромный", + text = { + "{X:mult,C:white} X#1# {} Множ. до конца", + "раунда если {C:attention}покерная рука{}", + "это {C:attention}#2#{}", + "{C:inactive}(Сейчас: Множ {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}просто широкая кость.", + }, + }, + j_cry_blender = { + name = "Блендер", + text = { + "Создать {C:attention}случайный{}", + "Расходник когда", + "{C:cry_code}Код{} карта использована", + "{C:inactive}(Должно быть место){}", + }, + }, + j_cry_blurred = { + name = "Мыльный джокер", + text = { + "{C:blue}+#1#{} рука(и) при", + "выборе {C:attention}блайнда{}", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Бустер Джокер", + text = { + "{C:attention}+#1#{}Слот под Бустерные джокеры", + "В магазине", + }, + }, + j_cry_boredom = { + name = "Скука", + text = { + "{C:green}#1# к #2#{} шанс", + "{C:attention}перезапустить{} каждого {C:attention}Джокера{}", + "или {C:attention}Игровую карту{}", + "{C:inactive,s:0.8}Не влияет на скуки{}", + }, + }, + j_cry_bubblem = { + name = "Пузырный М", + text = { + "Создаёт {C:dark_edition}Фольгового {C:attention}Весёлого Джокера{}", + "если сыгранная рука содержит {C:attention}#1#{}", + "{C:red,E:2}само уничтожается{}", + }, + }, + j_cry_busdriver = { + name = "Водитель автобуса", + text = { + "{C:green}#1# к #3#{} шанс", + "на {C:mult}+#2#{} Множ.", + "{C:green}1 к 4{} шанс", + "на {C:mult}-#2#{} Множ.", + }, + }, + j_cry_canvas = { + name = "Холст", + text = { + "{C:attention}Перезапускает{} ВСЕХ {C:attention}Джокеров{} слева", + "за {C:attention}каждого{} не-{C:blue}Обычного{C:attention} Джокера{}", + "справа этого джокера", + }, + }, + j_cry_caramel = { + name = "Карамель", + text = { + "Каждая сыгранная карта даёт", + "{X:mult,C:white}X#1#{} Множ. при подсчете", + "для следующих {C:attention}#2#{} раундов", + }, + }, + j_cry_chad = { + name = "Чад", + text = { + "Перезапуск {C:attention}крайнего левого{} Джокера", + "{C:attention}#1#{} дополнительный(ых) раз(а)", + }, + }, + j_cry_chili_pepper = { + name = "Перец чили", + text = { + "Этот джокер даёт {X:mult,C:white} X#2# {} Множ.", + "в конце раунда,", + "{C:red,E:2}самоуничтожается{} через {C:attention}#3#{} раунда", + "{C:inactive}(Сейчас:{} Множ.{X:mult,C:white} X#1# {} {C:inactive}){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Циркуль Писторис", + text = { + "{X:dark_edition,C:white}^#1#{} Фишек, {X:dark_edition,C:white}^#1#{} Множ.", + "если {C:attention}ровно{} #2#", + "руки остаются", + }, + }, + j_cry_circus = { + name = "Цирк", + text = { + "Каждый {C:red}Редкий{} даёт {X:mult,C:white} X#1# {} Множ.", + "Каждый {C:cry_epic}Эпический{} даёт {X:mult,C:white} X#2# {} Множ.", + "Каждый {C:legendary}Легендарный{} даёт {X:mult,C:white} X#3# {} Множ.", + "Каждый {C:cry_exotic}Экзотический{} даёт {X:mult,C:white} X#4# {} Множ.", + }, + }, + j_cry_CodeJoker = { + name = "Код Джокер", + text = { + "Создаёт {C:dark_edition}Негативную{}", + "{C:cry_code}Код карту{} при", + "выборе {C:attention}Блайнда{}", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M-Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round#3#", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_tbree = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Эпические джокеры", + ["cry_feat_exotic jokers"] = "Экзотические джокеры", + ["cry_feat_m jokers"] = "М джокеры", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/localization/vi.lua b/Cryptid/localization/vi.lua new file mode 100644 index 0000000..4f0f602 --- /dev/null +++ b/Cryptid/localization/vi.lua @@ -0,0 +1,4257 @@ +return { + descriptions = { + Back = { + b_cry_antimatter = { + name = "Bộ Bài Phản Vật Chất", + text = { + "Áp dụng {C:legendary,E:1}ưu năng{}", + "của {C:attention}mọi{} bộ bài khác", + }, + }, + b_cry_beige = { + name = "Bộ Bài Be", + text = { + "Joker {C:attention}Thường{} có", + "giá trị {C:attention}X4 lần{}", + }, + }, + b_cry_beta = { + name = "Bộ Bài Hoài Niệm", + text = { + "Gộp ô {C:attention}Joker{} và ô", + "{C:attention}Tiêu Thụ{} lại thành một", + "{C:attention}Nostalgic{} Blind thay thế", + "Boss Blind tương ứng của chúng", + "{s:0.8}Nostalgic = Hoài Niệm", + }, + }, + b_cry_blank = { + name = "Bộ Bài Trống", + text = { + "{C:inactive,E:1}Vô dụng?", + }, + }, + b_cry_bountiful = { + name = "Bộ Bài Phong phú", + text = { + "Sau khi {C:blue}Chơi{} hoặc {C:red}Bỏ Bài{},", + "luôn bốc {C:attention}5{} lá", + }, + }, + b_cry_CCD = { + name = "Bộ Bài CCD", + text = { + "Mỗi lá bài đều là", + "một lá tiêu thụ", + "{C:attention}ngẫu nhiên{}", + }, + }, + b_cry_conveyor = { + name = "Bộ Bài Băng Chuyền", + text = { + "{C:attention}Không thể{} di chuyển các lá Joker", + "Vào mỗi đầu ván,", + "{C:attention}nhân đôi{} Joker ở tít bên phải", + "và {C:attention}phá hủy{} Joker ở tít bên trái", + }, + }, + b_cry_critical = { + name = "Bộ Bài Chí Mạng", + text = { + "Sau mỗi tay bài đã chơi,", + "Xác suất {C:green}#1# trên 4{} cho {X:dark_edition,C:white} ^2 {} Nhân", + "Xác suất {C:green}#1# trên 8{} cho {X:dark_edition,C:white} ^0.5 {} Nhân", + }, + }, + b_cry_encoded = { + name = "Bộ Bài Mã Hóa", + text = { + "Bắt đầu với {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "và {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Chỉ có {C:cry_code}Lá Code{} xuất hiện trong shop", + }, + }, + b_cry_equilibrium = { + name = "Bộ Bài Cân Bằng", + text = { + "Mọi lá bài đều có", + "{C:attention}cùng xác suất{}", + "xuất hiện trong shop,", + "bắt đầu với", + "{C:attention,T:v_overstock_plus}Siêu Quá Trữ", + }, + }, + b_cry_glowing = { + name = "Bộ Bài Dạ Quang", + text = { + "Nhân giá trị của", + "mọi Joker lên {X:dark_edition,C:white} X1.25 {}", + "khi Boss Blind bị đánh bại", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Bộ Bài Vô Cực", + text = { + "Bạn có thể chọn {C:attention}bất kỳ", + "số lượng lá bài nào", + "{C:attention}+1{} lá giữ trên tay", + }, + }, + b_cry_misprint = { + name = "Bộ Bài Lỗi In", + text = { + "{C:attention}Ngẫu nhiên hoá{} giá trị", + "của mọi lá bài và tay poker", + }, + }, + b_cry_redeemed = { + name = "Bộ Bài Quy Đổi", + text = { + "Khi quy đổi một {C:attention}Phiếu{}, nhận", + "ngay {C:attention}các cấp bổ sung{} của nó", + }, + }, + b_cry_spooky = { + name = "Bộ Bài Ma Quái", + text = { + "Bắt đầu với {C:attention,T:j_cry_chocolate_dice}Xúc Sắc Sôcôla {C:eternal}Vĩnh Hằng", + "Sau mỗi {C:attention}Ante{}, tạo ra", + "viên {C:cry_candy}Kẹo{} hoặc Joker {X:cry_cursed,C:white}Nguyền Rủa", + }, + }, + b_cry_very_fair = { + name = "Bộ Bài Siêu Công Bằng", + text = { + "{C:blue}-2{} tay bài, {C:red}-2{} lượt bỏ bài", + "mỗi ván", + "{C:attention}Phiếu{} không còn", + "xuất hiện trong shop", + }, + }, + b_cry_wormhole = { + name = "Bộ Bài Lỗ Giun", + text = { + "Bắt đầu với một {C:attention}Joker {C:cry_exotic}Ngoại Lai", + "Tăng xác suất xuất hiện Joker", + "{C:dark_edition}Âm bản lên {C:attention}20 lần", + "{C:attention}-2{} ô Joker", + }, + }, + b_cry_legendary = { + name = "Bộ Bài Huyền Thoại", + text = { + "Bắt đầu với một Joker {C:legendary}Huyền Thoại", + "Xác suất {C:green}1 trên 5{} tạo ra thêm một lá nữa", + "khi Boss Blind bị đánh bại {C:inactive}(Phải có ô trống)", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "Mọi Joker thường", + "bị vô hiệu hoá", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X điểm yêu cầu mỗi 3 giây", + "đã trôi trong ante này", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "Mọi lá bậc lẻ", + "bị vô hiệu hoá", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "Nếu ghi điểm lớn hơn 2 lần", + "yêu cầu, đặt ante thành #2#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "Mọi lá bậc chẵn", + "bị vô hiệu hoá", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X điểm yêu cầu mỗi 1.5 giây", + "đã trôi trong ván này", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Áp dụng khả năng của mọi", + "Boss Blind bị đánh bại", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Phải chơi 4 lá bài", + "hoặc ít hơn", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "Tất cả tay bài", + "bắt đầu với 1 Nhân", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "Không chơi Thùng", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "Không chơi Cù Lũ", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Chia hệ số Nhân bởi", + "số lượt bỏ bài", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "Không chơi tay bài", + "chứa Đôi", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "Tất cả tay bài", + "bắt đầu với 0 Chip", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "Không chơi Sảnh", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Chia hệ số Nhân bởi level", + "của tay Poker đã chơi", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Joker từ Sử Thi trở lên", + "bị vô hiệu hoá", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Ngẫu nhiên hoá bậc của các lá bài", + "đang giữ trong tay khi chơi", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Chọn thêm một lá, bỏ chọn", + "1 lá ngẫu nhiên trước khi tính điểm", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "Mọi Joker Âm Bản", + "bị vô hiệu hoá", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "Mọi Joker Hiếm", + "bị vô hiệu hoá", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Điểm số mỗi tay bài", + "bị giới hạn ở mức #1#", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "Xác suất #1# trên #2# tay bài", + "đã chơi sẽ không ghi điểm", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "Lật úp các lá ngửa trong tay", + "sau mỗi tay bài đã chơi", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "Một Joker ngẫu nhiên", + "bị thay thế sau mỗi tay bài", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "Mọi Joker Ít Phổ Biến", + "bị vô hiệu hoá", + }, + }, + }, + Code = { + c_cry_alttab = { + name = "://ALTTAB", + text = { + "Tạo ra nhãn của", + "Blind {C:cry_code}hiện tại", + "{C:inactive}(Hiện tại: {C:cry_code}#1#{C:inactive})", + }, + }, + c_cry_class = { + name = "://CLASS", + text = { + "Biến đổi {C:cry_code}#1#{} lá bài đã chọn", + "thành phép cường hoá {C:cry_code}mong muốn{}", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Phá hủy Joker {C:cry_code}đã chọn{},", + "tạo ra một Joker {C:cry_code}mới{}", + "với {C:cry_code}cùng độ hiếm", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Đừng nghịch dại.", + }, + }, + c_cry_ctrl_v = { + name = "://CTRL+V", + text = { + "Tạo ra một {C:cry_code}bản sao{} của lá bài thường", + "hoặc lá tiêu thụ đã chọn", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Vĩnh viễn{} loại bỏ một", + "vật phẩm trong shop {C:cry_code}đã chọn", + "{C:inactive,s:0.8}Nó sẽ không còn xuất hiện trong trận này", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Chia đôi{} giá tiền mua đang", + "hiển thị trong shop hiện tại", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "Mọi tay bài đã chơi đều được coi là", + "{C:cry_code}chứa{} một tay poker {C:cry_code}đã chọn{},", + "đặt lại sau khi hết ván", + "{C:inactive,s:0.8}Các tay poker bí mật cần được", + "{C:inactive,s:0.8}khám phá để dùng hợp lệ", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Chọn hai Joker để {C:cry_code}Kết Nối", + "{C:inactive,s:0.8}Chỉ hoạt động khi các Joker kết nối giống nhau về bối cảnh,", + "{C:inactive,s:0.8}ví dụ như Joker và Chuẩn Nhị (kích sau khi tính điểm)", + }, + }, + c_cry_inst = { + name = "://INSTANTIATE", + text = { + "Bốc một lá cùng {C:cry_code}bậc{} và một", + "lá cùng {C:cry_code}chất{} với lá bài được chọn", + "{C:inactive}(nếu có thể){}", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Thêm {C:dark_edition}Nhiễu Loạn{} cho mọi", "lá bài {C:cry_code}giữ trong tay" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Hợp nhất {C:cry_code}lá tiêu thụ{} đã chọn", + "với {C:cry_code}lá bài thường{} đã chọn", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Nhân đôi{} mọi giá trị", + "của {C:cry_code}Joker{} đã chọn cho", + "đến khi hết ván", + }, + }, + c_cry_patch = { + name = "://PATCH", + text = { + "Loại bỏ phép vô hiệu và nhãn", + "khỏi mọi lá bài có thể nhìn thấy", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Blind kế tiếp", + "cho {C:cry_code}X#1#{} lãi", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "{C:cry_code}Gói Bài{} kế tiếp có", + "thêm {C:cry_code}#1#{} lá bài và", + "thêm {C:cry_code}#1#{} lựa chọn", + "{C:inactive}(Hiện tại là {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Làm mới {C:blue}Tay Bài{} và {C:red}Lượt Bỏ Bài{},", + "trả {C:cry_code}mọi{} lá bài về bộ bài", + "và bốc một đợt bài {C:cry_code}mới{}", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Đặt {C:cry_code}trạng thái game{} về", + "khởi đầu của {C:cry_code}Ante này{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Phá hủy Joker {C:cry_code}được chọn,", + "tạo ra một {C:cry_code}Nhãn Chế Mới{}", + "với phiên bản đã {C:cry_code}nâng cấp{}", + "{C:inactive,s:0.8}Nâng cấp bằng cách sử dụng thứ tự trong bộ sưu tập.", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Ghé thăm {C:cry_code}shop", + "khi đang đánh {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Chọn một Joker hoặc", + "một lá bài thường", + "để áp nhãn {C:cry_code}Gian Lận", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { + "Kết thúc {C:cry_code}Blind{} không-phải-Boss hiện tại", + "mà {C:cry_code}không{} nhận tiền", + }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Tạo ra một Joker Thực Phẩm", + "{C:cry_code}Nhiễu Loạn", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Biến đổi {C:cry_code}#1#{} lá bài đã chọn", + "thành bậc {C:cry_code}mong muốn", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Thiên Tú", + text = { + "{X:dark_edition,C:white}^#1#{} Nhân", + }, + }, + e_cry_blur = { + name = "Mờ Ảo", + text = { + "{C:attention}Tái kích{} lá bài này {C:attention}1{} lần", + "Xác suất {C:green}#1# trên #2#{}", + "tái kích thêm {C:attention}#3#{} lần nữa", + }, + }, + e_cry_double_sided = { + name = "Hai Mặt", + text = { + "Lá bài này có thể", + "{C:attention}lật ngược{} để trở thành", + "một lá bài khác", + "{C:inactive}(Bên trống có thể kết hợp", + "{C:inactive}với một lá bài khác)", + }, + }, + e_cry_glass = { + name = "Mỏng Manh", + label = "Mỏng Manh", + text = { + "{C:white,X:mult} X#3# {} Nhân", + "Xác suất {C:green}#1# trên #2#{}", + "lá bài không bị {C:red}phá hủy", + "khi kích hoạt", + }, + }, + e_cry_glitched = { + name = "Nhiễu Loạn", + text = { + "Mọi giá trị của lá bài này", + "đều nằm {C:dark_edition}ngẫu nhiên{}", + "trong khoảng từ {C:attention}X0.1{} đến {C:attention}X10{}", + "{C:inactive}(Nếu có thể){}", + }, + }, + e_cry_gold = { + name = "Mạ Vàng", + label = "Mạ Vàng", + text = { + "Nhận {C:money}$#1#{} khi dùng", + "hoặc kích hoạt", + }, + }, + e_cry_m = { + name = "Vui Nhộn", + text = { + "{C:mult}+#1#{} Nhân", + "Lá bài này trông có vẻ", + "khá là {C:attention}Vui Nhộn{}", + }, + }, + e_cry_mosaic = { + name = "Khảm Mảnh", + text = { + "{X:chips,C:white} X#1# {} Chip", + }, + }, + e_cry_noisy = { + name = "Ồn Ào", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Siêu Bão Hòa", + text = { + "Mọi giá trị", + "của lá bài này", + "đều được {C:attention}nhân đôi{}", + "{C:inactive}(Nếu có thể)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Vang Vọng", + text = { + "Xác suất {C:green}#2# trên #3#{} để", + "{C:attention}tái kích{} #1# lần", + "khi tính điểm", + }, + }, + m_cry_light = { + name = "Dạ Quang", + text = { + "Khi chơi với {C:attention}#4#{} {C:inactive}(#3#){}", + "lá bài tính điểm khác, thêm {X:mult,C:white}X#1#{} Nhân và", + "tăng yêu cầu thêm {C:attention}5{}", + "{C:inactive}(Hiện tại là {X:mult,C:white}X#2#{C:inactive} Nhân)", + }, + }, + }, + Joker = { + j_cry_adroit = { + name = "Joker Khéo Léo", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_altgoogol = { + name = "Thẻ Googol Play Hoài Niệm", + text = { + "Bán lá này để tạo ra {C:attention}#1#{} bản sao", + "của lá {C:attention}Joker{} ở tít bên trái", + "{C:inactive,s:0.8}Không sao chép Thẻ Googol Play Hoài Niệm{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "Joker này thêm {X:chips,C:white} X#1# {} Chip cho mỗi", + "lá {C:attention}7{} hoặc {C:attention}4{} đã chơi ghi điểm", + "{C:inactive}(Hiện tại là {X:chips,C:white} X#2# {C:inactive} Chip)", + }, + }, + j_cry_apjoker = { + name = "Joker Xuyên Giáp", + text = { "{X:mult,C:white} X#1# {} Nhân khi đánh {C:attention}Boss Blind{}" }, + }, + j_cry_arsonist = { + name = "Kẻ Đốt Phá", + text = { + "Nếu tay bài đã chơi", + "chứa {C:attention}Cù lũ{},", + "{C:red}phá hủy{} mọi lá bài", + "sau khi tính điểm", + }, + }, + j_cry_astral_bottle = { + name = "Thiên Tú Đóng Chai", + text = { + "Khi bán lá này, áp nhãn", + "{C:dark_edition}Thiên Tú{} và {C:attention}Ngắn Hạn{}", + "cho một {C:attention}Joker{} ngẫu nhiên", + }, + }, + j_cry_big_cube = { + name = "Khối Vuông Lớn", + text = { + "{X:chips,C:white} X#1# {} Chip", + }, + }, + j_cry_biggestm = { + name = "Khổng Lồ", + text = { + "{X:mult,C:white} X#1# {} Nhân cho đến khi", + "hết ván nếu {C:attention}tay Poker{}", + "là {C:attention}#2#{}", + "{C:inactive}(Hiện tại là {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}không hề béo, chỉ là xương to thôi.", + }, + }, + j_cry_blacklist = { + name = "Sổ Đen", + text = { + "Nếu {C:attention}#1#{} được giữ trong tay hoặc được chơi,", + "đặt {C:chips}Chip{} và {C:mult}Nhân{} về 0", + "{C:red,E:2}Tự hủy{} nếu không còn {C:attention}#1#{} trong bộ bài", + "{C:inactive,s:0.8}Bậc không thay đổi", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Tạo ra một lá tiêu thụ {C:attention}ngẫu nhiên{}", + "khi một {C:cry_code}Lá Code{} được sử dụng", + "{C:inactive}(Phải có ô trống){}", + }, + }, + j_cry_blurred = { + name = "Joker Mờ Ảo", + text = { + "Nhận {C:blue}+#1#{} tay bài khi", + "{C:attention}Blind{} được chọn", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Mỗi {C:attention}Joker{} cho {C:chips}+#1#{} Chip", + "Tăng số lượng chip lên {C:chips}+#2#{} nếu", + "{C:attention} tay poker{} là {C:attention}#3#{}", + "{C:inactive,s:0.8}Joker Vui Nhộn cho{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chip{}", + }, + }, + j_cry_bonkers = { + name = "Joker Đập Đá", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_bonusjoker = { + name = "Joker Thưởng", + text = { + "Xác suất {C:green}#1# trên #2#{} cho mỗi", + "lá {C:attention}Thưởng{} đã chơi để tăng", + "số ô {C:attention}Joker{} hoặc ô {C:attention}tiêu thụ", + "lên {C:dark_edition}#3#{} khi tính điểm", + "{C:red}Dùng được hai lần mỗi ván", + "{C:inactive,s:0.8}(Cơ hội bình đẳng cho mỗi loại){}", + }, + }, + j_cry_booster = { + name = "Joker Gói Bài", + text = { + "{C:attention}+#1#{} ô gói bài", + "có trong shop", + }, + }, + j_cry_boredom = { + name = "Buồn Chán", + text = { + "Xác suất {C:green}#1# trong #2#{} để", + "{C:attention}tái kích{} mỗi lá {C:attention}Joker{}", + "hoặc {C:attention}lá bài đã chơi{}", + "{C:inactive,s:0.8}Không tác dụng lên lá Buồn Chán khác{}", + }, + unlock = { + "AFK ở màn hình", + "tiêu đề trong", + "{C:attention}10 phút", + }, + }, + j_cry_brittle = { + name = "Kẹo Giòn", + text = { + "Trong {C:attention}#1#{} tay sắp tới,", + "thêm {C:attention}Đá{}, {C:attention}Vàng{}, hoặc {C:attention}Thép{} cho", + "lá ghi điểm ở tít bên phải", + }, + }, + j_cry_bubblem = { + name = "Bong Bóng M", + text = { + "Tạo ra một {C:attention}Joker Vui Nhộn {C:dark_edition}Ánh Kim{}", + "Nếu tay bài đã chơi chứa", + "{C:attention}#1#{}", + "rồi {C:red,E:2}tự hủy{}", + }, + }, + j_cry_busdriver = { + name = "Tài Xế Xe Buýt", + text = { + "Xác suất {C:green}#1# trên #3#{}", + "cho {C:mult}+#2#{} Nhân", + "Xác suất {C:green}#4# trên #3#{}", + "cho {C:mult}-#2#{} Nhân", + }, + }, + j_cry_candy_basket = { + name = "Giỏ Kẹo", + text = { + "Bán lá bài này để tạo ra {C:attention}#1#{} {C:cry_candy}Kẹo", + "{C:attention}+#2#{} viên {C:cry_candy}Kẹo{} mỗi {C:attention}2{} Blind đã đánh bại", + "{C:attention}+#3#{} viên {C:cry_candy}Kẹo{} mỗi {C:attention}Boss Blind{} đã đánh bại", + }, + }, + j_cry_candy_buttons = { + name = "Kẹo Nút", + text = { + "{C:attention}#1#{} lượt Gieo lại", + "tiếp theo tốn {C:money}$1{}", + }, + }, + j_cry_candy_cane = { + name = "Kẹo Que", + text = { + "Trong {C:attention}#1#{} ván sắp tới,", + "các lá bài thường cho {C:money}$#2#", + "khi được {C:attention}tái kích", + }, + }, + j_cry_candy_dagger = { + name = "Dao Găm Kẹo", + text = { + "Khi {C:attention}Blind{} được chọn,", + "phá huỷ Joker liền phải", + "để tạo ra 1 viên {C:cry_candy}Kẹo{}", + }, + }, + j_cry_candy_sticks = { + name = "Que Kẹo", + text = { + "Khả năng Boss Blind kế tiếp sẽ không hiệu lực", + "cho đến khi bạn đã chơi {C:attention}#1#{} tay bài", + }, + }, + j_cry_canvas = { + name = "Tranh Sơn Dầu", + text = { + "{C:attention}Tái kích{} mọi {C:attention}Joker{} ở bên trái một lần", + "cho {C:attention}mỗi{} {C:attention}Joker{} không-phải-{C:blue}Thường{}", + "ở bên phải Joker này", + }, + unlock = { + "Tái kích một {C:attention}Joker", + "{C:attention}114{} lần", + "trong một tay bài", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Mỗi lá bài đã chơi ghi thêm", + "{X:mult,C:white}X#1#{} Nhân khi tính điểm", + "cho {C:attention}#2#{} ván sắp tới", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Tái kích Joker {C:attention}ở tít bên trái{}", + "thêm {C:attention}#1#{} lần", + }, + }, + j_cry_chili_pepper = { + name = "Ớt Cay", + text = { + "Joker này thêm {X:mult,C:white} X#2# {} Nhân", + "ở cuối ván,", + "{C:red,E:2}tự hủy{} sau {C:attention}#3#{} ván", + "{C:inactive}(Hiện tại là{} {X:mult,C:white} X#1# {} {C:inactive}Nhân){}", + }, + }, + j_cry_chocolate_dice = { + name = "Xúc Sắc Sôcôla", + text = { + "Gieo {C:green}Xúc Sắc 10{} khi", + "{C:attention}Boss Blind{} bị đánh bại", + "để bắt đầu {C:cry_ascendant,E:1}sự kiện", + "{C:inactive}(Hiện tại là: #1#)", + }, + }, + j_cry_circulus_pistoris = { + name = "Hoàn Hình Chuyển Luân", + text = { + "{X:dark_edition,C:white}^#1#{} Chip và {X:dark_edition,C:white}^#1#{} Nhân", + "nếu {C:attention}còn lại", + "{C:attention}đúng{} #2# tay bài", + }, + }, + j_cry_circus = { + name = "Rạp Xiếc", + text = { + "Mỗi Joker {C:red}Hiếm{} cho {X:mult,C:white} X#1# {} Nhân", + "Mỗi Joker {C:cry_epic}Sử Thi{} cho {X:mult,C:white} X#2# {} Nhân", + "Mỗi Joker {C:legendary}Huyền Thoại{} cho {X:mult,C:white} X#3# {} Nhân", + "Mỗi Joker {C:cry_exotic}Ngoại Lai{} cho {X:mult,C:white} X#4# {} Nhân", + }, + unlock = { + "Sở hữu một Joker {C:red}Hiếm{}, một Joker {C:cry_epic}Sử Thi{}", + "và một Joker {C:legendary}Huyền Thoại{} trước {C:attention}Ante 9", + }, + }, + j_cry_clash = { + name = "Chuẩn Xung Đột", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu chơi", + "một tay bài có chứa", + "một {C:attention}#2#", + }, + unlock = { + "Thắng một trận với", + "tay bài cuối cùng là", + "một {E:1,C:attention}Đôi Tối Thượng", + }, + }, + j_cry_clicked_cookie = { + name = "Bánh Quy Nhấp Chuột", + text = { + "{C:chips}+#1#{} Chip", + "{C:chips}-#2#{} Chip khi", + "bạn {C:attention}nhấp chuột", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Tạo ra một {C:cry_code}Lá Code{}", + "{C:dark_edition}Âm Bản{} khi", + "{C:attention}Blind{} được chọn", + }, + unlock = { + "Khám phá {C:attention}mọi", + "{C:cry_code}Lá Code", + }, + }, + j_cry_coin = { + name = "Đồng Crypto", + text = { + "Nhận trong khoảng từ", + "{C:money}$#1#{} đến {C:money}$#2#{} cho", + "mỗi Joker {C:attention}đã bán{}", + }, + }, + j_cry_compound_interest = { + name = "Lãi Kép", + text = { + "Thu về {C:money}#1#%{} tổng số tiền", + "ở cuối ván,", + "tăng thêm {C:money}#2#%{} mỗi", + "thanh toán liên tiếp", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "Khi một lá {C:cry_code}Code{} được dùng,", + "Xác suất {C:green}#1# trên #2#{} tạo ra bản sao", + "vào ô tiêu thụ", + "{C:inactive}(Phải có ô trống)", + }, + }, + j_cry_cotton_candy = { + name = "Kẹo Bông Gòn", + text = { + "Khi bán, các {C:attention}Joker{}", + "liền kề trở thành {C:dark_edition}Âm Bản{}", + }, + }, + j_cry_crustulum = { + name = "Cao Phiến", + text = { + "Joker này thêm {C:chips}+#2#{} Chip", + "mỗi lần {C:attention}gieo lại{} trong shop", + "{C:green}Mọi lượt Gieo lại đều miễn phí{}", + "{C:inactive}(Hiện tại là {C:chips}+#1#{C:inactive} Chip)", + }, + }, + j_cry_cryptidmoment = { + name = "Chuỗi M", + text = { + "Bán lá này để thêm", + "{C:money}$#1# {C:attention}giá bán{}", + "cho mọi {C:attention}Joker{}", + }, + }, + j_cry_cube = { + name = "Khối Vuông", + text = { + "{C:chips}+#1#{} Chip", + }, + }, + j_cry_curse_sob = { + name = "Khóc", + text = { + "{C:edition,E:1}mày không thể{} {C:cry_ascendant,E:1}chạy...{}", + "{C:edition,E:1}mày không thể{} {C:cry_ascendant,E:1}trốn...{}", + "{C:dark_edition,E:1}mày không thể thoát...{}", + "{C:inactive}(Phải có ô trống){}", + }, + unlock = { + "Sở hữu {C:attention}Đài Tưởng Niệm", + "{C:purple}Vĩnh Hằng", + }, + }, + j_cry_cursor = { + name = "Con Trỏ", + text = { + "Joker này thêm {C:chips}+#2#{} Chip", + "cho mỗi lá {C:attention}đã mua{}", + "{C:inactive}(Hiện tại là {C:chips}+#1#{C:inactive} Chip)", + }, + }, + j_cry_cut = { + name = "Cắt", + text = { + "Joker này phá hủy", + "một lá {C:cry_code}Code{} ngẫu nhiên", + "và thêm {X:mult,C:white} X#1# {} Nhân", + "ở cuối {C:attention}shop{}", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_delirious = { + name = "Joker Mê Sảng", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_digitalhallucinations = { + name = "Ảo Giác Kỹ Thuật Số", + text = { + "Khi một {C:attention}Gói Bài{} được mở,", + "Xác suất {C:green}#1# trên #2#{} tạo ra", + "một lá {C:dark_edition}Âm Bản{} ngẫu nhiên", + "tương ứng với {C:attention}loại{} của nó", + }, + }, + j_cry_discreet = { + name = "Joker Khép Kín", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "M Nguệch Ngoạc", + text = { + "Tạo ra #2# lá {C:attention}Tiêu Thụ {C:dark_edition}Âm Bản{}", + "Khi {C:attention}Blind{} được chọn", + "Tạo thêm #1# lá {C:attention}Tiêu Thụ{}", + "cho mỗi {C:attention}Joker Vui Nhộn{}", + }, + }, + ["j_cry_Double Scale"] = { -- ????????????? + name = "Tăng Trưởng Kép", + text = { + "{C:attention}Joker{} tăng trưởng sẽ tăng trưởng", + "theo đa thức {C:attention}bậc hai", + "{C:inactive,s:0.8}(VD: +1, +3, +6, +10)", + "{C:inactive,s:0.8}(tăng bởi +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Thả Đạn", + text = { + "Joker này thêm {X:mult,C:white} X#1# {} Nhân cho mỗi lá bài", + "chất {V:1}#2#{} {C:attention}không ghi điểm{} đã chơi,", + "chất thay đổi sau mỗi ván", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#3# {C:inactive} Nhân)", + }, + unlock = { + "Chơi {C:attention}Mậu Thầu{}", + "với {C:attention}4{} lá bài", + "{C:attention}đồng chất", + }, + }, + j_cry_dubious = { + name = "Joker Mơ Hồ", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "Chuẩn Song Nhị", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "mà không chơi", + "{E:1,C:attention}Thú{} nào", + }, + }, + j_cry_duplicare = { + name = "Phức Chế", + text = { + "Joker này thêm {X:mult,C:white} X#2# {} Nhân", + "Khi một {C:attention}Joker{} kích hoạt", + "hoặc lá bài thường ghi điểm", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#1# {C:inactive} Nhân)", + }, + }, + j_cry_effarcire = { + name = "Sung Doanh", + text = { + "Bốc {C:green}cả bộ bài{} lên tay", + "khi {C:attention}Blind{} được chọn", + '{C:inactive,s:0.8}"Nếu tôi ở mức 1x quá xấu,', + '{C:inactive,s:0.8}bạn không xứng đáng dùng tôi ở mức 2x"', + }, + }, + j_cry_energia = { + name = "Năng Lượng", + text = { + "Khi nhận được {C:attention}Nhãn{},", + "tạo ra {C:attention}#1#{} bản sao của nó", + "và {C:attention}tăng{} số lượng", + "bản sao lên {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Vương Bài Quân Hành", + text = { + "Các Joker sẽ xuất hiện theo", + "thứ tự trong {C:attention}Bộ Sưu Tập{}", + "Tạo ra {C:attention}#1#{} Joker {C:dark_edition}Âm Bản{}", + "khi một tay bài được chơi", + "{C:inactive,s:0.8}Joker {C:cry_exotic,s:0.8}Ngoại Lai {C:inactive,s:0.8}hoặc tốt hơn không thể xuất hiện", + "{s:0.8}Joker Được Tạo Gần Nhất: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}LL{}{C:dark_edition}OỖ{}{C:red}IIII{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Ngọn lửa Vĩnh hằng", + text = { + "Joker này thêm {X:mult,C:white} X#1# {} Nhân", + "cho mỗi lá đã {C:attention}bán{}", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_exoplanet = { + name = "Ngoại Nhân Tinh", + text = { + "Mỗi lá bài {C:dark_edition}Lấp Lánh{}", + "cho {C:mult}+#1#{} Nhân", + }, + }, + j_cry_exponentia = { + name = "Chỉ Số", + text = { + "Joker này thêm {X:dark_edition,C:white} ^#1# {} Nhân", + "khi {X:red,C:white} XNhân {} được kích hoạt", + "{C:inactive}(Hiện tại là {X:dark_edition,C:white} ^#2# {C:inactive} Nhân)", + }, + }, + j_cry_exposed = { + name = "Phát Giác", + text = { + "Tái kích mọi lá bài không-phải-{C:attention}mặt{}", + "thêm {C:attention}#1#{} lần", + "Mọi lá {C:attention}mặt{} bị vô hiệu hoá", + }, + }, + j_cry_facile = { + name = "Giản Dịch", + text = { + "{X:dark_edition,C:white}^#1#{} Nhân nếu", + "các lá bài đã chơi tính điểm", + "{C:attention}#2#{} lần hoặc ít hơn", + }, + }, + j_cry_filler = { + name = "Chuẩn Lấp", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "mà không chơi", + "{E:1,C:attention}Mậu Thầu{} nào", + }, + }, + j_cry_fractal = { + name = "Ngón Tay Phân Dạng", + text = { + "{C:attention}+#1#{} số lá có thể chọn", + }, + unlock = { + "Chơi {C:attention}Thùng phá Sảnh{}", + "mà phần {C:attention}Sảnh", + "không trùng phần {C:attention}Thùng{}", + }, + }, + j_cry_flip_side = { + name = "Mặt Khác", + text = { + "Joker {C:dark_edition}Hai Mặt{} dùng", + "hiệu ứng mặt sau", + "thay vì mặt trước", + "{C:attention}Tái kích{} mọi Joker {C:dark_edition}Hai Mặt", + }, + }, + j_cry_foodm = { + name = "Thức Ăn Nhanh M", + text = { + "{C:mult}+#1#{} Nhân", + "{C:red,E:2}tự hủy{} trong {C:attention}#2#{} ván", + "Tăng thêm {C:attention}#3#{} ván khi", + "{C:attention}Joker Vui Nhộn{} được {C:attention}bán{}", + "{C:inactive,s:0.8}2 McDouble, 2 McChicken, Khoai{}", + "{C:inactive,s:0.8}Chiên Lớn, 20 Miếng & Bánh Lớn{}", + }, + }, + j_cry_foolhardy = { + name = "Joker liều lĩnh", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_formidiulosus = { + name = "Khu Tà", + text = { + "Khi nhận một Joker {X:cry_cursed,C:white}Nguyền Rủa{}, phá hủy nó", + "Tạo ra {C:attention}#1#{} viên {C:cry_candy}Kẹo {C:dark_edition}Âm Bản{} vào cuối Shop", + "Thêm {X:dark_edition,C:white}^#2#{} Nhân cho mỗi viên {C:cry_candy}Kẹo{} đang sở hữu", + "{C:inactive}(Hiện tại lạ {X:dark_edition,C:white}^#3#{C:inactive} Nhân)", + }, + }, + j_cry_foxy = { + name = "Joker Cáo Già", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Con Quay Fidget", + text = { + "Joker này thêm {C:chips}+#2#{} Chip", + "nếu tay bài đã chơi {C:attention}không phải{}", + "là {C:attention}tay poker{} chơi nhiều nhất", + "{C:inactive}(Hiện tại là {C:chips}+#1#{C:inactive} Chip)", + }, + }, + j_cry_fuckedup = { + name = 'Joker "Hết Cứu"', + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_gardenfork = { + name = "Vườn Rẽ Nhánh", + text = { + "Nhận {C:money}$#1#{} nếu {C:attention}tay bài đã chơi{}", + "chứa một lá {C:attention}Át{} và một lá {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Song Tử", + text = { + "{C:attention}Nhân đôi{} mọi giá trị", + "của {C:attention}Joker{} ở tít bên trái", + "vào cuối mỗi ván", + }, + }, + j_cry_ghost = { + name = "Con Ma", + text = { + "Vào cuối mỗi ván:", + "Xác suất {C:green}#1# trên #2#{} để", + "{C:attention}ám{} một {C:attention}Joker{} ngẫu nhiên", + "Xác suất {C:green}#1# trên #3#{} để", + "{E:2,C:red}tự hủy", + }, + }, + j_cry_giggly = { + name = "Joker Ngớ Ngẩn", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Joker Hoàng Kim", + text = { + "Nhận {C:money}#1#%{} của", + "tổng tiền ở cuối ván", + "Giá trị tăng thêm {C:money}#2#%{}", + "khi mỗi lá {C:attention}Vàng{} đã chơi", + "được tính điểm", + }, + }, + j_cry_googol_play = { + name = "Thẻ Googol Play", + text = { + "Xác suất {C:green}#1# trên #2#{} cho", + "{X:red,C:white} X#3# {} Nhân", + }, + unlock = { + "Đạt {E:1,C:attention}#1.0e100#{} Chip", + "trong một tay bài", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Tạo ra một {C:attention}Joker{}", + "ngẫu nhiên ở cuối ván", + "Bán lá này để tạo ra một", + "{C:attention}Joker{} ngẫu nhiên", + "{C:inactive}(Cần ô trống){}", + }, + }, + j_cry_happyhouse = { + name = "Ngôi Nhà Vui Vẻ", + text = { + "{X:dark_edition,C:white}^#1#{} Nhân chỉ sau khi", + "chơi {C:attention}114{} tay bài{}", + "{C:inactive}(Hiện tại là #2#/114){}", + "{C:inactive,s:0.8}Không nơi đâu bằng nhà!{}", + }, + }, + j_cry_home = { + name = "Chuẩn Nhà", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "mà không chơi", + "{E:1,C:attention}Cù Lũ{} nào", + }, + }, + j_cry_hunger = { + name = '"Tiêu" Thụ', + text = { + "Nhận {C:money}$#1#{} khi dùng", + "một {C:attention}lá tiêu thụ{}", + }, + }, + j_cry_iterum = { + name = "Tái Xúc", + text = { + "Tái kích mọi lá bài đã chơi", + "{C:attention}#2#{} lần, mỗi lá bài", + "đã chơi ghi thêm", + "{X:mult,C:white} X#1# {} Nhân khi tính điểm", + }, + }, + j_cry_jawbreaker = { + name = "Máy Nghiền", + text = { + "Khi {C:attention}Boss Blind{} bị đánh bại,", + "{C:attention}nhân đôi{} giá trị của các Joker liền kề", + "rồi {E:2,C:red}tự hủy{}", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "Joker này thêm {X:mult,C:white} X#1# {} Nhân", + "cho mỗi tay bài {C:attention}liên tiếp{} đã chơi", + "khi chơi {C:attention}tay poker{} nhiều nhất", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + unlock = { + "Thắng một trận", + "mà chỉ chơi một", + " {C:attention}loại tay", + "{C:attention}poker{} duy nhất", + }, + }, + j_cry_jollysus = { + name = "Joker Vui Nhộn?", + text = { + "Tạo ra Joker {C:dark_edition}Vui Nhộn{}", + "khi một Joker được {C:attention}bán{}", + "{C:red}Dùng được một lần mỗi ván{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Nghe có vẻ không sao...{}", + }, + }, + j_cry_kidnap = { + name = "Bắt Cóc", + text = { + "Nhận {C:money}$#2#{} ở cuối ván", + "Tiền thưởng tăng thêm {C:money}$#1#{}", + "khi một Joker {C:attention}+Nhân Tay Bài{} hoặc", + "{C:attention}+Chip Tay Bài{} được bán", + }, + }, + j_cry_kooky = { + name = "Joker Kì Quặc", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Chú hề Krusty", + text = { + "Lá Joker này thêm", + "{X:mult,C:white} X#1# {} Nhân mỗi {C:attention}lá bài{}", + "đã chơi được ghi điểm", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_kscope = { + name = "Kính Vạn Hoa", + text = { + "Thêm {C:dark_edition}Đa sắc{} cho", + "một {C:attention}Joker{} ngẫu nhiên khi", + "{C:attention}Boss Blind{} bị đánh bại", + }, + unlock = { + "Đánh bại {C:attention}Boss Blind", + "với {C:attention}5 Lá Bài Ấn Bản{} hoặc", + "{C:attention}Joker Ấn Bản", + "trở lên", + }, + }, + j_cry_lightupthenight = { + name = "Thắp Sáng Trời Đêm", + text = { + "Mỗi lá {C:attention}7{} hoặc {C:attention}2{} đã chơi", + "ghi thêm {X:mult,C:white}X#1#{} Nhân khi tính điểm", + }, + }, + j_cry_longboi = { + name = "Quái Vật", + text = { + "Cho bản sao tương lai của", + "Joker này thêm {X:mult,C:white}X#1#{} Nhân", + "ở cuối ván", + "{C:inactive}(Hiện tại là {X:mult,C:white}X#2#{C:inactive} Nhân){}", + }, + }, + j_cry_loopy = { + name = "Lặpặpặpặpặp", + text = { + "{C:attention}Tái kích{} mọi Joker", + "cho mỗi {C:attention}Joker{}", + "{C:attention}Vui Nhộn{} đã bán ở ván này", + "{C:inactive}(Hiện tại là {}{C:attention:}#1#{}{C:inactive} Lượt tái kích){}", + "{C:inactive,s:0.8}Thực sự không đủ chỗ...{}", + }, + }, + j_cry_lucky_joker = { + name = "Joker May Mắn", + text = { + "Nhận {C:money}$#1#{} mỗi lần", + "Lá {C:attention}May Mắn{} kích hoạt {C:green}thành công{}", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "Mọi Joker đều cho", + "{X:chips,C:white} X#1# {} Chip", + }, + }, + j_cry_m = { + name = "m", + text = { + "Lá Joker này thêm {X:mult,C:white} X#1# {} Nhân", + "khi {C:attention}Joker Vui Nhộn{} được bán", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Tạo ra một {C:attention}Joker Vui Nhộn{}", + "{C:dark_edition}Âm Bản{} khi", + "{C:attention}Blind{} được chọn", + }, + }, + j_cry_macabre = { + name = "Joker Rùng Rợn", + text = { + "Khi {C:attention}Blind{} được chọn,", + "phá hủy mọi {C:attention}Joker{} ngoại trừ", + "{C:legendary}Joker M{} và {C:attention}Joker Vui Nhộn{}", + "và tạo ra #1# {C:attention}Joker Vui Nhộn{}", + "cho mỗi lá bị phá hủy", + }, + }, + j_cry_magnet = { + name = "Nam Châm Tủ Lạnh", + text = { + "Nhận {C:money}$#1#{} ở cuối ván", + "Nhận {X:money,C:white} X#2# {} số tiền nếu có", + "{C:attention}#3#{} {C:attention}Joker{} hoặc ít hơn", + }, + }, + j_cry_manic = { + name = "Joker Hưng Cảm", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Tái kích mọi Joker", + "thêm {C:attention}#1#{} lần", + }, + }, + j_cry_mask = { + name = "Mặt Nạ", + text = { + "Tái kích hoạt mọi lá {C:attention}mặt{}", + "thêm {C:attention}#1#{} lần", + "Mọi lá bài không-phải-{C:attention}mặt{} bị vô hiệu hoá", + }, + }, + j_cry_maximized = { + name = "Tối Đa Hóa", + text = { + "Mọi lá {C:attention}mặt{}", + "được coi như {C:attention}Già{},", + "mọi lá {C:attention}số{}", + "được coi như {C:attention}10{}", + }, + unlock = { + "Chơi một {C:attention}Thùng Ngũ Quý{}", + "chứa {C:attention}Già", + }, + }, + j_cry_maze = { + name = "Mê Cung", + text = { + "Mọi tay bài sẽ được coi là", + "{C:attention}tay đầu tiên{} của mỗi ván,", + "mọi lượt bỏ sẽ được coi là", + "{C:attention}lượt bỏ đầu tiên{} của mỗi ván", + }, + }, + j_cry_Megg = { + name = "Mrứng", + text = { + "Bán lá này để tạo ra", + "{C:attention}#2#{} #3# Vui Nhộn, tăng thêm", + "{C:attention}#1#{} ở cuối ván", + }, + }, + j_cry_mellowcreme = { + name = "Kẹo Dẻo Mềm", + text = { + "Bán lá này để {C:attention}nhân", + "giá bán của mọi", + "{C:attention}lá tiêu thụ{} lên {C:attention}X#1#", + }, + }, + j_cry_membershipcard = { + name = "Thẻ Thành Viên", + text = { + "{X:mult,C:white}X#1#{} Nhân cho mỗi thành viên", + "ở trong {C:attention}Cryptid Discord{}", + "{C:inactive}(Hiện tại là {X:mult,C:white}X#2#{C:inactive} Nhân)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Thẻ Thành Viên Mục Nát", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chip cho mỗi thành viên", + "ở trong {C:attention}Cryptid Discord{}", + "{C:inactive}(Hiện tại là {C:chips}+#2#{C:inactive} Chip)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Mưa Sao Băng", + text = { + "Mỗi lá {C:dark_edition}Ánh Kim{}", + "cho {C:chips}+#1#{} Chip", + }, + }, + j_cry_mneon = { + name = "M Neon", + text = { + "Nhận {C:money}$#2#{} ở cuối ván", + "Tiền thưởng tăng thêm {C:money}$#1#{}", + "cho mỗi lá {C:attention}Joker Vui Nhộn{}", + "hoặc {C:legendary}Joker M{}", + "ở cuối ván", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "Joker này thêm {X:mult,C:white} X#1# {} Nhân", + "nếu không có {C:attention}lượt bỏ bài{} nào", + "được dùng trong ván này", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_monkey_dagger = { + name = "Dao Găm Khỉ", + text = { + "Khi {C:attention}Blind{} được chọn,", + "phá hủy Joker liền trái", + "và vĩnh viện thêm {C:attention}mười lần{}", + "giá bán của nó vào {C:chips}Chip{}", + "{C:inactive}(Hiện tại là {C:chips}+#1#{C:inactive} Chip)", + }, + }, + j_cry_monopoly_money = { + name = "Tiền Độc Quyền", + text = { + "Xác suất {C:green}#1# trên #2#{}", + "{C:attention}phá hủy{} những vật phẩm đã mua", + "Chia đôi số tiền {C:attention}khi bán", + }, + }, + j_cry_morse = { + name = "Mã Morse", + text = { + "Nhận {C:money}$#2#{} ở cuối ván", + "Tiền thưởng tăng thêm {C:money}$#1#{} khi", + "một lá bài {C:attention}Ấn Bản{} được bán", + }, + }, + j_cry_mprime = { + name = "Sứ Đồ Thập Tam", + text = { + "Tạo ra một {C:legendary}Joker M{} ở cuối ván", + "thêm {X:dark_edition,C:white}^#1#{} Nhân cho mỗi {C:attention}Joker Vui Nhộn{} hoặc {C:legendary}Joker M ", + "Tăng {X:dark_edition,C:white}^#2#{} khi một {C:attention}Joker Vui Nhộn{} được {C:attention}bán", + "{C:inactive,s:0.8}(Ngoại trừ Thập Tam)", + }, + }, + j_cry_mstack = { + name = "Chồng M", + text = { + "Tái kích mọi lá bài đã chơi", + "một lần cho mỗi {C:attention}#2#{} {C:inactive}[#3#]{}", + "{C:attention}Joker Vui Nhộn{} đã bán", + "{C:inactive}(Hiện tại là{}{C:attention:} #1#{}{C:inactive} lượt tái kích){}", + }, + }, + j_cry_multjoker = { + name = "Joker Nhân", + text = { + "Xác suất {C:green}#1# trên #2#{} cho mỗi", + "lá {C:attention}Nhân{} đã chơi để tạo ra", + "một lá {C:spectral}Dị Chủng{} khi tính điểm", + "{C:inactive}(Phải có ô trống)", + }, + }, + j_cry_necromancer = { + name = "Chiêu Hồn Sư", + text = { + "Khi một Joker được {C:attention}bán{} với giá lớn hơn {C:attention}$0{},", + "tạo ra một lá Joker {C:attention}đã bán{} {C:attention}ngẫu nhiên{} trong trận này", + "với giá bán bằng {C:money}$0{}", + }, + }, + j_cry_negative = { + name = "Joker Âm Bản", + text = { + "{C:dark_edition}+#1#{} ô {C:attention}Joker{}", + }, + }, + j_cry_nice = { + name = "Toẹt Vòi", + text = { + "{C:chips}+#1#{} Chip nếu tay bài đã chơi", + "chứa một lá {C:attention}6{} và một lá {C:attention}9", + "{C:inactive,s:0.8}Toẹt Vòi.{}", + }, + }, + j_cry_night = { + name = "Màn Đêm", + text = { + "{X:dark_edition,C:white}^#1#{} Nhân cho", + "tay bài cuối cùng của ván này", + "{E:2,C:red}tự hủy{}", + "tại tay bài cuối cùng", + }, + }, + j_cry_nosound = { + name = "Điếc, Mất Trí", + text = { + "Tái kích mỗi lá {C:attention}7{} đã chơi", + "thêm {C:attention:}#1#{} lần", + }, + }, + j_cry_notebook = { + name = "Vở Ghi Chép", + text = { + "Xác suất {C:green} #1# trên #2#{} để nhận {C:dark_edition}+#6#{} ô Joker", + "mỗi lần {C:attention}gieo lại{} trong shop", + "{C:green}Luôn kích hoạt{} nếu có", + "{C:attention}#5#{} {C:attention}Joker Vui Nhộn{} hoặc nhiều hơn", + "{C:red}Dùng được một lần mỗi ván{}", + "{C:inactive}(Hiện tại là {C:dark_edition}+#3#{}{C:inactive} và #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Khối Số Liệu", + text = { + "Nhận {C:money}$#1#{} ở cuối ván", + "Tiền thưởng tăng thêm {C:money}$#2#{}", + "cho mỗi lá {C:attention}#3#{} cầm trên tay,", + "bậc thay đổi sau mỗi ván", + }, + }, + j_cry_nuts = { + name = "Chuẩn Rồ", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "mà không chơi", + "{E:1,C:attention}Thùng Phá Sảnh{} nào", + }, + }, + j_cry_nutty = { + name = "Joker Phát Rồ", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_oil_lamp = { + name = "Đèn Dầu", + text = { + "Tăng giá trị của lá {C:attention}Joker{} liền phải", + "thêm {C:attention}X#1#{} ở cuối ván", + }, + }, + j_cry_oldblueprint = { + name = "Bản Thiết Kế Cũ", + text = { + "Sao chép khả năng của", + "{C:attention}Joker{} liền phải", + "Xác suất {C:green}#1# trên #2#{}", + "lá này bị phá hủy", + "ở cuối ván", + }, + }, + j_cry_oldcandy = { + name = "Kẹo Hoài Niệm", + text = { + "Bác lá này để", + "nhận vĩnh viễn", + "{C:attention}+#1#{} lá giữ trong tay", + }, + }, + j_cry_oldinvisible = { + name = "Joker Tàng Hình Hoài Niệm", + text = { + "{C:attention}Nhân bản{} một {C:attention}Joker{}", + "ngẫu nhiên cho mỗi", + "{C:attention}4{} Joker đã bán", + "{s:0.8}Ngoại trừ chính nó{}", + "{C:inactive}(Hiện tại là #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Nhà Tù", + text = { + "Mọi tay bài được coi như", + "{C:attention}tay bài cuối cùng{} của mỗi ván", -- +$4 + }, + }, + j_cry_penetrating = { + name = "Joker Đâm Thủng", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_pickle = { + name = "Dưa Chua", + text = { + "Khi {C:attention}Blind{} bị bỏ qua, tạo", + "ra {C:attention}#1#{} nhãn, giảm số nhãn", + "đi {C:red}#2#{} khi {C:attention}Blind{} được chọn", + }, + }, + j_cry_pirate_dagger = { + name = "Dao Găm Cướp Biển", + text = { + "Khi {C:attention}Blind{} được chọn,", + "Phá hủy Joker liền phải", + "và thêm {C:attention}1/4{} giá bán", + "của nó vào {X:chips,C:white} XChip {}", + "{C:inactive}(Hiện tại là {X:chips,C:white} X#1# {C:inactive} Chip)", + }, + }, + j_cry_pity_prize = { + name = "Giải Động Viên", + text = { + "Nếu bỏ qua một {C:attention}Gói Bài{},", + "nhận một {C:attention}Nhãn{} ngẫu nhiên", + }, + }, + j_cry_pot_of_jokes = { + name = "Chiếc Hũ Tham Cười", + text = { + "{C:attention}#1#{} lá giữ trong tay,", + "tăng thêm {C:blue}#2#{}", + "sau mỗi ván", + }, + unlock = { + "Tăng {C:attention}số lá giữ trong tay", + "lên {C:attention}12", + }, + }, + j_cry_primus = { + name = "Tố Số", + text = { + "Joker này thêm {X:dark_edition,C:white} ^#1# {} Nhân", + "nếu như tất cả lá đã chơi là", + "{C:attention}Át{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, hoặc {C:attention}7{}", + "{C:inactive}(Hiện tại là {X:dark_edition,C:white} ^#2# {C:inactive} Nhân)", + }, + }, + j_cry_pumpkin = { + name = "Bí Ngô", + text = { + "Ngăn thua trận nếu chip đạt được", + "ít nhất {C:attention}50%{} so với chip yêu cầu", + "{C:attention}Biến thành Bí Ngô Được Khoét", + "{C:attention}khi{} bị {C:red}phá hủy", + }, + }, + j_cry_carved_pumpkin = { + name = "Bí Ngô Được Khoét", + text = { + "{C:attention}#1#{} Boss Blind sắp tới", + "sẽ bị {C:attention}vô hiệu hoá{}", + "khả năng của nó", + }, + }, + j_cry_python = { + name = "Python", + text = { + "Joker này thêm", + "{X:mult,C:white} X#1# {} Nhân khi một", + "lá {C:cry_code}Code{} được dùng", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_queens_gambit = { + name = "Thí Quân Hậu", + text = { + "Nếu {C:attention}tay poker{} là", + "{C:attention}Sảnh Chúa{}, phá huỷ", + "{C:attention}Đầm{} và tạo ra một", + "{C:attention}Joker {C:red}Hiếm {C:dark_edition}Âm bản{}", + }, + }, + j_cry_quintet = { + name = "Chuẩn Ngũ", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "với tay bài cuối cùng", + "là {E:1,C:attention}Ngũ quý Già", + }, + }, + j_cry_redbloon = { + name = "Bóng Đỏ", + text = { + "Nhận {C:money}$#1#{} trong {C:attention}#2#{} ván", + "{C:red,E:2}tự hủy{}", + }, + }, + j_cry_redeo = { + name = "Hồi Tố", + text = { + "{C:attention}-#1#{} Ante khi", + "đã tiêu {C:money}$#2#{} {C:inactive}($#3#){}", + "{s:0.8}Yêu cầu tiêu tiền tăng thêm", + "{C:attention,s:0.8}theo cấp số nhân{s:0.8} sau mỗi lần dùng", + "{C:money,s:0.8}Lần tăng tiếp theo: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Viết Lại", + text = { + "Khi một {C:attention}Joker{} được bán,", + "thêm khả năng của nó cho", + "mọi lá Joker khác", + "{C:inactive,s:0.8}Không ảnh hưởng lên Viết Lại{}", + }, + }, + j_cry_reverse = { + name = "Lá Đảo Ngược", + text = { + "Lấp đầy các ô Joker còn trống {C:inactive}(Tối đa 100){}", + "bằng {C:attention}Joker Vui Nhộn{} {C:dark_edition}Lấp Lánh{} nếu", + "{C:attention}tay bài bỏ{} là {C:attention}#1#{}", + "{C:red,E:2}tự hủy{}", + "{C:inactive,s:0.8}Cú trở lại SIÊU CẤP PRO MAX{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Nhận khả năng ngẫu nhiên mỗi {C:attention}Ante{}", + }, + unlock = { + "Xác suất {C:green}1 trên 20{}", + "để mở khóa lá bài này", + "ở màn hình {C:attention}Thua Cuộc", + }, + }, + j_cry_sacrifice = { + name = "Hi Sinh", + text = { + "Tạo ra #3# Joker {C:green}Ít Phổ Biến{}", + "và #2# {C:attention}Joker Vui Nhộn{} khi", + "một lá {C:spectral}Siêu Linh{} được dùng", + "{C:red}Dùng được một lần mỗi ván{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Chồi Non", + text = { + "Sau khi ghi điểm {C:attention}#2#{} {C:inactive}[#1#]{} lá Cường Hóa,", + "bán lá này để tạo ra một", + "{C:attention}Joker{} {C:cry_epic}Sử Thi{}", + "{C:inactive,s:0.8}Sẽ tạo ra một {C:attention,s:0.8}Joker{} {C:red,s:0.8}Hiếm{}", + "{C:inactive,s:0.8}nếu như Joker{} {C:cry_epic,s:0.8}Sử Thi{} {C:inactive,s:0.8}bị tắt", + }, + }, + j_cry_savvy = { + name = "Joker Lương Tri", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Khắc Độ", + text = { + "{C:attention}Joker{} tăng trưởng sẽ tăng trưởng", + "theo đa thức bậc {C:attention}#1#{}", + "tăng bậc đa thức lên {C:attention}#2#{}", + "ở cuối ván", + "{C:inactive,s:0.8}({C:attention,s:0.8}Khắc Độ{C:inactive,s:0.8} bị ngoại trừ)", + }, + }, + j_cry_scrabble = { + name = "Ô Scrabble", + text = { + "Xát Xuất {C:green}#1# trên #2#{} tạo ra một Joker", + "{C:green}Ít Phổ Biển{} phiên bản {C:dark_edition}Vui Nhộn", + "khi chơi một tay bài", + }, + }, + j_cry_seal_the_deal = { + name = "Đóng Dấu Thỏa Thuận", + text = { + "Thêm một {C:attention}con dấu ngẫu nhiên{} cho mỗi lá bài", + "ghi điểm ở {C:attention}tay chơi cuối cùng{} của ván", + }, + }, + j_cry_shrewd = { + name = "Joker Lanh Lợi", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Joker Lố Bịch", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tí Hon", + text = { + "Tạo ra nhãn {C:cry_jolly}M Đôi", + "nếu {C:attention}tay poker{}", + "là {C:attention}#1#{}", + "{C:inactive,s:0.8}được rồi, về cơ bản là tôi rất tí hon, ok?", + }, + }, + j_cry_soccer = { + name = "Một Vì Tất Cả", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} ô Joker", + "{C:attention}+#1#{} ô Gói Bài", + "{C:attention}+#1#{} lá giữ trong tay", + "{C:attention}+#1#{} ô vật phẩm", + "{C:attention}+#1#{} ô lá bài trong shop", + "{C:attention}+#1#{} ô Phiếu", + }, + unlock = { + "Thắng một trận", + "mà chỉ dùng {C:attention}Mậu Thầu", + }, + }, + j_cry_fleshpanopticon = { + name = "Nhà Tù Thịt", + text = { + "{C:red}X#1#{} điểm {C:attention}Boss Blind{}", + "Khi {C:attention}Boss Blind{} bị đánh bại,", + "{C:red}tự hủy{} và tạo ra", + "một lá {C:spectral}Cánh Cổng{} {C:dark_edition}Âm Bản{}", + '{C:inactive,s:0.8}"Nhà tù này... đang giam giữ... tôi sao?"', + }, + }, + j_cry_spaceglobe = { + name = "Thiên Cầu", + text = { + "Joker này thêm {X:chips,C:white}X#2#{} Chip", + "nếu {C:attention}tay poker{} là một {C:attention}#3#{},", + "Tay bài sẽ thay đổi mỗi lần tăng{}", + "{C:inactive}(Hiện tại là{} {X:chips,C:white}X#1#{} {C:inactive}Chip){}", + }, + }, + j_cry_spectrogram = { + name = "Ảnh Phổ", + text = { + "{C:attention}Tái kích{} Joker ở tít bên phải", + "mỗt lần cho mỗi {C:attention}Lá Vang Vọng", + "được chơi và ghi điểm", + }, + }, + j_cry_speculo = { + name = "Kính Tượng", + text = { + "Tạo ra một bản sao {C:dark_edition}Âm Bản{}", + "của một lá {C:attention}Joker{} ngẫu nhiên", + "ở cuối {C:attention}shop", + "{C:inactive,s:0.8}Không sao chép Kính Tượng{}", + }, + }, + j_cry_spy = { + name = "Gián Điệp", + text = { + "{X:mult,C:white} X#2# {} Nhân, {C:dark_edition}+1{} ô {C:attention}Joker{}", + "{C:inactive}#1# HẮN là gián điệp!", + }, + }, + j_cry_stardust = { + name = "Bụi Sao", + text = { + "Các lá {C:dark_edition}Đa Sắc{}", + "cho {X:mult,C:white}X#1#{} Nhân", + }, + }, + j_cry_stella_mortis = { + name = "Tinh Thệ", + text = { + "Joker này phá hủy một lá", + "{C:planet}Hành tinh{} ngẫu nhiên và", + "thêm {X:dark_edition,C:white} ^#1# {} Nhân ở cuối {C:attention}shop{}", + "{C:inactive}(Hiện tại là {X:dark_edition,C:white} ^#2# {C:inactive} Nhân)", + }, + }, + j_cry_stronghold = { + name = "Chuẩn Thành Trì", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "với tay bài cuối cùng", + "là {E:1,C:attention} Tường Thành", + }, + }, + j_cry_subtle = { + name = "Joker Tinh Tế", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chip, {C:mult}+#1#{} Nhân,", + "{X:chips,C:white}X#2#{} Chip, {X:mult,C:white}X#2#{} Nhân", + "Nhận {C:money}$#3#{}", + "ở cuối ván", + }, + }, + j_cry_sus = { + name = "SÚ", + text = { + "Ở cuối ván, tạo ra", + "một {C:attention}bản sao{} của một", + "lá bất kì {C:attention}giữ trên tay{},", + "phá hủy toàn bộ lá bài khác", + "{C:attention,s:0.8}Già{s:0.8} {C:hearts,s:0.8}Cơ{s:0.8} được ưu tiên", + }, + }, + j_cry_swarm = { + name = "Chuẩn Bầy", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "với tay bài cuối cùng", + "là {E:1,C:attention}Thùng Ngũ Quý", + }, + }, + j_cry_sync_catalyst = { + name = "Xúc Tác Đồng Bộ", + text = { + "Cân bằng {C:chips}Chip{} và {C:mult}Nhân{}", + "{C:inactive,s:0.8}Này! Tôi đã từng nhìn thấy nó lần nào đó rồi!", + }, + }, + j_cry_tax_fraud = { + name = "Gian Lận Thuế", + text = { + "Nhận {C:attention}$#1#{} mỗi {C:attention}Joker Cho Thuê", + "ở cuối ván", + }, + }, + j_cry_tenebris = { + name = "Ám Hắc", + text = { + "{C:dark_edition}+#1#{} ô {C:attention}Joker{}", + "Nhận {C:money}$#2#{} ở cuối ván", + }, + }, + j_cry_translucent = { + name = "Joker Trong Suốt", + text = { + "Bán lá này để tạo ra một", + "bản sao {C:attention}Chuối Tiêu Ngắn Hạn{}", + "của một {C:attention}Joker{} ngẫu nhiên", + "{s:0.8,C:inactive}(Bản sao bỏ qua tương thích Ngắn Hạn)", + }, + }, + j_cry_treacherous = { + name = "Joker Phản Bội", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_trick_or_treat = { + name = "Cho Kẹo Hay Bị Ghẹo", + text = { + "Khi {C:attention}bán{}:", + "Xác suất {C:green}#1# trên #2#{} để tạo ra {C:attention}2{} viên {C:cry_candy}Kẹo", + "Nếu trật, tạo ra một Joker {X:cry_cursed,C:white}Nguyền Rủa{}", + "{C:inactive}(Có thể tràn ô Joker)", + }, + }, + j_cry_tricksy = { + name = "Joker Tinh Nghịch", + text = { + "{C:chips}+#1#{} Chip nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Nhịp Điệu Ba", + text = { + "{X:mult,C:white} X#1# {} Nhân khi tay bài ghi điểm", + "chứa {C:attention}đúng{} ba lá {C:attention}3", + }, + }, + j_cry_tropical_smoothie = { + name = "Sinh Tố Nhiệt Đới", + text = { + "Bán lá này", + "để {C:attention}nhân{} giá trị", + "của các joker đang sở hữu lên {C:attention}X#1#{}", + }, + }, + j_cry_unity = { + name = "Chuẩn Đoàn Kết", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận đấu", + "với tay bài cuối cùng", + "là {E:1,C:attention}Thùng Cù lũ", + }, + }, + j_cry_universe = { + name = "Vũ Trụ", + text = { + "Các lá bài {C:dark_edition}Thiên Tú{}", + "cho {X:dark_edition,C:white}^#1#{} Nhân", + }, + }, + j_cry_universum = { + name = "Hoàn Vũ", + text = { + "Các {C:attention}tay Poker{} nhận", + "{X:red,C:white} X#1# {} Nhân và {X:blue,C:white} X#1# {} Chip", + "khi lên cấp", + }, + }, + j_cry_unjust_dagger = { + name = "Dao Găm Bất Công", + text = { + "Khi {C:attention}Blind{} được chọn,", + "phá hủy Joker liền trái", + "và thêm {C:attention}1/5{} của", + "giá bán của nó vào {X:mult,C:white} XNhân {}", + "{C:inactive}(Hiện tại {X:mult,C:white} X#1# {C:inactive} Nhân)", + }, + }, + j_cry_verisimile = { + name = "Không xác thực", + text = { + "Khi có bất kỳ xác suất nào", + "kích hoạt {C:green}thành công{},", + "Joker này nhận {X:red,C:white}XNhân{}", + "bằng với {C:attention}tỷ lệ{} được liệt kê của nó", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#1# {C:inactive} Nhân)", + }, + }, + j_cry_virgo = { + name = "Xử Nữ", + text = { + "Joker này tăng {C:money}$#1#{} {C:attention}giá bán{}", + "nếu {C:attention}tay poker{} chứa {C:attention}#2#{}", + "Bán lá này để tạo ra một", + "{C:attention}Joker Vui Nhộn{} {C:dark_edition}Đa Sắc{} cho", + "mỗi {C:money}$4{} {C:attention}giá bán{} {C:inactive}(Tối thiểu 1){}", + }, + }, + j_cry_wacky = { + name = "Joker Lập Dị", + text = { + "{C:red}+#1#{} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "Mọi Joker đều cho", + "{X:mult,C:white} X#1# {} Nhân", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "Mọi Joker đều cho", + "{C:money}$#1#{} khi kích hoạt", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "Joker này thêm", + "{C:mult}+#2#{} Nhân khi lá", + "{C:attention}Át{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, hoặc {C:attention}8{}", + "ghi điểm", + "{C:inactive}(Hiện tại là {C:mult}+#1#{C:inactive} Nhân)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Tái kích lá {C:attention}2{}", --wee gaming + "thêm {C:attention:}#1#{} lần", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Bánh Xe Hi Vọng", + text = { + "Joker này thêm", + "{X:mult,C:white} X#1# {} Nhân khi xoay", + "{C:attention}Bánh Xe Số Phận{} bị thục lắc", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_whip = { + name = "WHIP", + text = { + "Joker này thêm {X:mult,C:white} X#1# {} Nhân", + "nếu {C:attention}tay bài đã chơi{} chứa một", + "lá {C:attention}2{} và lá {C:attention}7{} khác chất", + "{C:inactive}(Hiện tại là {X:mult,C:white} X#2# {C:inactive} Nhân)", + }, + }, + j_cry_wrapped = { + name = "Kẹo Gói", + text = { + "Tạo ra một {C:attention}Joker Thực Phẩm{} ngẫu nhiên", + "trong {C:attention}#1#{} ván", + "{C:red,E:2}tự hủy{}", + }, + }, + j_cry_wtf = { + name = "CHUẨN ĐỆCH!?", + text = { + "{X:mult,C:white} X#1# {} Nhân nếu", + "tay bài đã chơi", + "chứa {C:attention}#2#", + }, + unlock = { + "Thắng một trận", + "với tay bài cuối cùng", + "là {E:1,C:attention}Mớ Đệch", + }, + }, + j_cry_zooble = { + name = "Zooble", + text = { + "nếu tay bài đã chơi", + "{C:attention}không{} chứa {C:attention}Sảnh{},", + "Joker này thêm {C:mult}+#2#{} Nhân cho mỗi", + "{C:attention}bậc riêng biệt{} trong tay bài tính điểm", + "{C:inactive}(Hiện tại là {C:mult}+#1#{C:inactive} Nhân)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Risti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Nâng level", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "và {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Pata", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Năng level", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "và {C:attention}#3#{}", + }, + }, + c_cry_Kaikki = { + name = "Kaikki", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Nâng level", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "và {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Sao Neutron", + text = { + "Nâng level một tay bài", + "ngẫu nhiên lên", + "{C:attention}1{} cấp cho mỗi lá", + "{C:attention}Sao Neutron{} được dùng", + "trong trận này", + "{C:inactive}(Hiện tại là{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "Xác suất {C:green}#1# trên #2#{}", + "để nâng mọi", + "{C:legendary,E:1}tay bài poker{}", + "lên {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Hertta", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Nâng level", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "và {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Ruutu", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Nâng level", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "và {C:attention}#3#{}", + }, + }, + c_cry_marsmoons = { + name = "Phobos & Deimos", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Nâng level", + "{C:attention}#2#", + "{C:mult}+#3#{} Nhân và", + "{C:chips}+#4#{} chip", + }, + }, + c_cry_void = { + name = "Hư Vô", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Nâng level", + "{C:attention}#2#", + "{C:mult}+#3#{} Nhân và", + "{C:chips}+#4#{} chip", + }, + }, + c_cry_asteroidbelt = { + name = "Vành Đai Tiểu Hành Tinh", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Nâng level", + "{C:attention}#2#", + "{C:mult}+#3#{} Nhân và", + "{C:chips}+#4#{} chip", + }, + }, + c_cry_universe = { + name = "Toàn Bộ Cái Vũ Trụ Chết Tiệt", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Nâng level", + "{C:attention}#2#", + "{C:mult}+#3#{} Nhân và", + "{C:chips}+#4#{} chip", + }, + }, + c_cry_sunplanet = { + name = "Mặt Trời", + text = { + "{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){}", + "Nâng sức mạnh cho", + "các tay bài {C:attention}Thăng Thiên{} lên {X:gold,C:white}0.05{}", + "{C:inactive}(Hiện tại là {X:gold,C:white}X(#2#^asc){C:inactive})", + }, + }, + }, + Sleeve = { + sleeve_cry_bountiful_sleeve = { + name = "Bọc Phong Phú", + text = { + "Sau khi {C:blue}Chơi{} hoặc {C:red}Bỏ Bài{},", + "luôn bốc {C:attention}5{} lá", + }, + }, + sleeve_cry_ccd_sleeve = { + name = "Bọc CCD", + text = { + "Mỗi lá bài đều là", + "một lá tiêu thụ", + "{C:attention}ngẫu nhiên{}", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Bọc Băng Chuyền", + text = { + "{C:attention}Không thể{} di chuyển các lá Joker", + "Vào mỗi đầu ván,", + "{C:attention}nhân đôi{} Joker ở tít bên phải", + "và {C:attention}phá hủy{} Joker ở tít bên trái", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Bọc Chí Mạng", + text = { + "Sau mỗi tay bài đã chơi,", + "Xác suất {C:green}#1# trên 4{} cho {X:dark_edition,C:white} ^2 {} Nhân", + "Xác suất {C:green}#1# trên 8{} cho {X:dark_edition,C:white} ^0.5 {} Nhân", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Bọc Mã Hóa", + text = { + "Bắt đầu với {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "và {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Chỉ có {C:cry_code}Lá Code{} xuất hiện trong shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Bọc Cân Bằng", + text = { + "Mọi lá bài đều có", + "{C:attention}cùng xác suất{}", + "xuất hiện trong shop,", + "bắt đầu với", + "{C:attention,T:v_overstock_plus}Siêu Quá Trữ", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Bọc Vộ Cực", + text = { + "Bạn có thể chọn {C:attention}bất kỳ", + "số lượng lá bài nào", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Bọc Lỗi In", + text = { + "{C:attention}Ngẫu nhiên hoá{} giá trị", + "của mọi lá bài", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Bọc Quy Đổi", + text = { + "Khi quy đổi một {C:attention}Phiếu{}, nhận", + "ngay {C:attention}các cấp bổ sung{} của nó", + }, + }, + sleeve_cry_spooky_sleeve = { + name = "Bọc Ma Quái", + text = { + "Bắt đầu với {C:attention,T:j_cry_chocolate_dice}Xúc Sắc Sôcôla {C:eternal}Vĩnh Hằng", + "Sau mỗi {C:attention}Ante{}, tạo ra", + "viên {C:cry_candy}Kẹo{} hoặc Joker {X:cry_cursed,C:white}Nguyền Rủa", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Bọc Lỗ Giun", + text = { + "Bắt đầu với một {C:attention}Joker {C:cry_exotic}Ngoại Lai", + "Tăng xác suất xuất hiện Joker", + "{C:dark_edition}Âm bản lên {C:attention}20 lần", + "{C:attention}-2{} ô Joker", + }, + }, + sleeve_cry_legendary_sleeve = { + name = "Bọc Huyền Thoại", + text = { + "Bắt đầu với một Joker {C:legendary}Huyền Thoại", + "Xác suất {C:green}1 trên 5{} tạo ra thêm một lá nữa", + "khi Boss Blind bị đánh bại {C:inactive}(Phải có ô trống)", + }, + }, + }, + Spectral = { + c_cry_adversary = { + name = "Kẻ Thù", + text = { + "{C:red}Mọi{} {C:attention}Joker{} đang sở hữu trở thành {C:dark_edition}Âm bản{},", + "{C:red}Mọi{} {C:attention}Joker{} trong shop sẽ tốn", + "{C:red}gấp hai lần{} cho tới cuối trận", + }, + }, + c_cry_analog = { + name = "Tương Tự", + text = { + "Tạo ra {C:attention}#1#{} bản sao của", + "một {C:attention}Joker{} bất kỳ, phá hủy", + "mọi Joker khác, {C:attention}+#2#{} Ante", + }, + }, + c_cry_chambered = { + name = "Tạo Khoang", + text = { + "Tạo ra {C:attention}#1#{} bản sao {C:dark_edition}Âm bản{}", + "cho một lá tiêu thụ", + "{C:attention}ngẫu nhiên{} thuộc", + "sở hữu của bạn", + "{C:inactive,s:0.8}Không sao chép Tạo Khoang{}", + }, + }, + c_cry_conduit = { + name = "Ống Dẫn", + text = { + "Tráo đổi {C:attention}ấn bản{} của", + "{C:attention}2{} lá bài hoặc {C:attention}Joker{} được chọn", + }, + }, + c_cry_gateway = { + name = "Cánh Cổng", + text = { + "Tạo ra một {C:attention}Joker{}", + "{C:cry_exotic,E:1}Ngoại Lai{} ngẫu nhiên,", + "phá huỷ mọi Joker khác", + }, + }, + c_cry_hammerspace = { + name = "Khoang Búa", + text = { + "Thêm các {C:attention}hiệu ứng tiêu thụ{}", + "ngẫu nhiên như thể chúng là {C:dark_edition}Cường Hóa{}", + "lên các lá bài giữ trên tay", + }, + }, + c_cry_lock = { + name = "Khóa", + text = { + "Loại bỏ {C:red}mọi{} nhãn", + "khỏi {C:red}mọi{} Joker,", + "sao đó thêm {C:purple,E:1}Vĩnh Hằng{}", + "cho một {C:attention}Joker{} ngẫu nhiên", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Tạo ra một lá bài", + "theo {C:cry_code}mong muốn", + "{C:inactive,s:0.8}(#1#ngoại trừ Joker Ngoại Lai)", + }, + }, + c_cry_replica = { + name = "Bản Sao", + text = { + "Biến đổi mọi lá", + "giữ trên tay thành", + "một lá {C:attention}ngẫu nhiên{}", + "giữ trên tay", + }, + }, + c_cry_ritual = { + name = "Nghi Thức", + text = { + "Áp dụng {C:dark_edition}Âm bản{}, {C:dark_edition}Khảm Mảnh{},", + "hoặc {C:dark_edition}Thiên Tú{} lên {C:attention}#1#{}", + "lá đã chọn trong tay", + }, + }, + c_cry_source = { + name = "Nguồn", + text = { + "Thêm một {C:cry_code}Con Dấu Lục{}", + "vào {C:attention}#1#{} lá đã chọn", + "trong tay", + }, + }, + c_cry_summoning = { + name = "Triệu Hồi", + text = { + "Tạo ra một {C:joker}Joker{}", + "{C:cry_epic}Sử Thi{}, phá hủy", + "một {C:joker}Joker{} ngẫu nhiên", + }, + }, + c_cry_trade = { + name = "Lái Buôn", + text = { + "{C:attention}Mất{} một Phiếu ngẫu nhiên,", + "nhận {C:attention}2{} Phiếu ngẫu nhiên", + }, + }, + c_cry_typhoon = { + name = "Cơn bão", + text = { + "Thêm một {C:cry_azure}Con Dấu Xanh Thẳm{}", + "cho {C:attention}#1#{} lá đã chọn", + "trên tay", + }, + }, + c_cry_vacuum = { + name = "Chân Không", + text = { + "Loại bỏ {C:red}mọi {C:green}Sửa Đổi{}", + "khỏi {C:red}mọi{} lá giữ trên tay,", + "Nhận {C:money}$#1#{} mỗi {C:green}Sửa Đổi{} được loại bỏ", + "{C:inactive,s:0.7}(VD: Cường hóa, Dấu ấn, Ấn bản)", + }, + }, + c_cry_white_hole = { + name = "Lỗ Trắng", + text = { + "{C:attention}Loại bỏ{} mọi level khỏi các tay poker,", + "nâng level tay poker {C:legendary,E:1}chơi nhiều nhất{}", + "lên {C:attention}3{} lần cho mỗi level được loại bỏ", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Cược Hồng", + colour = "Hồng", --this is used for auto-generated sticker localization + text = { + "Điểm yêu cầu tăng", + "nhanh hơn sau mỗi {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Cược Nâu", + colour = "Nâu", + text = { + "Mọi {C:attention}nhãn{} đều", + "tương thích với nhau", + }, + }, + stake_cry_yellow = { + name = "Cược Vàng Thường", + colour = "Vàng Thường", + text = { + "{C:attention}Nhãn{} có thể xuất hiện trên", + "tất cả vật phẩm mua được", + }, + }, + stake_cry_jade = { + name = "Cược Cẩm Thạch", + colour = "Cẩm Thạch", + text = { + "Lá bài có thể bị {C:attention}lật sấp{}", + }, + }, + stake_cry_cyan = { + name = "Cược Lục Lam", + colour = "Lục Lam", + text = { + "Các lá Joker {C:green}Ít Phổ Biến{} và {C:red}Hiếm{}", + "đều ít xuất hiện hơn trước", + }, + }, + stake_cry_gray = { + name = "Cược Xám", + colour = "Xám", + text = { + "Mỗi lần Gieo lại sẽ tăng giá gieo lên {C:attention}$2{}", + }, + }, + stake_cry_crimson = { + name = "Cược Đỏ Thẩm", + colour = "Đỏ Thẫm", + text = { + "Phiếu chỉ được làm mới ở Ante {C:attention}chẵn{}", + }, + }, + stake_cry_diamond = { + name = "Cược Kim Cương", + colour = "Kim Cương", + text = { + "Cần đánh qua Ante {C:attention}10{} để thắng", + }, + }, + stake_cry_amber = { + name = "Cược Hổ Phách", + colour = "Hổ Phách", + text = { + "{C:attention}-1{} ô Gói Bài", + }, + }, + stake_cry_bronze = { + name = "Cược Đồng", + colour = "Đồng", + text = { + "Phiếu đắt hơn {C:attention}50%{} so với trước", + }, + }, + stake_cry_quartz = { + name = "Cược Thạch Anh", + colour = "Thạch Anh", + text = { + "Joker có thể {C:attention}Bị Ghim{}", + "{s:0.8,C:inactive}(Giữ nguyên vị trí ở tít bên trái){}", + }, + }, + stake_cry_ruby = { + name = "Cược Hồng Ngọc", + colour = "Hồng Ngọc", + text = { + "{C:attention}Big{} Blind có thể", + "trở thành {C:attention}Boss{} Blind", + }, + }, + stake_cry_glass = { + name = "Cược Thủy Tinh", + colour = "Thủy Tinh", + text = { + "Các lá bài có thể {C:attention}vỡ{} khi ghi điểm", + }, + }, + stake_cry_sapphire = { + name = "Cược Lam Ngọc", + colour = "Lam Ngọc", + text = { + "Mất {C:attention}25%{} số tiền hiện có", + "vào cuối mỗi ante", + "{s:0.8,C:inactive}(Tối đa $10){}", + }, + }, + stake_cry_emerald = { + name = "Cược Ngọc Lục Bảo", + colour = "Ngọc Lục Bảo", + text = { + "Lá bài, gói bài, và phiếu", + "có thể bị {C:attention}lật sấp{}", + "{s:0.8,C:inactive}(Không thể nhìn cho đến khi mua){}", + }, + }, + stake_cry_platinum = { + name = "Cược Bạch Kim", + colour = "Bạch Kim", + text = { + "Small Blind {C:attention}bị loại bỏ{}", + }, + }, + stake_cry_twilight = { + name = "Cược Chạng Vạng", + colour = "Chạng Vạng", + text = { + "Mọi lá bài có thể có {C:attention}Chuối Tiêu{}", + "{s:0.8,C:inactive}(Xác suất 1 trên 10 bị phá hủy mỗi ván){}", + }, + }, + stake_cry_verdant = { + name = "Cược Xanh Ngát", + colour = "Xanh Ngát", + text = { + "Điểm yêu cầu tăng", + "nhanh hơn sau mỗi {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Cược Than Hồng", + colour = "Than Hồng", + text = { + "Mọi vật phẩm đều vô giá trị khi bán", + }, + }, + stake_cry_dawn = { + name = "Cược Bình Minh", + colour = "Bình Minh", + text = { + "Các lá Tarot và Siêu Linh nhắm mục tiêu", + "ít hơn {C:attention}1{} lá bài", + "{s:0.8,C:inactive}(Tối thiểu là 1){}", + }, + }, + stake_cry_horizon = { + name = "Cược Hoàng Hôn", + colour = "Hoàng Hôn", + text = { + "Khi blind được chọn, thêm một", + "{C:attention}lá bài ngẫu nhiên{} vào bộ bài", + }, + }, + stake_cry_blossom = { + name = "Cược Hoa", + colour = "Hoa", + text = { + "Boss Blind {C:attention}Cuối{} có thể xuất hiện", + "ở {C:attention}bất kì{} Ante nào", + }, + }, + stake_cry_azure = { + name = "Cược Xanh Thẳm", + colour = "Xanh Thẳm", + text = { + "Mọi Joker bị giảm giá trị", + "đi {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Cược Ưu Việt", + colour = "Ưu Việt", + text = { + "{C:attention}-1{} ô lá bài trong shop", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Nhãn Thiên Tú", + text = { + "Joker bản chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Thiên Tú", + }, + }, + tag_cry_banana = { + name = "Nhãn Chuối Tiêu", + text = { + "Tạo ra {C:attention}#1#", + "{C:inactive}(Phải có ô trống){}", + }, + }, + tag_cry_bettertop_up = { + name = "Nhãn Tiếp Tế Tốt", + text = { + "Tạo ra tối đa {C:attention}#1#", + "Joker {C:green}Ít Phổ Biến{}", + "{C:inactive}(Phải có ô trống){}", + }, + }, + tag_cry_better_voucher = { + name = "Nhãn Phiếu Hoàng Kim", + text = { + "Thêm một Phiếu cấp {C:attention}#1#{}", + "vào shop tiếp theo", + }, + }, + tag_cry_blur = { + name = "Nhãn Mờ Ảo", + text = { + "Joker bản chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Mờ Ảo", + }, + }, + tag_cry_booster = { + name = "Nhãn Gói Bài", + text = { + "{C:cry_code}Gói Bài{} kế tiếp có", + "số lá bài được {C:attention}nhân đôi{} và", + "số lựa chọn cũng được {C:attention}nhân đôi{}", + }, + }, + tag_cry_bundle = { + name = "Nhãn Gói Sưu Tập", + text = { + "Tạo ra một {C:attention}Nhãn Tiêu Chuẩn{}, {C:tarot}Nhãn Bùa Chú{},", + "{C:attention}Nhãn Hề{}, và {C:planet}Nhãn Sao Băng", + }, + }, + tag_cry_cat = { + name = "Nhãn Mèo", + text = { "Meo.", "{C:inactive}Cấp độ {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Nhãn Bảng Điều", + text = { + "Nhận một", + "{C:cry_code}Gói Chương Trình{} miễn phí", + }, + }, + tag_cry_double_m = { + name = "Nhãn M Kép", + text = { + "Shop có một", + "{C:legendary}Joker M {C:dark_edition}Vui Nhộn{} ", + }, + }, + tag_cry_empowered = { + name = "Nhãn Siêu Cường", + text = { + "Nhận một {C:spectral}Gói Siêu Linh{} miễn phí", + "chứa {C:legendary,E:1}Linh Hồn{} và {C:cry_exotic,E:1}Cánh Cổng{}", + }, + }, + tag_cry_epic = { + name = "Nhãn Sử Thi", + text = { + "Shop có một {C:cry_epic}Joker", + "{C:cry_epic}Sử Thi{} giảm nửa giá", + }, + }, + tag_cry_gambler = { + name = "Nhãn Con Bạc", + text = { + "Xác suất {C:green}#1# trên #2#{} để tạo", + "ra {C:cry_exotic,E:1}Nhãn Siêu Cường", + }, + }, + tag_cry_glass = { + name = "Nhãn Mỏng Manh", + text = { + "Joker tiêu chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Mỏng Manh", + }, + }, + tag_cry_glitched = { + name = "Nhãn Nhiễu Loạn", + text = { + "Joker tiêu chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Nhiễu Loạn", + }, + }, + tag_cry_gold = { + name = "Nhãn Hoàng Kim", + text = { + "Joker tiêu chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Hoàng Kim", + }, + }, + tag_cry_gourmand = { + name = "Nhãn Phàm Ăn", + text = { + "Shop có một {C:attention}Joker", + "{C:attention}Thực Phẩm{} miễn phí", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Bố thí một {C:cry_ascendant}Gói Meme", + "ko chịu thì pay acc", + }, + }, + tag_cry_m = { + name = "Nhãn Vui Nhộn", + text = { + "Joker tiêu chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Vui Nhộn", + }, + }, + tag_cry_memory = { + name = "Nhãn Ghi Nhớ", + text = { + "Tạo ra {C:attention}#1#{} bản sao của", + "{C:attention}Nhãn{} gần nhất đã sử dụng", + "trong trận này", + "{s:0.8,C:inactive}Ngoại trừ các nhãn sao chép", + "{s:0.8,C:inactive}Hiện tại: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Nhãn Khảm Mảnh", + text = { + "Joker tiêu chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Khảm Mảnh", + }, + }, + tag_cry_oversat = { + name = "Nhãn Siêu Bão Hoà", + text = { + "Joker tiêu chuẩn tiếp theo", + "trong shop thì miễn phí", + "và trở thành {C:dark_edition}Siêu Bão Hoà", + }, + }, + tag_cry_quadruple = { + name = "Nhãn Gấp Bốn", + text = { + "Tạo ra {C:attention}#1#{} bản sao của", + "{C:attention}Nhãn{} đã chọn tiếp theo", + "{s:0.8,C:inactive}Ngoại trừ các nhãn sao chép", + }, + }, + tag_cry_quintuple = { + name = "Nhãn Gấp Năm", + text = { + "Tạo ra {C:attention}#1#{} bản sao của", + "{C:attention}Nhãn{} đã chọn tiếp theo", + "{s:0.8,C:inactive}Ngoại trừ các nhãn sao chép", + }, + }, + tag_cry_rework = { + name = "Nhãn Chế Mới", + text = { + "Shop có một", + "{C:cry_code}#2# {C:dark_edition}#1#", + }, + }, + tag_cry_schematic = { + name = "Nhãn Sơ Đồ", + text = { + "Shop có một Joker", + "{C:attention}Động Não", + }, + }, + tag_cry_scope = { + name = "Nhãn Ống Ngắm", + text = { + "{C:attention}+#1# {C:blue}tay bài{} và", + "{C:red}lượt bỏ bài{} cho ván tiếp theo", + }, + }, + tag_cry_triple = { + name = "Nhãn Gấp Ba", + text = { + "Tạo ra {C:attention}#1#{} bản sao của", + "{C:attention}Nhãn{} đã chọn tiếp theo", + "{s:0.8,C:inactive}Ngoại trừ các nhãn sao chép", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "Tự Động Hóa", + text = { + "Tạo ra tối đa {C:attention}#1#", + "lá {C:cry_code}Code{} ngẫu nhiên", + "{C:inactive}(Phải có ô trống)", + }, + }, + c_cry_eclipse = { + name = "Nhật Thực", + text = { + "Cường hoá {C:attention}#1#{} lá bài được chọn", + "thành một {C:attention}Lá Vang Vọng", + }, + }, + c_cry_meld = { + name = "Pha Trộn", + text = { + "Chọn một lá {C:attention}Joker{} hoặc", + "{C:attention}Lá bài thường{} để", + "trở thành {C:dark_edition}Hai Mặt", + }, + }, + c_cry_theblessing = { + name = "Phước Lành", + text = { + "Tạo ra {C:attention}1 lá{}", + "{C:attention}tiêu thụ{} ngẫu nhiên", + "{C:inactive}(Phải có ô trống){}", + }, + }, + c_cry_seraph = { + name = "Thiên Thần Seraph", + text = { + "Cường hoá {C:attention}#1#{} lá được chọn", + "thành {C:attention}Lá Dạ Quang", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Khắc Họa Tinh Vân", + text = { + "Đặt Ante về {C:attention}#1#{}", + }, + unlock = { + "Đạt Ante {C:attention}36", + }, + }, + v_cry_blankcanvas = { + name = "Tấm Vải Trắng", + text = { + "{C:attention}+#1#{} lá giữ trong tay", + }, + unlock = { + "Giảm {C:attention}số lá giữ trong tay{}", + "về {C:attention}0", + }, + }, + v_cry_clone_machine = { + name = "Máy Nhân Bản", + text = { + "Nhãn Kép trở thành", + "{C:attention}Nhãn Gấp Năm{} và", + "xuất hiện nhiều hơn {C:attention}4{} lần", + }, + }, + v_cry_command_prompt = { + name = "Cửa Sổ Lệnh", + text = { + "Lá {C:cry_code}Code{}", + "có thể xuất hiện", + "trong {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Sao Chép", + text = { + "Nhãn Kép trở thành", + "{C:attention}Nhãn Gấp Ba{} và", + "xuất hiện nhiều hơn {C:attention}2{} lần", + }, + }, + v_cry_curate = { + name = "Giám Tuyển", + text = { + "Mọi lá bài", + "đều xuất hiện với", + "một {C:dark_edition}Ấn Bản{}", + }, + unlock = { + "Khám phá", + "toàn bộ {C:attention}Ấn Bản", + }, + }, + v_cry_dexterity = { + name = "Khéo Léo", + text = { + "Vĩnh viễn thêm", + "{C:blue}+#1#{} tay bài", + "mỗi ván", + }, + unlock = { + "Chơi tổng cộng {C:attention}5000{}", + "{C:attention}Lá Bài Thường{}", + }, + }, + v_cry_double_down = { + name = "Cược Gấp Đôi", + text = { + "Sau mỗi ván,", + "{X:dark_edition,C:white} X1.5 {} cho mọi giá trị", + "ở mặt sau của các lá bài", + "{C:dark_edition}Hai Mặt", + }, + }, + v_cry_double_slit = { + name = "Đôi Khe", + text = { + "{C:attention}Pha Trộn{} có thể xuất hiện", + "trong shop hoặc", + "các {C:tarot}Gói Thần Bí", + }, + }, + v_cry_double_vision = { + name = "Song Thị", + text = { + "Các lá {C:dark_edition}Hai Mặt{} xuất hiện", + "thường xuyên hơn {C:attention}4{} lần", + }, + }, + v_cry_fabric = { + name = "Kết Cấu Vạn Năng", + text = { + "{C:dark_edition}+#1#{} ô Joker", + }, + unlock = { + "Quy đổi {C:dark_edition}Phản Vật Chất{}", + "{C:attention}10{} lần", + }, + }, + v_cry_massproduct = { + name = "Sản Xuất Đại Trà", + text = { + "Mọi lá bài và gói bài", + "trong shop tốn {C:attention}$1{}", + }, + unlock = { + "Quy đổi {C:attention}25", + "{C:attention}Phiếu", + "trong một trận", + }, + }, + v_cry_moneybean = { + name = "Cây Đậu Tiền", + text = { + "Tăng giới hạn lãi", + "thu được mỗi ván", + "lên {C:money}$#1#{}", + }, + unlock = { + "Đạt {C:attention}tiền lãi", + "nhận được ở mức", + "tối đa cho {C:attention}cả trận", + }, + }, + v_cry_overstock_multi = { + name = "Tồn Đa Kho", + text = { + "{C:attention}+#1#{} ô lá bài,", + "{C:attention}+#1#{} ô gói bài,", + "và {C:attention}+#1#{} ô phiếu,", + "có sẵn trong shop", + }, + unlock = { + "Chi tiêu {C:attention}1000$", + "trong shop", + "trong một trận", + }, + }, + v_cry_pacclimator = { + name = "Thích Nghi Hành Tinh", + text = { + "Lá {C:planet}Hành Tinh{} xuất hiện", + "thường xuyên hơn {C:attention}#1# lần", + "trong shop", + "Mọi lá {C:planet}Hành Tinh{} sau này", + "đều {C:green}miễn phí{}", + }, + unlock = { + "Mua tổng cộng {C:attention}100{}", + "lá {C:planet}Hành Tinh", + "trong shop", + }, + }, + v_cry_pairamount_plus = { + name = "Siêu Đôi Chúa", + text = { + "{C:attention}Tái kích{} mọi Joker M", + "một lần cho mỗi Đôi", + "{C:attention}có{} trong tay bài đã chơi", + }, + }, + v_cry_pairing = { + name = "Theo Đôi", + text = { + "{C:attention}Tái kích{} mọi Joker M{}", + "nếu tay bài đã chơi là {C:attention}Đôi", + }, + }, + v_cry_quantum_computing = { + name = "Tính Toán Lượng Tử", + text = { + "Lá {C:cry_code}Code{} có thể xuất hiện", + "ở dạng {C:dark_edition}Âm Bản{}", + }, + }, + v_cry_repair_man = { + name = 'Người "Đóng Đôi"', + text = { + "{C:attention}Tái kích{} mọi M Joker", + "nếu tay bài đã chơi chứa {C:attention}Đôi", + }, + }, + v_cry_rerollexchange = { + name = "Gieo Trao Đổi", + text = { + "Mọi lượt gieo lại", + "tốn {C:attention}$2{}", + }, + unlock = { + "{C:attention}Gieo lại{} shop", + "tổng cộng", + "{C:attention}250 lần{}", + "trong một trận đấu", + }, + }, + v_cry_satellite_uplink = { + name = "Liên Kết Vệ Tinh", + text = { + "Lá {C:cry_code}Code{} có thể", + "xuất hiện trong các", + "{C:attention}Gói Thiên Thể{}", + }, + }, + v_cry_scope = { + name = "Phạm Vi Thiên Hà", + text = { + "Tạo ra lá {C:planet}Hành Tinh", + "cho {C:attention}tay poker{} đã chơi", + "{C:inactive}(Phải có ô trống){}", + }, + unlock = { + "Sử dụng tổng cộng {C:attention}50{}", + "lá {C:planet}Hành Tinh{} trong", + "các {C:attention} Gói Bài{}", + "trong một trận", + }, + }, + v_cry_tacclimator = { + name = "Thích Nghi Tarot", + text = { + "Lá {C:tarot}Tarot{} xuất hiện", + "thường xuyên hơn {C:attention}#1# lần", + "trong shop", + "Mọi lá {C:tarot}Tarot{} sau này", + "đều {C:green}miễn phí{}", + }, + unlock = { + "Mua tổng cộng {C:attention}100{}", + "lá {C:tarot}Tarot", + "trong shop", + }, + }, + v_cry_tag_printer = { + name = "Máy In Nhãn", + text = { + "Nhãn Kép trở thành", + "{C:attention}Nhãn Gấp Bốn{} và", + "xuất hiện nhiều hơn {C:attention}3{} lần", + }, + }, + v_cry_threers = { + name = "3 T", + text = { + "Vĩnh viễn thêm", + "{C:red}+#1#{} lượt bỏ bài", + "mỗi ván", + "{s:0.8,C:inactive}Tiết giảm, Tái sử dụng, Tái chế", + }, + unlock = { + "Bỏ tổng cộng {C:attention}5000{}", + "{C:attention}Lá Bài Thường{}", + }, + }, + v_cry_stickyhand = { + name = "Tay Nhớt Dính", + text = { + "{C:attention}+#1#{} số lá có thể chọn", + }, + }, + v_cry_grapplinghook = { + name = "Súng Bắn Móc", + text = { + "{C:attention}+#1#{} số lá có thể chọn", + "{C:inactive,s:0.7}Bây có thể làm được nhiều thứ hơn so với bây nghĩ đó{}", + }, + }, + v_cry_hyperspacetether = { + name = "Dây Dẫn Siêu Không", + text = { + "{C:attention}+#1#{} số lá có thể chọn", + "Mọi lá bài đã chọn đều tiếp sức mạnh", + "cho {C:attention}Tay Poker Thăng Thiên{}", + }, + }, + }, + Other = { + banana = { + name = "Chuối Tiêu", + text = { + "Xác suất {C:green}#1# trên #2#{}", + "bị phá hủy sau mỗi ván", + }, + }, + cry_absolute = { + name = "Tuyệt Đối", + text = { + "Không thể bán", + "hoặc bị phá hủy", + "{C:attention}Không thể ruồng bỏ{}", + }, + }, + cry_rigged = { + name = "Gian Lận", + text = { + "Mọi xác suất {C:cry_code}được liệt kê{}", + "đều {C:cry_code}đảm bảo trúng", + }, + }, + cry_hooked = { + name = "Đã Kết Nối", + text = { + "Khi Joker này được {C:cry_code}kích hoạt{},", + "kích hoạt {C:cry_code}#1#", + }, + }, + cry_flickering = { + name = "Nhấp Nháy", + text = { + "Bị phá hủy sau", + "{C:attention}#1#{} lần kích hoạt", + "{C:inactive}(còn lại {C:attention}#2#{C:inactive})", + }, + }, + cry_flickering_desc = { --used by choco dice + name = "Nhấp Nháy", + text = { + "Bị phá hủy sau", + "{C:attention}#1#{} lần kích hoạt", + }, + }, + cry_possessed = { + name = "Bị Ám", + text = { + "{C:attention}Vô hiệu hóa{} và {C:attention}đảo ngược{}", + "hiệu ứng, nếu có thể", + "Bị phá hủy cùng {C:attention}Con Ma", + }, + }, + --todo? add candy jokers to list + food_jokers = { + name = "Joker Thực Phẩm", + text = { + "{s:0.8}Gros Michel, Trứng, Kem, Cavendish,", + "{s:0.8}Đậu Đen, Cola Không Đường, Bỏng Ngô, Ramen,", + "{s:0.8}Khoáng Có Ga, Dưa Chua, Ớt Cay, Caramel,", + "{s:0.8}Kẹo Hoại Niệm, Thức Ăn Nhanh M, etc.", + }, + }, + ev_cry_choco0 = { + name = "", + text = { + "Chi tiết về một {C:cry_ascendant,E:1}sự kiện{} đang có", + "hiệu lực sẽ xuất hiện ở đây", + }, + }, + ev_cry_choco1 = { + name = "1: Ma Ám", + text = { + "{C:attention}Joker{} và lá bài thường có xác suất", + "{C:green}1 trên 3{} bị áp nhãn Nhấp Nháy", + "Tạo ra {C:attention}Con Ma", + "{C:inactive,s:0.7}Bạn đã bị ma ám và", + "{C:inactive,s:0.7}ý thức đang lúc buồn lúc tỉnh.", + }, + }, + ev_cry_choco2 = { + name = "2: Nhà Bị Ám", + text = { + "Không thể bỏ qua {C:attention}Blind{} lúc này", + "Chỉ một lần {C:attention}gieo lại{} mỗi shop", + "{C:attention}Phiếu{} tăng gấp đôi giá", + "{C:inactive,s:0.7}Những linh hồn ma quái đã chiếm lấy nơi này! Đừng chạm vào", + "{C:inactive,s:0.7}bất cứ thứ gì và thoát ra càng sớm càng tốt!", + }, + }, + ev_cry_choco3 = { + name = "3: Độc Dược Phù Thuỷ", + text = { + "Tạo ra 3 {C:attention}Bình Thuốc", + "Sử dụng nó vào cuối {C:attention}Small Blind{},", + "hoặc {C:attention}mọi{} suy nhược sẽ áp dụng vào {C:attention}Ante{} này", + "{C:inactive,s:0.7}Bạn đã bị một phù thủy bắt cóc!", + "{C:inactive,s:0.7}Bà ta đưa cho bạn ba lọ thuốc và theo dõi bạn sát sao.", + "{C:inactive,s:0.7}Hãy chọn một, nếu không bà ta sẽ quyết định thay bạn.", + }, + }, + ev_cry_choco4 = { + name = "4: Nguyệt Vực", + text = { + "Lá bài đã chơi có xác suất {C:green}1 trên 4{}", + "để biến thành lá mặt {C:club}Tép{} ngẫu nhiên", + "Chia hệ số {C:attention}Nhân{} cho số lượng lá mặt đã chơi", + "{C:inactive,s:0.7}Ngay cả một người có trái tim trong sáng", + "{C:inactive,s:0.7}và cầu nguyện vào ban đêm...", + }, + }, + ev_cry_choco5 = { + name = "5: Bú Máu", + text = { + "Loại bỏ {C:attention}Cường Hoá{} khỏi mọi lá bài đã chơi", + "Xác suất {C:green}1 trên 3{} để phá hủy", + "các lá {C:heart}Cơ{} và {C:diamond}Rô{}", + "{C:inactive,s:0.7}Hãy cảnh giác lúc nửa đêm, vì", + "{C:inactive,s:0.7,E:1}chúng đang ở trong bóng tối{C:inactive,s:0.7} tìm cách thoả cơn khát...", + }, + }, + ev_cry_choco6 = { + name = "6: Hãy Chọn Một", + text = { + "{C:attention}Ở cuối ván{}, mở một", + "Gói {C:attention}Bài{} ngẫu nhiên", + "{C:inactive,s:0.7}Khi bạn đi dạo trên phố, bạn phát hiện ra một", + "{C:inactive,s:0.7}hộp đầy Gói Bài khác nhau. Tốt nhất là nên lấy một gói!", + }, + }, + ev_cry_choco7 = { + name = "7: Không Khí Lễ Hội", + text = { + "Tạo ra 3 {C:attention}Cho Kẹo Hay Bị Ghẹo{} và 1 {C:attention}Giỏ Kẹo", + "Shop có một {C:attention}Cho Kẹo Hay Bị Ghẹo{} sau mỗi ván", + "Những viên {C:cry_candy}Kẹo{} cho {C:money}$3{} khi sở hữu", + "{C:inactive,s:0.7}Toàn bộ khu phố được trang trí cho những hoạt động ma quái,", + "{C:inactive,s:0.7}hãy đến và tận hưởng không khí lễ hội nào!", + }, + }, + ev_cry_choco8 = { + name = "8: Mưa Kẹo", + text = { + "Khi {C:attention}Blind{} bị đánh bại, nhận 1 {C:cry_candy}viên kẹo{}", + "sau mỗi tay còn lại; Nhận một lá {C:attention}Joker đồ ăn{}", + "khi mà một {C:cry_candy}Viên kẹo{} được tạo ra", + "{C:inactive,s:0.7}Kẹo rơi từ trên trời xuống kìa! Nhanh lên,", + "{C:inactive,s:0.7,E:1}hãy hốc- nhầm, lấy càng nhiều càng tốt!", + }, + }, + ev_cry_choco9 = { + name = "9: Tài Phiệt Ma Quái", + text = { + "Nhận {C:money}$20", + "Mọi {C:money}số tiền{} sắp nhận đều được {C:attention}nhân đôi", + "{C:inactive,s:0.7}Bóng ma của một người họ hàng đã mất", + "{C:inactive,s:0.7}từ lâu ghé thăm bạn lúc nửa đêm!", + "{C:inactive,s:0.7}Không nói một lời, họ đặt một túi tiền vào tay bạn,", + "{C:inactive,s:0.7}mỉm cười nồng nhiệt và vẫy tay khi dần tan biến vào không khí.", + }, + }, + ev_cry_choco10 = { + name = "10: Đồ Cổ Tôn Kính", + text = { + "Một {C:attention}Joker{} {C:legendary}Huyền thoại{} xuất hiện", + "trong ô {C:attention}Phiếu{} với giá {C:money}$50", + "Chỉ có thể mua {C:attention}cuối cùng{} trong shop", + "{C:inactive,s:0.7}Bạn đã thu hút sự chú ý của tinh linh thánh tích,", + "{C:inactive,s:0.7}nhưng sẽ không dễ dàng dập tắt nó đâu.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Cập nhật{s:0.7} mặc định bị vô hiệu hóa({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Vĩnh Hằng", + text = { + "Mọi lá bài trong gói", + "đều {C:attention}Vĩnh Hằng{}", + }, + }, + cry_perishable_booster = { + name = "Ngắn Hạn", + text = { + "Mọi lá bài trong gói", + "đều {C:attention}Ngắn Hạn{}", + }, + }, + cry_rental_booster = { + name = "Cho Thuê", + text = { + "Mọi lá bài trong gói", + "đều {C:attention}Cho Thuê{}", + }, + }, + cry_pinned_booster = { + name = "Bị Ghim", + text = { + "Mọi lá bài trong gói", + "đều {C:attention}Bị Ghim{}", + }, + }, + cry_banana_booster = { + name = "Chuối Tiêu", + text = { + "Mọi lá bài trong gói", + "đều có {C:attention}Chuối Tiêu{}", + }, + }, + cry_eternal_voucher = { + name = "Vĩnh Hằng", + text = { + "Không thể bị trao đổi", + }, + }, + cry_perishable_voucher = { + name = "Ngắn Hạn", + text = { + "Vô hiệu hoá sau", + "{C:attention}#1#{} ván", + "{C:inactive}(còn lại {C:attention}#2#{C:inactive})", + }, + }, + cry_rental_voucher = { + name = "Cho Thuê", + text = { + "Mất {C:money}$#1#{}", + "ở cuối ván", + }, + }, + cry_pinned_voucher = { + name = "Bị Ghim", + text = { + "Luôn nằm trong shop", + "cho đến khi quy đổi", + }, + }, + cry_banana_voucher = { + name = "Chuối Tiêu", + text = { + "Xác suất {C:green}#1# trên #2#{}", + "bị chuộc lại mỗi ván", + }, + }, + cry_perishable_consumeable = { + name = "Ngắn Hạn", + text = { + "Vô hiệu hoá", + "ở cuối ván", + }, + }, + cry_rental_consumeable = { + name = "Cho Thuê", + text = { + "Mất {C:money}$#1#{} ở cuối ván", + "và khi sử dụng", + }, + }, + cry_pinned_consumeable = { + name = "Bị Ghim", + text = { + "Không thể dùng lá tiêu thụ", + "không-{C:attention}Bị-ghim{} khác", + }, + }, + cry_banana_consumeable = { + name = "Chuối Tiêu", + text = { + "Xác suất {C:green}#1# trên #2#{}", + "bị vô dụng khì dùng", + }, + }, + p_cry_code_normal_1 = { + name = "Gói Chương Trình", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2#{} lá {C:cry_code}Code{}", + }, + }, + p_cry_code_normal_2 = { + name = "Gói Chương Trình", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2#{} lá {C:cry_code}Code{}", + }, + }, + p_cry_code_jumbo_1 = { + name = "Gói Chương Trình Lớn", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2#{} lá {C:cry_code}Code{}", + }, + }, + p_cry_code_mega_1 = { + name = "Gói Chương Trình Đại", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2#{} lá {C:cry_code}Code{}", + }, + }, + p_cry_empowered = { + name = "Gói Siêu Linh [Nhãn Siêu Cường]", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2#{} lá {C:spectral}Siêu Linh", + "{s:0.8,C:inactive}(Được tạo bởi nhãn Siêu Cường)", + }, + }, + p_cry_meme_1 = { + name = "Gói Meme", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2# Joker Meme{}", + }, + }, + p_cry_meme_two = { + name = "Gói Meme", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2# Joker Meme{}", + }, + }, + p_cry_meme_three = { + name = "Gói Meme", + text = { + "Chọn {C:attention}#1#{} trong tối đa", + "{C:attention}#2# Joker Meme{}", + }, + }, + undiscovered_code = { + name = "Chưa Khám Phá", + text = { + "Mua hoặc dùng", + "lá này trong một", + "trận ngẫu nhiên", + "để biết tác dụng của nó", + }, + }, + undiscovered_unique = { + name = "Chưa Khám Phá", + text = { + "Mua hoặc dùng", + "lá này trong một", + "trận ngẫu nhiên", + "để biết tác dụng của nó", + }, + }, + cry_green_seal = { + name = "Con Dấu Lục", + text = { + "Tạo ra một lá {C:cry_code}Code{}", + "khi chơi và không ghi điểm", + "{C:inactive}(Phải có ô trống)", + }, + }, + cry_azure_seal = { + name = "Con Dấu Xanh Thẳm", + text = { + "Tạo ra {C:attention}#1#{} lá {C:planet}Hành Tinh{}", + "{C:dark_edition}Âm Bản{} cho {C:attention}tay poker{}", + "được chơi, sau đó", + "{C:red}phá hủy{} lá bài này", + }, + }, + blurred_sdm0 = { + name = "a", + text = { + '{C:inactive,s:0.8}"Tôi ghét lá bài này" - SDM_0, 2024{}', + }, + }, + }, + Unique = { + c_cry_potion = { + name = "Lọ Thuốc", + text = { + "Áp dụng một {C:attention}suy nhược{}", + "tiềm ẩn khi sử dụng", + "{C:inactive,s:0.7}Nhận được từ Xúc Xắc Sôcôla", + }, + }, + }, + }, + misc = { + poker_hands = { + ["cry_Bulwark"] = "Tường Thành", + ["cry_Clusterfuck"] = "Mớ Đệch", + ["cry_UltPair"] = "Đôi Tối Thượng", + ["cry_WholeDeck"] = "Đệch Mịa Cả Bộ Bài", + }, + poker_hand_descriptions = { + ["cry_Bulwark"] = { + "5 lá bài không bậc, không chất", + }, + ["cry_Clusterfuck"] = { + "Ít nhất 8 lá bài không chứa", + "Đôi, Thùng hoặc Sảnh", + }, + ["cry_UltPair"] = { + "Hai lần Hai Đôi, với", + "mỗi hai đôi mang một chất", + "cho tổng cộng là hai chất.", + }, + ["cry_WholeDeck"] = { + "Một tay bài chứa mọi lá bài", + "được tìm thấy trong bộ bài 52 lá.", + "Bây bị điên mịa rồi hả?", + }, + }, + achievement_names = { + ach_cry_ace_in_crash = "ÁT Bỏ Túi", + ach_cry_blurred_blurred_joker = '"Mù" Hợp Pháp', + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Bức Phá Vô Hạn", + ach_cry_cryptid_the_cryptid = "Dị Chủng hoá Dị Chủng", + ach_cry_exodia = "Di Cư", + ach_cry_freak_house = "Ngôi Nhà Kỳ Dị", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Nhà Môi Giới Bất Động Sản", + ach_cry_jokes_on_you = "Đùa Đấy, Bạn Ơi!", + ach_cry_niw_uoy = "!gnắhT nếihC", + ach_cry_now_the_fun_begins = "Cuộc Vui Giờ mới Bắt Đầu.", + ach_cry_patience_virtue = "Kiên Nhẫn là Đức Tính Tốt", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Tắc Đường", + ach_cry_ult_full_skip = "Cú Full Skip Tối Thượng", + ach_cry_used_crash = "Tao đã bảo mầy đừng làm vậy rồi mà", + ach_cry_what_have_you_done = "LÀM CÁI CON KHỈ GÌ THẾ?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Sở hữu Joker Mờ Ảo Mờ Ảo", + ach_cry_bullet_hell = "Sở hữu 15 Joker Xuyên Giáp", + ach_cry_break_infinity = "Ghi 1.79e308 Chip trong một tay bài", + ach_cry_cryptid_the_cryptid = "Dùng Dị Chủng lên Dị Chủng", + ach_cry_exodia = "Sở hữu 5 Joker Sử Thi", + ach_cry_freak_house = "Chơi Thùng Cù Lũ chứa 6 Cơ và 9 Cơ trong khi sở hữu Toẹt Vòi", + ach_cry_googol_play_pass = "Áp Gian Lận lên Thẻ Googol Play", + ach_cry_haxxor = "Dùng cheat code", + ach_cry_home_realtor = "Kích hoạt Ngôi Nhà Vui Vẻ trước Ante 8 (không dùng DoE/Antimatter).", + ach_cry_jokes_on_you = "Kích hoạt khả năng của The Joke trên Ante 1 và thắng trận đó.", + ach_cry_niw_uoy = "Đạt Ante -8.", + ach_cry_now_the_fun_begins = "Sở hữu Tranh Sơn Dầu", + ach_cry_patience_virtue = "Chờ Lavender Loop trong 2 phút trước khi chơi ván bài đầu tiên và đánh bại nó.", + ach_cry_perfectly_balanced = "Thắng Bộ Bài Siêu Công Bằng ở độ khó Cược Ưu Việt", + ach_cry_pull_request = "Để ://COMMIT tạo ra đúng Joker mà nó đã phá hủy.", + ach_cry_traffic_jam = "Đánh bại mọi thử thách Giờ Cao Điểm", + ach_cry_ult_full_skip = "Thắng trận trong 1 ván", + ach_cry_used_crash = "Dùng ://CRASH", + ach_cry_what_have_you_done = "Phá hủy hoặc hi sinh một Joker Ngoại Lai", + }, + challenge_names = { + c_cry_ballin = 'Lăn "Bóng"', + c_cry_boss_rush = "Enter The Gungeon", + c_cry_dagger_war = "Dao Găm Chiến", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Lá Solo", + c_cry_rng = "RNG", + c_cry_rush_hour = "Giờ Cao Điểm I", + c_cry_rush_hour_ii = "Giờ Cao Điểm II", + c_cry_rush_hour_iii = "Giờ Cao Điểm III", + c_cry_sticker_sheet = "Khung Nhãn", + c_cry_sticker_sheet_plus = "Khung Nhãn+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Tính Năng", + cry_set_music = "Nhạc", + cry_set_enable_features = "Chọn tính năng để dùng (áp dụng khi khởi động lại trò chơi):", + cry_feat_achievements = "Thành Tựu", + ["cry_feat_antimatter deck"] = "Bộ Bài Phản Vật Chất", + cry_feat_blinds = "Blind", + cry_feat_challenges = "Thử Thách", + ["cry_feat_code cards"] = "Lá Code", + ["cry_feat_misc. decks"] = "Bộ Bài Khác", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Cơ Chế Hẹn Giờ", + ["cry_feat_enhanced decks"] = "Bộ Bài Cường Hoá", + ["cry_feat_epic jokers"] = "Joker Sử Thi", + ["cry_feat_exotic jokers"] = "Joker Ngoại Lai", + ["cry_feat_m jokers"] = "Joker M", + cry_feat_menu = "Menu Chính Tùy Chỉnh", + ["cry_feat_misc."] = "Khác", + ["cry_feat_misc. jokers"] = "Joker Khác", + cry_feat_planets = "Hành Tinh", + cry_feat_jokerdisplay = "JokerDisplay (Vô Dụng)", + cry_feat_tags = "Nhãn", + cry_feat_sleeves = "Bọc Bài", + cry_feat_spectrals = "Siêu Linh", + cry_feat_spooky = "Bản Cập Nhật Ma Quái", + ["cry_feat_more stakes"] = "Cược", + cry_feat_vouchers = "Phiếu", + cry_mus_jimball = "Jimball (Funkytown bởi Lipps Inc. - Có bản quyền)", + cry_mus_code = "Lá Code (://LETS_BREAK_THE_GAME bởi HexaCryonic)", + cry_mus_exotic = "Joker Ngoại Lai (Joker in Latin bởi AlexZGreat)", + cry_mus_high_score = "Điểm Cao (Final Boss [For Your Computer] bởi AlexZGreat)", + + k_cry_program_pack = "Gói Chương Trình", + k_cry_meme_pack = "Gói Meme", + + cry_critical_hit_ex = "Đòn Chí Mạng!", + cry_critical_miss_ex = "Đòn Chí Hụt!", + + cry_potion1 = "-1 level cho tất cả tay bài", + cry_potion2 = "X1.15 điểm Blind", + cry_potion3 = "-1 Tay Bài và Lượt Bỏ Bài", + + cry_debuff_oldhouse = "Không chơi Cù Lũ", + cry_debuff_oldarm = "Phải chơi 4 lá hoặc ít hơn", + cry_debuff_oldpillar = "Không chơi Sảnh", + cry_debuff_oldflint = "Không chơi Thùng", + cry_debuff_oldmark = "Không chơi tay bài chứa Đôi", + cry_debuff_obsidian_orb = "Áp dụng khả năng của mọi Boss Blind bị đánh bại", + + cry_tax_placeholder = "(X0.4 điểm blind yêu cầu)", + cry_joke_placeholder = "(bội số của 8)", + + k_code = "Code", + k_unique = "Độc Nhất", + b_code_cards = "Lá Code", + b_unique_cards = "Lá Độc Nhất", + b_pull = "NẠP", + cry_hooked_ex = "Đã Kết Nối!", + k_end_blind = "Kết Thúc Blind", + + cry_code_rank = "NHẬP BẬC LÁ BÀI", + cry_code_enh = "NHẬP TÊN CƯỜNG HOÁ", + cry_code_hand = "NHẬP TAY POKER", + cry_code_enter_card = "NHẬP MỘT LÁ", + cry_code_apply = "ÁP DỤNG", + cry_code_apply_previous = "ÁP DỤNG TRƯỚC ĐÓ", + cry_code_exploit = "LỢI DỤNG", + cry_code_exploit_previous = "LỢI DỤNG TRƯỚC ĐÓ", + cry_code_create = "TẠO", + cry_code_create_previous = "TẠO TRƯỚC ĐÓ", + cry_code_execute = "THỰC HIỆN", + cry_code_cancel = "HỦY BỎ", + + b_flip = "LẬT LẠI", + b_merge = "HỢP NHẤT", + + cry_hand_bulwark = "Tường Thành", + cry_hand_clusterfuck = "Mớ Đệch", + cry_hand_ultpair = "Đôi Tối Thượng", + + cry_asc_hands = "Tay Thăng Thiên", + cry_p_star = "Sao", + + cry_again_q = "Lần Nữa?", + cry_curse = "Nguyền Rủa", + cry_curse_ex = "Nguyền Rủa!", + cry_sobbing = "Cứu tui...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_good_luck_ex = "Chúc may mắn!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Vui Lên Nào!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Ván", + cry_plus_cryptid = "+1 Dị Chủng", + cry_plus_card = "+1 Lá", + cry_plus_code = "+1 Code", + cry_no_triggers = "Hết lượt kích hoạt!", + cry_unredeemed = "Đã Bị Chuộc Lại...", + cry_active = "Có Hiệu Lực", + cry_inactive = "Không Hiệu Lực", + + k_disable_music = "Tắt Nhạc", + + k_cry_epic = "Sử Thi", + k_cry_exotic = "Ngoại Lai", + k_cry_candy = "Kẹo", + k_cry_cursed = "Nguyền Rủa", + k_planet_disc = "Đĩa Cận Sao", + k_planet_satellite = "Vệ Tinh Tự Nhiên", + k_planet_universe = "Đệch Mịa Cả Cái Vũ Trụ", + + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Cảnh Báo Bản Quyền", + cry_notif_jimball_d1 = 'Jimball sẽ phát bài "Funkytown",', + cry_notif_jimball_d2 = "có bản quyền và ảnh hưởng lớn", + cry_notif_jimball_d3 = "đến stream và video.", + }, + labels = { + food_jokers = "Joker Thực Phẩm", + banana = "Chuối Tiêu", + cry_absolute = "Tuyệt Đối", + code = "Code", + unique = "Độc Nhất", + cry_rigged = "Gian Lận", + cry_hooked = "Đã Kết Nối", + cry_flickering = "Nhấp Nháy", + cry_possessed = "Bị Ám", + + cry_green_seal = "Con Dấu Lục", + cry_azure_seal = "Con Dấu Xanh Thẳm", + + cry_astral = "Thiên Tú", + cry_blur = "Mờ Ảo", + cry_double_sided = "Hai Mặt", + cry_glass = "Mỏng Manh", + cry_glitched = "Nhiễu Loạn", + cry_gold = "Hoàng Kim", + cry_m = "Vui Nhộn", + cry_mosaic = "Khảm Mảnh", + cry_noisy = "Ồn Ào", + cry_oversat = "Siêu Bão Hòa", + + k_cry_epic = "Sử Thi", + k_cry_exotic = "Ngoại Lai", + k_cry_candy = "Kẹo", + k_cry_cursed = "Nguyền Rủa", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Nhân" }, + plus_chips = { "{C:blue}+#2#{} Chip" }, + x_mult = { "{X:red,C:white} X#2#{} Nhân" }, + x_chips = { "{X:blue,C:white} X#2#{} Chip" }, + h_size = { "{C:attention}+#2#{} Lá Giữ Trong Tay" }, + money = { "{C:money}+$#2#{} tiền thưởng" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Hiện tại là {C:red}+#1#{C:inactive} Nhân)" }, + plus_chips = { "{C:inactive}(Hiện tại là {C:blue}+#1#{C:inactive} Chip)" }, + x_mult = { "{C:inactive}(Hiện tại là {X:red,C:white} X#1# {C:inactive} Nhân)" }, + x_chips = { "{C:inactive}(Hiện tại là {X:blue,C:white} X#1# {C:inactive} Chip)" }, + h_size = { "{C:inactive}(Hiện tại là {C:attention}+#1#{C:inactive} Lá Giữ Trong Tay)" }, + money = { "{C:inactive}(Hiện tại là {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Tạo ra {C:attention}#2# Joker{}" }, + make_tarot = { "Tạo ra {C:attention}#2# lá {C:tarot}Tarot{}" }, + make_planet = { "Tạo ra {C:attention}#2# lá {C:planet}Hành Tinh{}" }, + make_spectral = { "Tạo ra {C:attention}#2# lá {C:spectral}Siêu Linh{}" }, + add_dollars = { "Nhận {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "khi mở một {C:attention}Gói Bài{}" }, + buying_card = { "khi một lá bài được mua" }, + selling_self = { "khi lá này được bán" }, + selling_card = { "khi một lá bài được bán" }, + reroll_shop = { "lúc gieo lại" }, + ending_shop = { "ở cuối {C:attention}shop{}" }, + skip_blind = { "khi một {C:attention}blind{} bị bỏ qua" }, + skipping_booster = { "khi bỏ qua một {C:attention}Gói Bài{}" }, + playing_card_added = { + "mỗi khi một {C:attention}lá bài thường{} được thêm vào bộ bài của bạn", + }, + first_hand_drawn = { "khi ván bắt đầu" }, + setting_blind = { "khi {C:attention}Blind{} được chọn" }, + remove_playing_cards = { "khi một lá bài bị phá hủy" }, + using_consumeable = { "khi một lá {C:attention}tiêu thụ{} được dùng" }, + debuffed_hand = { "nếu chơi {C:attention}tay bài{} không hợp lệ" }, + pre_discard = { "trước mỗi lượt bỏ" }, + discard = { "cho mỗi lá bài bị bỏ" }, + end_of_round = { "ở cuối {C:attention}ván{}" }, + individual_play = { "cho mỗi lá bài ghi điểm" }, + individual_hand_score = { "cho mỗi lá bài giữ trên tay khi tính điểm" }, + individual_hand_end = { "cho mỗi lá bài giữ trên tay ở cuối {C:attention}ván{}" }, + repetition_play = { "Tái kích lá bài đã chơi" }, + repetition_hand = { "Tái kích lá bài giữ trên tay" }, + other_joker = { "mỗi {C:attention}Joker{}" }, + before = { "trước mỗi {C:attention}tay bài{}" }, + after = { "sau mỗi {C:attention}tay bài{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "nếu nó là {C:attention}Joker{} {C:blue}Thường{}" }, + buy_uncommon = { "nếu nó là {C:attention}Joker{} {C:green}Ít Phổ Biến{}" }, + tarot = { "nếu lá bài là lá {C:tarot}Tarot{}" }, + planet = { "nếu lá bài là lá {C:planet}Hành Tinh{}" }, + spectral = { "nếu lá bài là lá {C:spectral}Siêu Linh{}" }, + joker = { "nếu lá bài là {C:attention}Joker{}" }, + suit = { "nếu lá bài là lá {V:1}#3#{}" }, + rank = { "nếu bậc lá bài là {C:attention}#3#{}" }, + face = { "nếu lá bài là lá {C:attention}mặt{}" }, + boss = { "nếu {C:attention}blind{} là {C:attention}Boss Blind{}" }, + non_boss = { "nếu {C:attention}blind{} không phải là {C:attention}Boss Blind{}" }, + small = { "nếu {C:attention}blind{} là {C:attention}Small Blind{}" }, + big = { "nếu {C:attention}blind{} là {C:attention}Big Blind{}" }, + first = { "nếu nó là {C:attention}tay bài {C:attention}đầu tiên{}" }, + last = { "nếu nó là {C:attention}tay bài {C:attention}cuối cùng{}" }, + common = { "nếu nó là {C:attention}Joker{} {C:blue}Thường{}" }, + uncommon = { "nếu nó là {C:attention}Joker{} {C:green}Ít Phổ Biến{}" }, + rare = { "nếu nó là {C:attention}Joker{} {C:red}Hiếm{}" }, + poker_hand = { "nếu tay bài là {C:attention}#3#{}" }, + or_more = { "nếu tay bài chứa {C:attention}#3#{} lá hoặc nhiều hơn" }, + or_less = { "nếu tay bài chứa {C:attention}#3#{} lá hoặc ít hơn" }, + hands_left = { "nếu còn #3# {C:blue}tay bài{} ở cuối ván" }, + discards_left = { "nếu còn #3# {C:red}lượt bỏ{} ở cuối ván" }, + first_discard = { "nếu nó là {C:attention}lượt bỏ {C:attention}đầu tiên{}" }, + last_discard = { "nếu nó là {C:attention}lượt bỏ {C:attention}cuối cùng{}" }, + odds = { "với xác suất {C:green}#4# {C:green}trên {C:green}#3#{}" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chip" }, + a_powmult = { "^#1# Nhân" }, + a_powchips = { "^#1# Chip" }, + a_powmultchips = { "^#1# Nhân+Chip" }, + a_round = { "+#1# Ván" }, + a_candy = { "+#1# Kẹo" }, + a_xchips_minus = { "-X#1# Chip" }, + a_powmult_minus = { "-^#1# Nhân" }, + a_powchips_minus = { "-^#1# Chip" }, + a_powmultchips_minus = { "-^#1# Nhân+Chip" }, + a_round_minus = { "-#1# Ván" }, + + a_tag = { "Nhãn #1#" }, + a_tags = { "Nhãn #1#" }, + + cry_sticker_name = { "Nhãn #1#" }, + cry_sticker_desc = { + "Đã dùng Joker này", + "để thắng ở độ khó", + "#2#Cược#3# #2##1#", + }, + + cry_art = { "Bức Vẽ Bởi: #1#" }, + cry_code = { "Code Bởi: #1#" }, + cry_idea = { "Ý Tưởng Bởi: #1#" }, + }, + v_text = { + ch_c_cry_all_perishable = { "Mọi Joker đều {C:eternal}Ngắn Hạn{}" }, + ch_c_cry_all_rental = { "Mọi Joker đều {C:eternal}Cho Thuê{}" }, + ch_c_cry_all_pinned = { "Mọi Joker đều {C:eternal}Bị Ghim{}" }, + ch_c_cry_all_banana = { "Mọi Joker đều có {C:eternal}Chuối Tiêu{}" }, + ch_c_all_rnj = { "Mọi Joker đều là {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "Tất cả lá bài có thể mua đều có nhãn" }, + ch_c_cry_rush_hour = { + "Mọi Boss Blind đều là {C:attention}The Clock{} hoặc {C:attention}Lavender Loop", + }, + ch_c_cry_rush_hour_ii = { "Mọi Blind đều là {C:attention}Boss Blind{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} và {C:attention}Lavender Loop{} tăng trưởng nhanh hơn {C:attention}gấp đôi{}", + }, + ch_c_cry_no_tags = { "Khả năng bỏ qua bị {C:attention}vô hiệu hóa{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Phiếu{} không còn xuất hiện trong shop" }, + ch_c_cry_no_boosters = { "{C:attention}Gói Bài{} không còn xuất hiện trong shop" }, + ch_c_cry_no_rerolls = { "Khả năng gieo lại bị {C:attention}vô hiệu hóa{}" }, + ch_c_cry_no_consumables = { "{C:attention}Lá Tiêu Thụ{} không còn xuất hiện" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "KHÔNG CÓ PHIẾU", "CHO MÀY ĐÂU" }, + { "NGU ĐẦN", "MÀY NGHĨ RẰNG TAO SẼ", "CHO MÀY PHIẾU À?" }, + { "NOPE!", "KHÔNG CÓ PHIẾU Ở ĐÂY!", "(PHIÊN BẢN SLUMPAGE)" }, + { "VẤN ĐỀ KỸ NĂNG", "NĂM MƠ MÀ", "LẤY PHIẾU ĐI" }, + { "JIMBO", "TỪ BAN QUẢN LÝ", "QUÊN THAY MỚI" }, + { "ÚI!", "KHÔNG CÓ PHIẾU NHA", "" }, + { "MÀY LÀ THẰNG HỀ,", "LIẾC Ở ĐÂY", "LÀM GÌ? LOL" }, + { "PHIẾU HIỆN", "ĐANG Ở", "LÂU ĐÀI KHÁC" }, + { "$0", "PHIẾU TRỐNG", "(HIỂU RỔI CHỨ?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "GIẢM GIÁ 100%", "CHO TẤT CẢ PHIẾU", "(AI ĐÓ MÚC HẾT RỒI)" }, + { "THỬ LẠI SAU NHÉ", "NHẮC TÍ LÀ MÀY CŨNG", "KHÔNG CÓ ĐỦ TIỀN ĐÂU" }, + { "HẢ?", '"PHIẾU GÌ"?', "TỪ ĐÓ CÒN CHẲNG CÓ NGHĨA..." }, + { 'NHẤN "R"', "ĐỂ THAY MỚI", "LẠI PHIẾU" }, + { "BIẾT GÌ KHÔNG?", "NHẤN ALT+F4 ĐỂ", "NHẬN PHIẾU MIỄN PHÍ!" }, + { "XIN LỖI,", "KHÔNG CÓ PHIẾU", "DO CẮT GIẢM NGÂN SÁCH" }, + { "GỌI 1-600-JIMBO", "ĐỂ ĐÁNH GIÁ", "TRẢI NGHIỆM PHIẾU" }, + { "ĐÁNH BẠI", "BOSS BLIND ANTE 39", "ĐỂ THAY MỚI" }, + { "ẢO THUẬT", "TAO Đà ÚM BA LA", "BAY PHIẾU RỒI NHÉ" }, + { "TẠI SAO", "PHIẾU LẠI GIỐNG", "BÀN VIẾT THẾ?" }, + { + "CHÚNG TÔI Đà THU HỒI", + "PHIẾU CỦA BẠN, CHÚNG SẼ CÓ ĐẤT", + "DỤNG VÕ HƠN TRONG TRẬN KHÁC", + }, + { "TẠI SAO GỌI ĐÓ LÀ PHIẾU", "KHI LÀM MÁT CÁI NÓNG", "VÀ ĂN CHIP LẠNH?" }, + { "XIN LỖI", "PHIẾU ĐANG GẶP SỰ CỐ", '"MẤT TRINH"' }, + { "KHÔNG MAY LÀ BẢN", "CẬP NHẬT VOUCHRX REWRITE", "Đà BỊ HỦY" }, + { "ĐÁNH BẠI", "BOSS BLIND", "ĐỂ U NHƯ KỸ" }, + { "CHIM ĐANG HÓT", "HOA ĐANG NỞ", "TRẺ TRÂU NHƯ MÀY..." }, + { "XIN THÔNG BÁO", "TẤT CẢ PHIẾU Đà BỊ THU HỒI", "DO NGUY CƠ NHIỄM SALMONELLA" }, + { "PHIẾU KHÔNG THỂ ĐẾN", "DO BỐ CỤC SHOP", "VƯỢT NGÂN SÁCH 200%" }, + { "MÀY THÍCH", "MUA PHIẾU À?", "MÀY LÀ KẺ HỐC PHIẾU" }, + { "PHIẾU", "!E", "MỘT HỒ PHIẾU" }, + { "KHÔNG CÓ", "PHIẾU", "Ở ĐÂY" }, + { "KHÔNG CÓ", "ÔNG GIÀ NOEL VÀ", "CŨNG KHÔNG CÓ PHIẾU" }, + { "", "KHÔNG PHIẾU?", "" }, + { "MÀY", "VỪA THUA", "TRẬN KÌA" }, + { "ĐỂ TUI MÚC", "CHO QUẢ TRỨNG TỐT", "LÚC KHỐN ĐỐN NÀY NHÉ?" }, + { "CHẠM CỎ ĐI", "THAY VÌ DÙNG", "BỘ BÀI NÀY" }, + { "ĐANG CHƠI", "BỘ BÀI XANH", "PHẢI HÔNG?" }, + { "ĐỒ NGOẠI LAI", "MIỄN PHÍ, MÚC LẸ TRƯỚC", "KHI QUÁ MUỘN (hết hàng)" }, + { "CHỨNG MINH MÌNH ĐÚNG", "BẰNG CÁCH MUA PHIẾU", "VÔ HÌNH VỚI GIÁ $10" }, + { "", "không có phiếu?", "" }, + { + "thấy quảng cáo này à?", + "nếu được thì nó đang hoạt động", + "và bạn cũng có thể lấy nó", + }, + { "BẠN ĐANG BỎ LỠ", "ÍT NHẤT 5 PHIẾU ĐÓ", "tonktonktonktonktonk" }, + { "10", "20 KHÔNG PHIẾU XD", "30 GOTO 10" }, + { "PHIẾU LÀ", "TÍNH NĂNG CAO CẤP", "MỞ KHÓA VỚI $199.99 JOLLAR" }, + { "THỰC SỰ KHÔNG PHIẾU!?!?", "CHỈ DÀNH CHO CƯỢC ƯU VIỆT", "BỘ BÀI SIÊU CÔNG BẰNG" }, + { "BẠN CÓ HÀI LÒNG VỚI", "TRẢI NGHIỆM PHIẾU KHÔNG? HÃY", "ĐÁNH GIÁ 5 SAO TRÊN JESTELP" }, + { "PHIẾU MIỄN PHÍ", "PHIẾU NÓNG GẦN BẠN", "LẤY PHIẾU NHANH VỚI MẸO NÀY" }, + { "GIỚI THIỆU", "PHIẾU CẤP 0 ĐẦU TIÊN!", "(sắp ra mắt trong Cryptid 1.0)" }, + { "PHIẾU KÌA!", "À, TƯỞNG TƯỢNG THÔI", "BỌN TAO TƯỞNG MÀY MUỐN CÓ NÓ" }, + { + "TẮT TRÌNH CHẶN QUẢNG CÁO", + "NẾU KHÔNG CÓ QUẢNG CÁO, CHÚNG TÔI KHÔNG THỂ", + "BÁN PHIẾU CHO BẠN", + }, + { "NẾU BẠN GẶP", "VẤN ĐỀ, HÃY GỬI", "EMAIL ĐẾN NORESPONSE@JMAIL.COM" }, + { "KHÔNG ĐỦ TIỀN ĐỂ", "MUA PHIẾU, ĐẶT", "NÓ Ở ĐÂY LÀM GÌ?" }, + { "MUỐN MUA PHIẾU À?", "VẬY THÌ IM ĐI", "MÀY KHÔNG LẤY ĐƯỢC ĐÂU LOL" }, + { "^$%& KHÔNG", "PHIẾU ^%&% %&$^% CHO", "$%&%%$ %&$&*%$^ BẠN" }, + { "PHIẾU NÈ (TIN TAO ĐI)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "TRẬN > TRẬN MỚI", "NHÌN KHÔNG KHÍ TRONG", "MỘT HOẶC HAI TIẾNG" }, + { "RẤT XIN LỖI", "NGƯỜI TRƯỚC HOẢNG QUÁ", "MUA HẾT PHIẾU CMNR" }, + { "CẢM GIÁC NHƯ NÀO", "KHI KHÔNG ĐƯỢC", "MUA PHIẾU?" }, + { "JIMBO QUAY TRÚNG MẶT 1", "VÀ NÉM TẤT CẢ", "PHIẾU XUỐNG HỐ RỒI" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "ÔI BẠN ƠI THẬT, NGÂY THƠ THẾ, ĐỌC HẾT ĐỐNG NÀY SẼ MANG PHIẾU TRỞ LẠI À?", + "RẤT TIẾC PHẢI NÓI RẰNG, BỘ BÀI NÀY KHÔNG CHỨA PHIẾU ĐÂU MÀ CỰC NHỌC TÌM KIẾM.", + "ĐOẠN VĂN DÀI BẤT THƯỜNG NÀY CHỈ Ở ĐÂY ĐỂ BỌN NGU LÃNG PHÍ SỨC MÀ ĐỌC NÓ", + }, + { "TRUY CẬP", "https://youtu.be/p7YXXieghto", "ĐỂ NHẬN PHIẾU MIỄN PHÍ" }, + }, + }, +} diff --git a/Cryptid/localization/zh_CN.lua b/Cryptid/localization/zh_CN.lua index 77db510..8a8f105 100644 --- a/Cryptid/localization/zh_CN.lua +++ b/Cryptid/localization/zh_CN.lua @@ -5,14 +5,14 @@ return { name = "CCD牌组", text = { "每张牌也是一张{C:attention}随机{}消耗牌", - "{C:inactive,s:0.8}{C:attention,s:0.8}(Consume Card Deck){C:inactive,s:0.8}" - } + "{C:inactive,s:0.8}{C:attention,s:0.8}(Consume Card Deck){C:inactive,s:0.8}", + }, }, b_cry_antimatter = { name = "反物质牌组", text = { - "拥有{C:legendary,E:1}所有牌组的{}增益效果" - } + "拥有{C:legendary,E:1}所有牌组的{}增益效果", + }, }, b_cry_beige = { name = "四重卡组", @@ -26,21 +26,21 @@ return { text = { "{C:attention}小丑牌槽{} 和 {C:attention}消耗牌槽{}", "{C:attention}合并", - "boss底注被替换为它们的怀旧版本" - } + "boss底注被替换为它们的怀旧版本", + }, }, b_cry_blank = { name = "空白牌组", text = { - "{C:inactive,E:1}无作用?{}" - } + "{C:inactive,E:1}无作用?{}", + }, }, b_cry_bountiful = { name = "丰饶牌组", text = { "每次{C:attention}出牌{} 或 {C:attention}弃牌{}后", - "固定抽五张牌" - } + "固定抽五张牌", + }, }, b_cry_conveyor = { name = "传送带牌组", @@ -48,48 +48,48 @@ return { "小丑牌{C:attention}不可{}移动", "回合开始时,", "{C:attention}复制{}最右边的小丑牌", - "并且{C:attention}销毁{}最左边的小丑牌" - } + "并且{C:attention}销毁{}最左边的小丑牌", + }, }, b_cry_critical = { name = "暴击牌组", text = { "每打出一手牌后,", "{C:green}#1#/4{}几率获得{X:dark_edition,C:white}^2{}倍率", - "{C:green}#1#/8{}几率获得{X:dark_edition,C:white}^0.5{}倍率" - } + "{C:green}#1#/8{}几率获得{X:dark_edition,C:white}^0.5{}倍率", + }, }, ["b_cry_cry-Blue_deck"] = { name = "入迷牌组", text = { "所有牌都带有一个{C:dark_edition}蓝色蜡封{}", "卡牌不能更改蜡封类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-Gold_deck"] = { name = "护身符牌组", text = { "所有牌都带有一个{C:dark_edition}金色蜡封{}", "卡牌不能更改蜡封类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-Purple_deck"] = { name = "灵媒牌组", text = { "所有牌都带有一个{C:dark_edition}紫色蜡封{}", "卡牌不能更改蜡封类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-Red_deck"] = { name = "既视感牌组", text = { "所有牌都带有一个{C:dark_edition}红色蜡封{}", "卡牌不能更改蜡封类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-bonus_deck"] = { name = "教皇牌组", @@ -97,31 +97,31 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_bonus}奖励牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-club_deck"] = { name = "梅花牌组", text = { "所有的牌都是{C:dark_edition}黑桃{}", "不能改变花色", - "boss不会出现{C:attention}梅花{}" - } + "boss不会出现{C:attention}梅花{}", + }, }, ["b_cry_cry-eternal_deck"] = { name = "永恒牌组", text = { "所有的牌都带有{C:attention}永恒{}贴纸", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-foil_deck"] = { name = "闪箔牌组", text = { "所有的牌都是{C:dark_edition,T:foil}闪箔牌{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-glass_deck"] = { name = "正义牌组", @@ -129,16 +129,16 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_glass}玻璃牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-goad_deck"] = { name = "世界牌组", text = { "所有的牌都是{C:dark_edition}黑桃{}", "不能改变花色", - "boss不会出现{C:attention}挑衅{}" - } + "boss不会出现{C:attention}挑衅{}", + }, }, ["b_cry_cry-gold_deck"] = { name = "恶魔牌组", @@ -146,24 +146,24 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_gold}黄金牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-head_deck"] = { name = "太阳牌组", text = { "所有的牌都是{C:dark_edition}红桃{}", "不能改变花色", - "boss不会出现{C:attention}头部{}" - } + "boss不会出现{C:attention}头部{}", + }, }, ["b_cry_cry-holo_deck"] = { name = "镭射牌组", text = { "所有的牌都是{C:dark_edition,T:holo}镭射牌{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-lucky_deck"] = { name = "魔术师牌组", @@ -171,8 +171,8 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_lucky}幸运牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-mult_deck"] = { name = "皇后牌组", @@ -180,45 +180,45 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_mult}倍率牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-negative_deck"] = { name = "负片牌组", text = { "所有的牌都是{C:dark_edition,T:negative}负片牌{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-perishable_deck"] = { name = "易腐牌组", text = { "所有的牌都带有{C:attention}易腐{}贴纸", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-pinned_deck"] = { name = "固定牌组", text = { "所有的牌都带有{C:attention}固定{}贴纸", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-polychrome_deck"] = { name = "多彩牌组", text = { "所有的牌都是{C:dark_edition,T:polychrome}多彩牌{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-rental_deck"] = { name = "租赁牌组", text = { "所有的牌都带有{C:attention}租用{}贴纸", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-steel_deck"] = { name = "战车牌组", @@ -226,8 +226,8 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_steel}钢铁牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-stone_deck"] = { name = "石头牌组", @@ -235,8 +235,8 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_stone}石头牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-wild_deck"] = { name = "爱人牌组", @@ -244,149 +244,149 @@ return { "所有的 {C:attention}手牌{}", "都是 {C:attention,T:m_wild}万能牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, ["b_cry_cry-window_deck"] = { name = "星星牌组", text = { "所有的牌都是{C:dark_edition}方块{}", "不能改变花色", - "boss不会出现{C:attention}窗口{}" - } + "boss不会出现{C:attention}窗口{}", + }, }, b_cry_cryastral_deck = { name = "星界牌组", text = { "所有的牌都是{C:dark_edition,T:cry_astral}星界版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_cryazure_deck = { name = "台风牌组", text = { "所有牌都带有{C:dark_edition}蔚蓝蜡封{}", "卡牌不能更改蜡封类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_crybanana_deck = { name = "香蕉牌组", text = { "所有的牌都带有{C:attention}香蕉{}贴纸", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_cryblur_deck = { name = "模糊牌组", text = { "所有的牌都是{C:dark_edition,T:cry_blur}模糊版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_cryecho_deck = { name = "日食牌组", text = { "所有的的牌都是{C:attention,T:m_cry_echo}回响牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_cryglass_deck = { name = "易碎牌组", text = { "所有的牌都是{C:dark_edition,T:cry_glass}灰质琉璃版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_cryglitched_deck = { name = "故障牌组", text = { "所有的牌都是{C:dark_edition,T:cry_glitched}故障版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}不对,这不就是印错牌组吗?" - } + "{s:0.8,C:inactive}不对,这不就是印错牌组吗?", + }, }, b_cry_crygold_deck = { name = "鎏金牌组", text = { "所有的牌都是{C:dark_edition,T:cry_gold}鎏金版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_crylight_deck = { name = "明亮牌组", text = { "所有的的牌都是{C:attention,T:m_cry_light}明亮牌{}", "不能更改增强类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_crym_deck = { name = "M", text = { "所有的牌都是{C:dark_edition,T:cry_m}欢愉版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_crymosaic_deck = { name = "马赛克牌组", text = { "所有的牌都是{C:dark_edition,T:cry_mosaic}马赛克版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_crynoisy_deck = { name = "噪声牌组", text = { "所有的牌都是{C:dark_edition,T:cry_noisy}噪声版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_cryoversat_deck = { name = "过曝牌组", text = { "所有的牌都是{C:dark_edition,T:cry_oversat}过曝版本{}", "不能更改版本类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_encoded = { name = "编码牌组", text = { "以一张{C:cry_code,T:j_cry_CodeJoker}代码小丑{}和一张{C:cry_code,T:j_cry_copypaste}复制/粘贴{}开始", - "商店中只出现{C:cry_code}代码牌{}" - } + "商店中只出现{C:cry_code}代码牌{}", + }, }, b_cry_equilibrium = { name = "均衡牌组", text = { "所有卡牌在", "商店中出现的{C:attention}几率相同{},", - "以{C:attention,T:v_overstock_plus}库存过剩加强版{}开始游戏" - } + "以{C:attention,T:v_overstock_plus}库存过剩加强版{}开始游戏", + }, }, b_cry_glowing = { name = "发光牌组", text = { "在击败Boss盲注时,", "所有小丑牌的数值乘以{X:dark_edition,C:white}X1.25{}", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person" - } + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", + }, }, b_cry_infinite = { name = "无限牌组", text = { "你可以选择{C:attention}任意数量的卡牌{}", - "{C:attention}+1{}手牌上限" - } + "{C:attention}+1{}手牌上限", + }, }, b_cry_legendary = { name = "传奇牌组", @@ -394,45 +394,45 @@ return { "以一张 {C:legendary}传奇{C:legendary} 小丑牌开始", "击败Boss盲注后", "{C:green}1 / 5{} 几率创建另外一张", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, b_cry_misprint = { name = "错版牌组", text = { "卡牌价格,手牌的数值", - "都是{C:attention}随机{}数值" - } + "都是{C:attention}随机{}数值", + }, }, b_cry_redeemed = { name = "赎回牌组", text = { "购买{C:attention}优惠券{}时,", - "获得其{C:attention}额外等级{}" - } + "获得其{C:attention}额外等级{}", + }, }, b_cry_source_deck = { name = "源代码牌组", text = { "所有牌都带有{C:dark_edition}绿色蜡封{}", "卡牌不能更改蜡封类型", - "{s:0.8,C:inactive}" - } + "{s:0.8,C:inactive}", + }, }, b_cry_spooky = { name = "万圣节牌组", text = { "以一张{C:eternal}永恒{} {C:attention,T:j_cry_chocolate_dice}巧克力骰{}开始", "每次{C:attention}底注{}之后 ", - "创建一个{C:cry_candy}糖果{}或 {X:cry_cursed,C:white}诅咒{}" - } + "创建一个{C:cry_candy}糖果{}或 {X:cry_cursed,C:white}诅咒{}", + }, }, b_cry_very_fair = { name = "超平衡的牌组", text = { "每回合{C:blue}-2{}手牌,{C:red}-2{}弃牌", - "{C:attention}优惠券{}不再出现在商店中" - } + "{C:attention}优惠券{}不再出现在商店中", + }, }, b_cry_wormhole = { name = "虫洞牌组", @@ -440,176 +440,176 @@ return { "以一张{C:cry_exotic}域外{C:attention}小丑牌{}开始", "小丑牌都{C:attention}20X+{}", "更可能是{C:dark_edition}负片{}", - "{C:attention}-2{}小丑牌槽" - } - } + "{C:attention}-2{}小丑牌槽", + }, + }, }, Blind = { bl_cry_box = { name = "盒子", text = { - "削弱所有的普通小丑" - } + "削弱所有的普通小丑", + }, }, bl_cry_clock = { name = "时间", text = { "时间滚滚流淌", - "在本底注中每过三秒,得分需求增长0.1x" - } + "在本底注中每过三秒,得分需求增长0.1x", + }, }, bl_cry_hammer = { name = "重锤", text = { - "削弱所有的奇数牌" - } + "削弱所有的奇数牌", + }, }, bl_cry_joke = { name = "笑料", text = { "如果得分超过要求的2倍,", - "将盲注设置为 #2#" - } + "将盲注设置为 #2#", + }, }, bl_cry_lavender_loop = { name = "薰衣草环", text = { "在boss回合中每经过1.5秒", - "盲注要求增加1.25倍" - } + "盲注要求增加1.25倍", + }, }, bl_cry_magic = { name = "魔术", text = { - "削弱所有的偶数牌" - } + "削弱所有的偶数牌", + }, }, bl_cry_obsidian_orb = { name = "黑曜宝珠", text = { "拥有所有已击败的", - "Boss盲注的能力" - } + "Boss盲注的能力", + }, }, bl_cry_oldarm = { name = "怀旧 手臂", text = { - "必须出4张或更少的牌" - } + "必须出4张或更少的牌", + }, }, bl_cry_oldfish = { name = "怀旧 鱼", text = { - "所有手牌的初始倍率都是1" - } + "所有手牌的初始倍率都是1", + }, }, bl_cry_oldflint = { name = "怀旧 燧石", text = { - "包含同花顺的出牌不计分" - } + "包含同花顺的出牌不计分", + }, }, bl_cry_oldhouse = { name = "怀旧 房屋", text = { - "包含葫芦的出牌不计分" - } + "包含葫芦的出牌不计分", + }, }, bl_cry_oldmanacle = { name = "怀旧 镣铐", text = { - "牌型的倍率除以剩余弃牌次数" - } + "牌型的倍率除以剩余弃牌次数", + }, }, bl_cry_oldmark = { name = "怀旧 标记", text = { - "包含对子的出牌不计分" - } + "包含对子的出牌不计分", + }, }, bl_cry_oldox = { name = "怀旧 公牛", text = { - "所有手牌的初始筹码都是0" - } + "所有手牌的初始筹码都是0", + }, }, bl_cry_oldpillar = { name = "怀旧 支柱", text = { - "包含顺子的出牌不计分" - } + "包含顺子的出牌不计分", + }, }, bl_cry_oldserpent = { name = "怀旧 蟒蛇", text = { - "倍率除以所出牌型的牌型等级" - } + "倍率除以所出牌型的牌型等级", + }, }, bl_cry_pin = { name = "别针", text = { "史诗及以上稀有度的", - "小丑被削弱" - } + "小丑被削弱", + }, }, bl_cry_pinkbow = { name = "粉红蝴蝶结", text = { - "在出牌时随机化手牌中的牌的点数" - } + "在出牌时随机化手牌中的牌的点数", + }, }, bl_cry_sapphire_stamp = { name = "蓝石烙印", text = { "选择一张额外的牌", - "出牌时随机丢弃所出的牌其中一张" - } + "出牌时随机丢弃所出的牌其中一张", + }, }, bl_cry_shackle = { name = "枷锁", text = { - "削弱所有的负片小丑" - } + "削弱所有的负片小丑", + }, }, bl_cry_striker = { name = "打击", text = { - "削弱所有的稀有小丑" - } + "削弱所有的稀有小丑", + }, }, bl_cry_tax = { name = "强税", text = { "每次出牌的得分的上限为", - "盲注要求的0.4倍" - } + "盲注要求的0.4倍", + }, }, bl_cry_tornado = { name = "绿松旋风", text = { "#1#/#2#的概率", - "打出的牌不计分" - } + "打出的牌不计分", + }, }, bl_cry_trick = { name = "诡计", text = { "每次出牌之后,翻转所有", - "手中的牌" - } + "手中的牌", + }, }, bl_cry_vermillion_virus = { name = "朱红病毒", text = { - "每次出牌随机替换一张小丑牌" - } + "每次出牌随机替换一张小丑牌", + }, }, bl_cry_windmill = { name = "风车", text = { - "削弱所有的罕见小丑" - } - } + "削弱所有的罕见小丑", + }, + }, }, Code = { c_cry_alttab = { @@ -625,42 +625,42 @@ return { "将 {C:cry_code}#1#{} 选中的牌", "转换为 {C:cry_code}指令{} 下的增强", "可用指令:{C:cry_code}bonus{},{C:cry_code}mult{},{C:cry_code}wild{},{C:cry_code}glass{}", - "{C:cry_code}steel{},{C:cry_code}stone{},{C:cry_code}gold{},{C:cry_code}lucky{},{C:cry_code}echo{},{C:cry_code}light{}" - } + "{C:cry_code}steel{},{C:cry_code}stone{},{C:cry_code}gold{},{C:cry_code}lucky{},{C:cry_code}echo{},{C:cry_code}light{}", + }, }, c_cry_commit = { name = "://提交", text = { "摧毁一张 {C:cry_code}选中的{} 小丑牌,", - "创造一张 {C:cry_code}新的相同 {C:cry_code}稀有度的{} 小丑牌" - } + "创造一张 {C:cry_code}新的相同 {C:cry_code}稀有度的{} 小丑牌", + }, }, c_cry_crash = { name = "://崩溃", text = { - "{C:cry_code,E:1}警告!使用此牌会导致游戏崩溃!" - } + "{C:cry_code,E:1}警告!使用此牌会导致游戏崩溃!", + }, }, c_cry_ctrl_v = { name = "://CTRL+V", text = { - "复制一张 {C:cry_code}选择的{} 卡牌或消耗牌" - } + "复制一张 {C:cry_code}选择的{} 卡牌或消耗牌", + }, }, c_cry_delete = { name = "://删除", text = { "{C:cry_code}永久{} 移除一个", "{C:cry_code}选中的{} 商店物品", - "{C:inactive,s:0.8}本次游戏中该物品不会再出现" - } + "{C:inactive,s:0.8}本次游戏中该物品不会再出现", + }, }, c_cry_divide = { name = "://分割", text = { "{C:cry_code}减半{} 当前商店中的", - "所有标价" - } + "所有标价", + }, }, c_cry_exploit = { name = "://利用", @@ -675,50 +675,50 @@ return { "", "可用指令:{C:cry_code}full house(葫芦){},{C:cry_code}flush(同花){},{C:cry_code}straight flush(同花顺){},{C:cry_code}four of a kind(四条){}", "", - "{C:cry_code}three of a kind(三条){},{C:cry_code}pair(对子){},{C:cry_code}two pair(两对){},{C:cry_code}high(高牌){}" - } + "{C:cry_code}three of a kind(三条){},{C:cry_code}pair(对子){},{C:cry_code}two pair(两对){},{C:cry_code}high(高牌){}", + }, }, c_cry_hook = { name = "://钩子", text = { "选择两张小丑牌,使它们 {C:cry_code}钩住{}", - "{C:inactive,s:0.8}其中一张被触发时,触发另一张(仅当两个效果的触发时机相同时有效)" - } + "{C:inactive,s:0.8}其中一张被触发时,触发另一张(仅当两个效果的触发时机相同时有效)", + }, }, c_cry_inst = { name = "://实例化", text = { "抽取与选中的牌{C:cry_code}同点数{}", "以及{C:cry_code}同花色{}的牌各一张", - "{C:inactive}(如果有可能的话){}" - } + "{C:inactive}(如果有可能的话){}", + }, }, c_cry_machinecode = { name = "://机器码", text = { - "" - } + "", + }, }, c_cry_malware = { name = "://木马", text = { "给所有的{C:cry_code}无版本手牌{} ", - "添加 {C:dark_edition}故障{}版本" - } + "添加 {C:dark_edition}故障{}版本", + }, }, c_cry_merge = { name = "://合并", text = { "将一张 {C:cry_code}消耗牌", - "与一张 {C:cry_code}手牌{} 合并" - } + "与一张 {C:cry_code}手牌{} 合并", + }, }, c_cry_multiply = { name = "://乘法", text = { "选择一张牌,使其所有数值{C:cry_code}翻倍{}", - "直到 {C:cry_code}回合结束{}" - } + "直到 {C:cry_code}回合结束{}", + }, }, c_cry_oboe = { name = "://偏差1", @@ -726,37 +726,37 @@ return { "打开的下一个 {C:cry_code}补充包{} 有", "{C:cry_code}#1#{} 张额外卡牌和", "{C:cry_code}#1#{} 次额外选择", - "{C:inactive}(当前为 {C:cry_code}+#2#{C:inactive})" - } + "{C:inactive}(当前为 {C:cry_code}+#2#{C:inactive})", + }, }, c_cry_patch = { name = "://补丁", text = { "从当前所有可见的物品中移除", - "贴纸和负面效果" - } + "贴纸和负面效果", + }, }, c_cry_payload = { name = "://载荷", text = { "下一个被击败的盲注", - "给与 {C:cry_code}X#1#{} 利息(乘法叠加)" - } + "给与 {C:cry_code}X#1#{} 利息(乘法叠加)", + }, }, c_cry_reboot = { name = "://重启", text = { "补充 {C:blue}手牌{} 和 {C:red}弃牌{} 次数,", "将{C:cry_code}所有{}牌返回牌堆", - "并抽取一组{C:cry_code}新的{}手牌" - } + "并抽取一组{C:cry_code}新的{}手牌", + }, }, c_cry_revert = { name = "://还原", text = { "将 {C:cry_code}游戏状态{} 回溯到", - "{C:cry_code}这一底注的开始时{}" - } + "{C:cry_code}这一底注的开始时{}", + }, }, c_cry_rework = { name = "://重制", @@ -766,118 +766,118 @@ return { "获得一个 {C:cry_code}升级的{} 版本", "{C:inactive,s:0.8}版本通过收藏中的顺序升级{}", "{C:inactive,s:0.8}基础,闪箔,镭射,多彩,负片,故障,马赛克,过曝,{}", - "{C:inactive,s:0.8}灰质琉璃,鎏金,模糊,噪声,星界,欢愉,双面,基础{}" - } + "{C:inactive,s:0.8}灰质琉璃,鎏金,模糊,噪声,星界,欢愉,双面,基础{}", + }, }, c_cry_run = { name = "://运行", text = { "在 {C:cry_code}盲注", - "期间拜访 {C:cry_code}商店" - } + "期间拜访 {C:cry_code}商店", + }, }, c_cry_seed = { name = "://种子", text = { "选择一张小丑牌或手牌", "使它们获得 {C:cry_code}灌铅{}效果", - "概率效果必然被触发" - } + "概率效果必然被触发", + }, }, c_cry_semicolon = { name = ";//", text = { "结束当前非Boss {C:cry_code}盲注{}", - "{C:cry_code}不获得金钱{}" - } + "{C:cry_code}不获得金钱{}", + }, }, c_cry_spaghetti = { name = "://意面", text = { "生成一张 {C:cry_code}故障版本{}的", - "食物小丑牌" - } + "食物小丑牌", + }, }, c_cry_variable = { name = "://变量", text = { "将 {C:cry_code}#1#{} 张选中的牌", "转换为 {C:cry_code}指令{} 下的牌型", - "可用指令:{C:cry_code}1~13,A,J,Q,K{}" - } - } + "可用指令:{C:cry_code}1~13,A,J,Q,K{}", + }, + }, }, Edition = { e_cry_astral = { name = "星界", text = { - "{X:dark_edition,C:white}^#1#{} 倍率" - } + "{X:dark_edition,C:white}^#1#{} 倍率", + }, }, e_cry_blur = { name = "模糊", text = { "{C:attention}重新触发{}此卡", "{C:green}#1# / #2#{} 的概率", - "重新触发 {C:attention}#3#{}次" - } + "重新触发 {C:attention}#3#{}次", + }, }, e_cry_double_sided = { name = "双面", text = { "此卡可以被{C:attention}翻转{},", - "以展示另一张不同的卡牌" - } + "以展示另一张不同的卡牌", + }, }, e_cry_glass = { label = "易碎", name = "灰质琉璃", text = { "{C:white,X:mult} X#3# {} 倍率", - "触发时{C:green}#1# / #2#{} 的概率不会被摧毁" - } + "触发时{C:green}#1# / #2#{} 的概率不会被摧毁", + }, }, e_cry_glitched = { name = "故障&_", text = { "此牌上的数值会{C:dark_edition}随机{}变动为", "{C:attention}X0.1{} 与 {C:attention}X10{}倍", - "{C:inactive}(如果可能的话){}" - } + "{C:inactive}(如果可能的话){}", + }, }, e_cry_gold = { label = "鎏金", name = "鎏金", text = { - "当使用或触发时额外{C:money}+$#1#{} " - } + "当使用或触发时额外{C:money}+$#1#{} ", + }, }, e_cry_m = { name = "欢愉", text = { "{C:mult}+#1#{} 倍率", - "真是太愉悦了~" - } + "真是太愉悦了~", + }, }, e_cry_mosaic = { name = "马赛克", text = { - "{X:chips,C:white} X#1# {} 筹码" - } + "{X:chips,C:white} X#1# {} 筹码", + }, }, e_cry_noisy = { name = "噪声", text = { - " " - } + " ", + }, }, e_cry_oversat = { name = "过曝", text = { "此卡上的所有数值都被{C:attention}翻倍{}", - "{C:inactive}(如果可能的话)" - } - } + "{C:inactive}(如果可能的话)", + }, + }, }, Enhanced = { m_cry_echo = { @@ -885,8 +885,8 @@ return { text = { "当计分时", "{C:green}#2# / #3#{} 几率", - "{C:attention}重新触发{} #1# 次" - } + "{C:attention}重新触发{} #1# 次", + }, }, m_cry_light = { name = "明亮牌", @@ -894,7 +894,7 @@ return { "当该牌计分时,每有{C:attention}#4#{} {C:inactive}(剩余#3#){}张", "其他计分牌,获得{X:mult,C:white}X#1#{}倍率,并", "将下次提升所需的数字增加{C:attention}5{}", - "{C:inactive}(当前 {X:mult,C:white}X#2#{C:inactive} 倍率)" + "{C:inactive}(当前 {X:mult,C:white}X#2#{C:inactive} 倍率)", }, }, }, @@ -903,8 +903,8 @@ return { name = "代码小丑", text = { "当选择{C:attention}盲注{}时", - "创造一张随机{C:dark_edition}负片{}{C:cry_code}代码牌{}" - } + "创造一张随机{C:dark_edition}负片{}{C:cry_code}代码牌{}", + }, }, ["j_cry_Double Scale"] = { name = "双重天平", @@ -912,24 +912,24 @@ return { "成长性{C:attention}小丑{}", "以{C:attention}平方{}速度增长", "{C:inactive,s:0.8}(例如 +1, +3, +6, +10){}", - "{C:inactive,s:0.8}(增长为 +1, +2, +3)" - } + "{C:inactive,s:0.8}(增长为 +1, +2, +3)", + }, }, j_cry_M = { name = "M", text = { "当选择{C:attention}盲注{}时", "创造一张{C:dark_edition}负片{}", - "{C:attention}开心小丑{}" - } + "{C:attention}开心小丑{}", + }, }, j_cry_Megg = { name = "M蛋", text = { "出售这张小丑来创造", "{C:attention}#2#{} 张开心小丑", - "在回合结束时增加 {C:attention}#1#{}" - } + "在回合结束时增加 {C:attention}#1#{}", + }, }, j_cry_Scalae = { name = "刻度", @@ -938,24 +938,24 @@ return { "为{C:attention}#1#{}次幂级", "在回合结束时使幂级成长提升{C:attention}#2#{}", "{C:inactive,s:0.8}(平方成长、立方成长、四次方、五次方以此类推)", - "{C:inactive,s:0.8}({C:attention,s:0.8}刻度{C:inactive,s:0.8}除外)" - } + "{C:inactive,s:0.8}({C:attention,s:0.8}刻度{C:inactive,s:0.8}除外)", + }, }, j_cry_adroit = { name = "灵巧小丑", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_altgoogol = { name = "怀旧 Googol 游戏牌", text = { "出售此牌以复制", "{C:attention}2{} 张最左侧的小丑", - "{C:inactive,s:0.8}不会复制怀旧 Googol 游戏牌{}" - } + "{C:inactive,s:0.8}不会复制怀旧 Googol 游戏牌{}", + }, }, j_cry_antennastoheaven = { name = "7-4 如指向天堂的天线", @@ -963,32 +963,32 @@ return { "每张被计入分数的{C:attention}7{}或{C:attention}4{}", "增加{X:chips,C:white} X#1# {}筹码", "{C:inactive}(当前已增加{X:chips,C:white}X#2# {C:inactive}筹码)", - "{C:inactive,s:0.8}(捏他ultrakill关卡名)" - } + "{C:inactive,s:0.8}(捏他ultrakill关卡名)", + }, }, j_cry_apjoker = { name = "AP 弹小丑", text = { - "对boss盲注提供{X:mult,C:white} X#1# {} 倍率" - } + "对boss盲注提供{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_arsonist = { name = "纵火犯", - text = { "打出{C:attention}葫芦{}牌型时,摧毁所有计分牌", }, + text = { "打出{C:attention}葫芦{}牌型时,摧毁所有计分牌" }, }, j_cry_astral_bottle = { name = "瓶中星球", text = { "当出售时, 应用 {C:dark_edition}星界{}", "和{C:attention}易腐{} 到一张", - "随机的 {C:attention}小丑牌{}" - } + "随机的 {C:attention}小丑牌{}", + }, }, j_cry_big_cube = { name = "大大方块", text = { - "{X:chips,C:white} X#1# {} 筹码" - } + "{X:chips,C:white} X#1# {} 筹码", + }, }, j_cry_biggestm = { name = "超大M", @@ -997,8 +997,8 @@ return { "如果 {C:attention}打出牌型{}", "是一个 {C:attention}#2#{}", "{C:inactive}(当前 {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}不是胖,只是骨架大。" - } + "{C:inactive,s:0.8}不是胖,只是骨架大。", + }, }, j_cry_blacklist = { name = "黑名单", @@ -1006,38 +1006,38 @@ return { "当手牌中有或者打出{C:attention}#1#{}时", "{C:chips}筹码{} 和 {C:mult}倍率{} 变为0", "如果牌组中没有{C:attention}#1#{},自毁", - "{C:inactive,s:0.8}不会改变牌型等级" - } + "{C:inactive,s:0.8}不会改变牌型等级", + }, }, j_cry_blender = { name = "Blender", text = { "使用{C:cry_code}代码牌{}时", - "获得一张 {C:attention}随机{}消耗牌" - } + "获得一张 {C:attention}随机{}消耗牌", + }, }, j_cry_blurred = { name = "模糊小丑", text = { "选择{C:attention}盲注{}时", - "增加{C:blue}+#1#{}出牌次数" - } + "增加{C:blue}+#1#{}出牌次数", + }, }, j_cry_bonk = { name = "咚~", text = { "每个{C:attention}小丑{}给予{C:chips}+#1#{}筹码", "如果{C:attention}牌型{}是{C:attention}#3#{},额外给予{C:chips}+#2#{}筹码", - "{C:inactive,s:0.8}开心小丑转而给予{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}筹码{}" - } + "{C:inactive,s:0.8}开心小丑转而给予{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}筹码{}", + }, }, j_cry_bonkers = { name = "癫狂小丑", text = { "如果出的牌中包含", "一个 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_bonusjoker = { name = "奖励小丑", @@ -1045,102 +1045,102 @@ return { "每张计分的{C:attention}奖励卡{}有", " {C:green}#1# / #2#{} 的几率", "增加一个{C:attention}小丑槽{}或者{C:attention}消耗槽{}", - "{C:inactive,s:0.8}(两种概率均等){}" - } + "{C:inactive,s:0.8}(两种概率均等){}", + }, }, j_cry_booster = { name = "补充包小丑", text = { - "商店{C:attention}+#1#{} 补充包槽位" - } + "商店{C:attention}+#1#{} 补充包槽位", + }, }, j_cry_boredom = { name = "无聊小丑", text = { "{C:green}#1# / #2#{} 概率", "率重新触发{C:attention}所有小丑牌{}和{C:attention}计分牌{}", - "{C:inactive,s:0.8}无法触发{C:attention}无聊小丑{}{}" - } + "{C:inactive,s:0.8}无法触发{C:attention}无聊小丑{}{}", + }, }, j_cry_brittle = { name = "脆脆糖", text = { "之后 {C:attention}#1#{} 次出牌,", - "随机添加 {C:attention}石头{}, {C:attention}黄金{}, 或 {C:attention}钢铁{}增强到最右边的记分牌" - } + "随机添加 {C:attention}石头{}, {C:attention}黄金{}, 或 {C:attention}钢铁{}增强到最右边的记分牌", + }, }, j_cry_bubblem = { name = "泡泡 M", text = { "如果打出的手牌包含{C:attention}#1#{}", "生成一张{C:dark_edition}闪箔{C:attention}开心小丑{}", - "{C:red,E:2}自毁{}" - } + "{C:red,E:2}自毁{}", + }, }, j_cry_busdriver = { name = "巴士司机", text = { "{C:green}#1# / #3#{} 概率 {C:mult}+#2#{} 倍率", - "或{C:green}1 /4{} 概率 {C:mult}-#2#{} 倍率" - } + "或{C:green}1 /4{} 概率 {C:mult}-#2#{} 倍率", + }, }, j_cry_candy_basket = { name = "糖果篮子", text = { "卖掉这张牌获得 {C:attention}#1#{} {C:cry_candy}张糖果", " 每击败 {C:attention}2{} 个盲注{C:attention}+#2#{} {C:cry_candy}糖果{}", - "击败{C:attention}Boss 盲注{}{C:attention}+#3#{} {C:cry_candy}糖果{}" - } + "击败{C:attention}Boss 盲注{}{C:attention}+#3#{} {C:cry_candy}糖果{}", + }, }, j_cry_candy_buttons = { name = "纽扣糖", text = { "之后的 {C:attention}#1#{} 次重掷", - "只花 {C:money}$1{}" - } + "只花 {C:money}$1{}", + }, }, j_cry_candy_cane = { name = "拐杖糖", text = { "之后 {C:attention}#1#{} 回合", - " 打出的牌被{C:attention}重新触发{}时获得{C:money}$#2#" - } + " 打出的牌被{C:attention}重新触发{}时获得{C:money}$#2#", + }, }, j_cry_candy_dagger = { name = "糖果匕首", text = { "选择 {C:attention}盲注{} 后", - "摧毁它左边的小丑,创造一张{C:cry_candy}糖果{}小丑" - } + "摧毁它左边的小丑,创造一张{C:cry_candy}糖果{}小丑", + }, }, j_cry_candy_sticks = { name = "棒棒糖", text = { "直到你打出 {C:attention}#1#{} 手牌", - "下个Boss盲注的效果失效" - } + "下个Boss盲注的效果失效", + }, }, j_cry_canvas = { name = "画布", text = { "右侧每有一张{C:blue}稀有度高于普通{}的小丑", - "所有左侧的小丑{C:attention}重新触发{}{C:attention}一次{}" - } + "所有左侧的小丑{C:attention}重新触发{}{C:attention}一次{}", + }, }, j_cry_caramel = { name = "焦糖", text = { "每打出一张牌时", "在得分时获得 {X:mult,C:white}X#1#{} 倍率", - "持续 {C:attention}#2#{} 回合" - } + "持续 {C:attention}#2#{} 回合", + }, }, j_cry_chad = { name = "硬汉", text = { "重新触发{C:attention}最左边{}的小丑", - "{C:attention}#1#{}次" - } + "{C:attention}#1#{}次", + }, }, j_cry_chili_pepper = { name = "辣椒", @@ -1148,8 +1148,8 @@ return { "回合结束时", "这个小丑获得{X:mult,C:white} X#2# {} 倍率", "{C:attention}#3#{}回合后自毁", - "(当前{X:mult,C:white} X#1# {C:inactive}倍率)" - } + "(当前{X:mult,C:white} X#1# {C:inactive}倍率)", + }, }, j_cry_chocolate_dice = { name = "巧克力十面骰", @@ -1157,16 +1157,16 @@ return { "击败Boss盲注后", "投掷一个{C:green}d10{} 的判定", "去开始一个{C:cry_ascendant,E:1}事件{}", - "{C:inactive}(当前: #1#)" - } + "{C:inactive}(当前: #1#)", + }, }, j_cry_circulus_pistoris = { name = "环形转轮", text = { "{X:dark_edition,C:white}^#1#{} 筹码, {X:dark_edition,C:white}^#1#{} 倍率", "如果{C:attention}正好{}剩余 #2#", - "手牌" - } + "手牌", + }, }, j_cry_circus = { name = "马戏团", @@ -1174,16 +1174,16 @@ return { "{C:red}稀有{}小丑每个提供 {X:mult,C:white} X#1# {} 倍率", "{C:cry_epic}史诗{}小丑每个提供 {X:mult,C:white} X#2# {} 倍率", "{C:legendary}传奇{}小丑每个提供 {X:mult,C:white} X#3# {} 倍率", - "{C:cry_exotic}域外{}小丑每个提供 {X:mult,C:white} X#4# {} 倍率" - } + "{C:cry_exotic}域外{}小丑每个提供 {X:mult,C:white} X#4# {} 倍率", + }, }, j_cry_clash = { name = "冲突", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{X:mult,C:white} X#1# {} 倍率" - } + "{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_clicked_cookie = { name = "被点击的饼干", @@ -1195,29 +1195,29 @@ return { j_cry_coin = { name = "加密货币", text = { - "出售小丑牌时随机获得{C:money}$#1#{}到{C:money}$#2#{}" - } + "出售小丑牌时随机获得{C:money}$#1#{}到{C:money}$#2#{}", + }, }, j_cry_compound_interest = { name = "利滚利", text = { "回合结束时,获得{C:money}#1#%{}利息", - "每次触发后,利息获取增加{C:money}#2#%{}" - } + "每次触发后,利息获取增加{C:money}#2#%{}", + }, }, j_cry_copypaste = { name = "复制/粘贴", text = { "使用{C:cry_code}代码牌{}时", - "{C:green}#1# / #2#{}概率将其复制回消耗牌槽" - } + "{C:green}#1# / #2#{}概率将其复制回消耗牌槽", + }, }, j_cry_cotton_candy = { name = "棉花糖", text = { "出售后相邻的", - "{C:attention}小丑{} 变为 {C:dark_edition}负片{}" - } + "{C:attention}小丑{} 变为 {C:dark_edition}负片{}", + }, }, j_cry_crustulum = { name = "蛋糕", @@ -1225,21 +1225,21 @@ return { "这张小丑每次在商店", "{C:attention}重掷{}时获得 {C:chips}+#2#{} 筹码", "{C:green}所有重掷免费{}", - "{C:inactive}(当前 {C:chips}+#1#{C:inactive} 筹码)" - } + "{C:inactive}(当前 {C:chips}+#1#{C:inactive} 筹码)", + }, }, j_cry_cryptidmoment = { name = " M 接龙", text = { "", - "卖掉这张卡时,每张{C:attention}小丑牌{}的售价增加 {C:money}$#1#{}" - } + "卖掉这张卡时,每张{C:attention}小丑牌{}的售价增加 {C:money}$#1#{}", + }, }, j_cry_cube = { name = "小小方块", text = { - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_curse_sob = { name = "啜泣", @@ -1247,16 +1247,16 @@ return { "{C:edition,E:1}你无法{} {C:cry_ascendant,E:1}逃跑...{}", "{C:edition,E:1}你无法{} {C:cry_ascendant,E:1}躲藏...{}", "{C:dark_edition,E:1}你无法逃脱...{}", - "{C:inactive}(必须有槽位){}" - } + "{C:inactive}(必须有槽位){}", + }, }, j_cry_cursor = { name = "光标", text = { "在商店购入卡牌时", "这张小丑{C:chips}+#2#{} 筹码", - "{C:inactive}(当前已{C:chips}+#1#{C:inactive} 筹码)" - } + "{C:inactive}(当前已{C:chips}+#1#{C:inactive} 筹码)", + }, }, j_cry_cut = { name = "剪切", @@ -1264,30 +1264,30 @@ return { "在 {C:attention}离开商店{}时", "这张小丑随机摧毁一张 {C:cry_code}代码牌{}", "并且增加 {X:mult,C:white} X#1# {} 倍率", - "{C:inactive}(当前已提供{X:mult,C:white} X#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前已提供{X:mult,C:white} X#2# {C:inactive} 倍率)", + }, }, j_cry_delirious = { name = "错乱小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_discreet = { name = "低调小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_doodlem = { name = "涂鸦 M", text = { "当{C:attention}选择盲注{}时", "创造2个随机{C:dark_edition}负片{} {C:attention}消耗牌{}", - "每有1个{C:attention}开心小丑{}创造1个额外的{C:attention}消耗牌" - } + "每有1个{C:attention}开心小丑{}创造1个额外的{C:attention}消耗牌", + }, }, j_cry_dropshot = { name = "一杆入洞", @@ -1295,29 +1295,29 @@ return { "出牌时,每有一张 {C:attention}不计分{}的 {V:1}#2#{}牌", "这张小丑牌增加 {X:mult,C:white} X#1# {} 倍率", "花色每回合改变", - "{C:inactive}(当前 {X:mult,C:white} X#3# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:mult,C:white} X#3# {C:inactive} 倍率)", + }, }, j_cry_dubious = { name = "可疑小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_duos = { name = "双重奏", text = { "{X:mult,C:white} X#1# {} 倍率如果出牌", - "手牌包含{C:attention}#2#" - } + "手牌包含{C:attention}#2#", + }, }, j_cry_duplicare = { name = "复制", text = { "每张{C:attention}小丑牌{}给予", - "{X:dark_edition,C:white}^#1#{} 倍率" - } + "{X:dark_edition,C:white}^#1#{} 倍率", + }, }, j_cry_effarcire = { name = "充盈", @@ -1325,8 +1325,8 @@ return { "选择{C:attention}盲注{}时", "将{C:green}整副牌{}抽入手牌", "{C:inactive,s:0.8}如果你在一倍速时无法掌控我,", - "{C:inactive,s:0.8}你就不配在二倍速时拥有我" - } + "{C:inactive,s:0.8}你就不配在二倍速时拥有我", + }, }, j_cry_energia = { name = "能量", @@ -1334,8 +1334,8 @@ return { "当获得一个{C:attention}标签{}时", "复制{C:attention}#1#{}个这个标签", "并下次{C:attention}复制{}的数量", - "增加{C:attention}#2#{}" - } + "增加{C:attention}#2#{}", + }, }, j_cry_equilib = { name = "王牌均衡", @@ -1343,59 +1343,59 @@ return { "小丑牌以{C:attention}收藏{}中的顺序出现", "出牌时创造{C:attention}#1#{} {C:dark_edition}负片{}小丑", "不会出现{C:cry_exotic,s:0.8}域外{C:inactive,s:0.8}或更稀有的小丑", - "{s:0.8}最后生成的小丑: {C:attention,s:0.8}#2#" - } + "{s:0.8}最后生成的小丑: {C:attention,s:0.8}#2#", + }, }, j_cry_error = { name = "{C:dark_edition}E{}{C:red}错误{}{C:dark_edition}O{}{C:red}R{}", text = { - "nan" - } + "nan", + }, }, j_cry_eternalflame = { name = "永恒之火", text = { "每出售一张牌,", "这张小丑获得{X:mult,C:white} X#1# {} 倍率", - "(当前{X:mult,C:white} X#2# {C:inactive}倍率)" - } + "(当前{X:mult,C:white} X#2# {C:inactive}倍率)", + }, }, j_cry_exoplanet = { name = "系外行星", text = { - "每张{C:dark_edition}镭射{}卡提供{C:mult}+#1#{} 倍率" - } + "每张{C:dark_edition}镭射{}卡提供{C:mult}+#1#{} 倍率", + }, }, j_cry_exponentia = { name = "指数", text = { "触发 {X:red,C:white} X 倍率 {} 时", "这张小丑获得 {X:dark_edition,C:white} ^#1# {} 倍率", - "{C:inactive}(当前 {X:dark_edition,C:white} ^#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:dark_edition,C:white} ^#2# {C:inactive} 倍率)", + }, }, j_cry_exposed = { name = "揭露", text = { "重新触发{C:attention}非人头牌{} ", "额外{C:attention}#1#{}次", - "所有 {C:attention}人头牌{} 都被削弱" - } + "所有 {C:attention}人头牌{} 都被削弱", + }, }, j_cry_facile = { name = "简易", text = { "{C:attention}#2#{} 张及以下的牌得分", "{X:dark_edition,C:white}^#1#{} 倍率", - "(重复触发算作多张)" - } + "(重复触发算作多张)", + }, }, j_cry_filler = { name = "填充物", text = { "", - "如果出的牌中包含{C:attention}#2# 提供{X:mult,C:white} X#1# {} 倍率" - } + "如果出的牌中包含{C:attention}#2# 提供{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_fleshpanopticon = { name = "血肉监牢", @@ -1404,16 +1404,16 @@ return { "当 {C:attention}Boss 盲注{} 被击败后,", "{C:red}自毁{}, 然后创建", "一张 {C:dark_edition}负片{} {C:spectral}真理之门{} ", - "{C:inactive,s:0.8}此等监牢……囚禁于吾?" - } + "{C:inactive,s:0.8}此等监牢……囚禁于吾?", + }, }, j_cry_flip_side = { name = "两副面孔", text = { "{C:dark_edition}双面{}小丑不触发正面效果", "转而触发反面效果", - "{C:attention}重新触发{}所有{C:dark_edition}双面{}小丑" - } + "{C:attention}重新触发{}所有{C:dark_edition}双面{}小丑", + }, }, j_cry_foodm = { name = "M当劳", @@ -1422,16 +1422,16 @@ return { "在 {C:attention}#2#{} 回合中{C:red,E:2}自毁{}", "当{C:attention}开心小丑{}被{C:attention}出售{}时增加{C:attention}#3#{}回合", "{C:inactive,s:0.8}2 双层芝士,2 麦香鸡{}", - "{C:inactive,s:0.8}1 大薯条,20 大蛋糕{}" - } + "{C:inactive,s:0.8}1 大薯条,20 大蛋糕{}", + }, }, j_cry_foolhardy = { name = "鲁莽小丑", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_formidiulosus = { name = "驱邪", @@ -1439,45 +1439,45 @@ return { "获得 {X:cry_cursed,C:white}诅咒{} 小丑时,将其摧毁", "离开商店时创造 {C:attention}#1#{}张 {C:dark_edition}负片{C:cry_candy}糖果{} ", "每有一张 {C:cry_candy}糖果{}小丑,{X:dark_edition,C:white}+^#2#{} 倍率", - "{C:inactive}(当前 {X:dark_edition,C:white}^#3#{C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:dark_edition,C:white}^#3#{C:inactive} 倍率)", + }, }, j_cry_foxy = { name = "奸猾小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_fractal = { name = "分形手指", text = { - "{C:attention}+#1#{} 手牌选择上限" - } + "{C:attention}+#1#{} 手牌选择上限", + }, }, j_cry_fspinner = { name = "指尖陀螺", text = { "当打出的牌型不是最常用的牌型时", "这张小丑牌增加{C:chips}+#2#{}筹码", - "{C:inactive}(当前{C:chips}+#1#{C:inactive}筹码)" - } + "{C:inactive}(当前{C:chips}+#1#{C:inactive}筹码)", + }, }, j_cry_fuckedup = { name = "烂逼小丑", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_gardenfork = { name = "7-1 小径分岔的花园", text = { "打出的{C:attention} A{} 和{C:attention} 7{}", "会在被计分时+{C:money}$#1#{} 块钱", - "{C:inactive,s:0.8}(一本书名,同时也捏他ultrakill关卡名)" - } + "{C:inactive,s:0.8}(一本书名,同时也捏他ultrakill关卡名)", + }, }, j_cry_gemino = { name = "双子", @@ -1485,8 +1485,8 @@ return { "在回合结束时", "最左侧的{C:attention}小丑{}", "所有数值{C:attention}翻倍{}", - "" - } + "", + }, }, j_cry_ghost = { name = "幽灵", @@ -1494,30 +1494,30 @@ return { "回合结束后", "{C:green}#1# / #2#{} 几率 ", "{C:attention}作祟{} 一张随机的 {C:attention}小丑", - "{C:green}#1# / #3#{} 几率{E:2,C:red}自毁 {}" - } + "{C:green}#1# / #3#{} 几率{E:2,C:red}自毁 {}", + }, }, j_cry_giggly = { name = "荒谬小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_goldjoker = { name = "纯金小丑", text = { "回合结束获得{C:money}#1#%{}利息", "每次{C:attention}黄金卡{}计分时", - "增加{C:money}#2#%{}利息" - } + "增加{C:money}#2#%{}利息", + }, }, j_cry_googol_play = { name = "Googol 游戏牌", text = { "{C:green}#1# / #2#{} 概率提供", - "{X:red,C:white} X#3# {} 倍率" - } + "{X:red,C:white} X#3# {} 倍率", + }, }, j_cry_happy = { name = ":D", @@ -1525,8 +1525,8 @@ return { "在回合结束时创造一张随机的{C:attention}小丑{}", "卖掉这张卡以", "创造一张随机的{C:attention}小丑{}", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, j_cry_happyhouse = { name = "快乐之家", @@ -1534,38 +1534,38 @@ return { "{X:dark_edition,C:white}^#1#{} 倍率当", " {C:attention}114{} 次出牌{}后", "{C:inactive}(当前 #2#/114){}", - "{C:inactive,s:0.8}没有地方能比得上家!{}" - } + "{C:inactive,s:0.8}没有地方能比得上家!{}", + }, }, j_cry_home = { name = "家园", text = { "{X:mult,C:white} X#1# {} 倍率", "如果打出的手牌包含", - "一个{C:attention}#2#" - } + "一个{C:attention}#2#", + }, }, j_cry_hunger = { name = "消耗之牌", text = { "使用一张{C:attention}消耗牌{}", - "获得{C:money}$#1#{}" - } + "获得{C:money}$#1#{}", + }, }, j_cry_iterum = { name = "再触", text = { "已经出过的牌重新触发{C:attention}#2#{}次", - "并且每张牌提供{X:mult,C:white} X#1# {} 倍率" - } + "并且每张牌提供{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_jawbreaker = { name = "硬糖", text = { "击败 {C:attention}Boss 盲注后{} ,", "让所有小丑数值变为{C:attention}两倍{} ", - "{E:2,C:red}自毁{}" - } + "{E:2,C:red}自毁{}", + }, }, j_cry_jimball = { name = "小丑球", @@ -1573,8 +1573,8 @@ return { "{C:attention}连续{}打出", "{C:attention}使用次数最多的牌型{}时", "获得 {X:mult,C:white} X#1# {} 倍率", - "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive}倍率)" - } + "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive}倍率)", + }, }, j_cry_jollysus = { name = "欢愉小丑…吗?", @@ -1582,46 +1582,46 @@ return { "当一张小丑被{C:attention}出售{}时", "创造一张{C:dark_edition}欢愉{}小丑", "{C:red}每回合只生效一次{}", - "{C:inactive}#1#{}" - } + "{C:inactive}#1#{}", + }, }, j_cry_kidnap = { name = "绑架", text = { "每回合结尾获得{C:money}$#2#{}", "每卖掉一张{C:attention}倍率{}或者{C:attention}筹码{}小丑时", - "增加{C:money}$#1#{}" - } + "增加{C:money}$#1#{}", + }, }, j_cry_kooky = { name = "怪诞小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_krustytheclown = { name = "小丑库斯提", text = { "当一张打出的牌被计分时", "这张牌增加{X:mult,C:white} X#1# {}倍率", - "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive}倍率)" - } + "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive}倍率)", + }, }, j_cry_kscope = { name = "万花筒", text = { "当击败{C:attention}Boss 盲注{}时", - "使一张随机{C:attention}小丑{}获得{C:dark_edition}多彩{}版本" - } + "使一张随机{C:attention}小丑{}获得{C:dark_edition}多彩{}版本", + }, }, j_cry_lightupthenight = { name = "7-2 掌灯破暗", text = { "每张 {C:attention}7 {}或 {C:attention}2{},", "在计分时提供{X:mult,C:white}X#1#{}倍率", - "{C:inactive,s:0.8}(捏他ultrakill关卡名)" - } + "{C:inactive,s:0.8}(捏他ultrakill关卡名)", + }, }, j_cry_longboi = { name = "怪物", @@ -1629,8 +1629,8 @@ return { "在回合结束时", "给未来的", "这张小丑牌 {X:mult,C:white}X#1#{} 倍率", - "{C:inactive}(当前 {X:mult,C:white}X#2#{C:inactive} 倍率){}" - } + "{C:inactive}(当前 {X:mult,C:white}X#2#{C:inactive} 倍率){}", + }, }, j_cry_loopy = { name = "环弯欢愉", @@ -1638,95 +1638,95 @@ return { "本回合每出售一张{C:attention}开心{}{C:attention}小丑{}", "{C:attention}重新触发一次{}所有小丑", "{C:inactive}(当前有{}{C:attention:} #1#{}{C:inactive} 次重新触发){}", - "{C:inactive,s:0.8}空间不够了...{}" - } + "{C:inactive,s:0.8}空间不够了...{}", + }, }, j_cry_lucky_joker = { name = "幸运小丑", text = { "{C:attention}幸运牌{}成功触发时", - "+ {C:money}$#1#{}" - } + "+ {C:money}$#1#{}", + }, }, j_cry_luigi = { name = "路易吉", text = { "所有小丑提供", - "{X:chips,C:white} X#1# {} 筹码" - } + "{X:chips,C:white} X#1# {} 筹码", + }, }, j_cry_m = { name = "m", text = { "当{C:attention}开心小丑{}被售出时", "这张小丑获得 {X:mult,C:white} X#1# {} 倍率", - "{C:inactive}(当前 {X:mult,C:white} X#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:mult,C:white} X#2# {C:inactive} 倍率)", + }, }, j_cry_macabre = { name = "毛骨悚然", text = { "当选择{C:attention}盲注{}时,除了{C:attention}开心小丑{}和{C:legendary}M 小丑{}", - "其余小丑全部摧毁,每摧毁一张小丑就获得一张{C:attention}开心小丑{}" - } + "其余小丑全部摧毁,每摧毁一张小丑就获得一张{C:attention}开心小丑{}", + }, }, j_cry_magnet = { name = "冰箱磁铁", text = { "回合结束时获得{C:money}$#1#{} ", "如果有少于或等于{C:attention}#3#{} 张小丑牌,获得 {X:money,C:white} X#2# {}", - "" - } + "", + }, }, j_cry_manic = { name = "狂躁小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_mario = { name = "马里奥", text = { "额外触发所有小丑", - "{C:attention}#1#{}次" - } + "{C:attention}#1#{}次", + }, }, j_cry_mask = { name = "面具", text = { "{C:attention}人头牌{}额外触发 {C:attention}#1#{} 次", - "所有{C:attention}非人头牌{}被削弱" - } + "所有{C:attention}非人头牌{}被削弱", + }, }, j_cry_maximized = { name = "速度拉满", text = { "所有{C:attention}人头牌{}都当作是{C:attention}K{},", - "所有{C:attention}数字牌{}都当作是{C:attention}10s{}," - } + "所有{C:attention}数字牌{}都当作是{C:attention}10s{},", + }, }, j_cry_maze = { name = "迷宫", text = { "所有出牌都看作是每回合{C:attention}第一次出牌{}", - "所有弃牌都看作是每回合{C:attention}第一次弃牌{}" - } + "所有弃牌都看作是每回合{C:attention}第一次弃牌{}", + }, }, j_cry_mellowcreme = { name = "南瓜糖", text = { "卖掉这张牌", - "所有的{C:attention}消耗牌{} 售价 {C:attention}X#1#倍" - } + "所有的{C:attention}消耗牌{} 售价 {C:attention}X#1#倍", + }, }, j_cry_membershipcard = { name = "会员卡", text = { "Cryptid Discord{}中的每个成员提供{X:mult,C:white}X#1#{} {C:attention}倍率", "{C:inactive}(当前{X:mult,C:white}X#2#{C:inactive} 倍率)", - "{C:blue,s:0.7}https://discord.gg/unbalanced{}" - } + "{C:blue,s:0.7}https://discord.gg/unbalanced{}", + }, }, j_cry_membershipcardtwo = { name = "老旧会员卡", @@ -1734,31 +1734,31 @@ return { "在{C:attention}Cryptid Discord{}中的每个成员", "提供{C:chips}+#1#{} Chips", "{C:inactive}(当前 {C:chips}+#2#{C:inactive} 筹码)", - "{C:blue,s:0.7}https://discord.gg/unbalanced{}" - } + "{C:blue,s:0.7}https://discord.gg/unbalanced{}", + }, }, j_cry_meteor = { name = "流星雨", text = { "每张{C:dark_edition}闪箔{}卡都会", - "提供{C:chips}+#1#{} 筹码" - } + "提供{C:chips}+#1#{} 筹码", + }, }, j_cry_mneon = { name = "霓虹 M", text = { "在回合结束时获得{C:money}$#2#{}", "回合结束时,每持有一张{C:attention}开心小丑{}或者{C:legendary}M 小丑{}", - "每回合报酬增加{C:money}$#1#{}。" - } + "每回合报酬增加{C:money}$#1#{}。", + }, }, j_cry_mondrian = { name = "蒙德里安", text = { "若回合结束没有使用弃牌", "该小丑获得{X:mult,C:white} X#1# {} 倍率", - "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive} 倍率)", + }, }, j_cry_monkey_dagger = { name = "猴子匕首", @@ -1767,23 +1767,23 @@ return { "摧毁左边的小丑", "并永久增加其售价的{C:attention}十倍{}", "到这张{C:chips}筹码{}", - "{C:inactive}(当前{C:chips}+#1#{C:inactive} 筹码)" - } + "{C:inactive}(当前{C:chips}+#1#{C:inactive} 筹码)", + }, }, j_cry_monopoly_money = { name = "大富翁纸币", text = { "{C:green}#1# / #2#{} 几率", "{C:attention}摧毁{}购买的牌", - "并且售出时 {C:attention}金钱减半" - } + "并且售出时 {C:attention}金钱减半", + }, }, j_cry_morse = { name = "摩尔斯电码", text = { "在回合结尾获得 {C:money}$#2#{}", - "每卖掉一张 {C:attention}增强卡牌{}增加 {C:money}$#1#{}" - } + "每卖掉一张 {C:attention}增强卡牌{}增加 {C:money}$#1#{}", + }, }, j_cry_mprime = { name = "使徒·十三", @@ -1793,16 +1793,16 @@ return { "每个 {C:attention}开心小丑{}或者{C:attention}M 小丑{} 提供 {X:dark_edition,C:white}^#1#{} 倍率", "每 {C:attention}卖出{}一张 {C:attention}开心小丑{}", "额外提供 {X:dark_edition,C:white}^#2#{}倍率", - "{C:inactive,s:0.8}(使徒·十三 除外)" - } + "{C:inactive,s:0.8}(使徒·十三 除外)", + }, }, j_cry_mstack = { name = "堆叠 M", text = { "每出售{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}开心小丑{}", "重新触发所有已打出的牌", - "{C:inactive}(当前{}{C:attention:} #1#{}{C:inactive} 次重新触发){}" - } + "{C:inactive}(当前{}{C:attention:} #1#{}{C:inactive} 次重新触发){}", + }, }, j_cry_multjoker = { name = "倍率小丑", @@ -1810,22 +1810,22 @@ return { "每张计分的倍率牌有", "{C:green}#1# / #2#{} 概率", "创造一张{C:spectral}神秘生物{}牌", - "(必须有空间)" - } + "(必须有空间)", + }, }, j_cry_necromancer = { name = "死灵法师", text = { "当{C:attention}售出{}一张小丑且其售价大于 {C:attention}$0{} 时", "获得一张 {C:attention}本局游戏售出过的{} {C:attention}随机小丑牌{} ", - "并将其 {C:attention}售价{} 变为 {C:attention}$0{}" - } + "并将其 {C:attention}售价{} 变为 {C:attention}$0{}", + }, }, j_cry_negative = { name = "负片小丑", text = { - "{C:dark_edition}+#1#{C:attention} 小丑{} 槽" - } + "{C:dark_edition}+#1#{C:attention} 小丑{} 槽", + }, }, j_cry_nice = { name = "nice", @@ -1833,22 +1833,22 @@ return { "如果出牌包含 {C:attention}6{} 和 {C:attention}9{}", "筹码{C:chips}+#1#{}", "{C:inactive,s:0.8}nice{}", - "" - } + "", + }, }, j_cry_night = { name = "夜晚", text = { "", - "最后一次出牌提供{X:dark_edition,C:white}^#1#{} 倍率,但自毁" - } + "最后一次出牌提供{X:dark_edition,C:white}^#1#{} 倍率,但自毁", + }, }, j_cry_nosound = { name = "7-3 无声无忆", text = { "每张打出的{C:attention}7{}触发{C:attention:}#1#{}次", - "{C:inactive,s:0.8}(捏他ultrakill关卡名)" - } + "{C:inactive,s:0.8}(捏他ultrakill关卡名)", + }, }, j_cry_notebook = { name = "M记事本=)", @@ -1856,8 +1856,8 @@ return { "每次{C:attention}重掷{}商店有{C:green} #1# / #2#{} 几率增加{C:dark_edition}+1{}个小丑牌槽位", "如果有{C:attention}#5#{}或以上{C:attention}开心小丑{}{C:green}百分百触发{}", "{C:red}每回合只触发一次{}", - "{C:inactive}(当前{C:dark_edition}+#3#{}{C:inactive} 并且#4#){}" - } + "{C:inactive}(当前{C:dark_edition}+#3#{}{C:inactive} 并且#4#){}", + }, }, j_cry_number_blocks = { name = "数字块", @@ -1865,74 +1865,74 @@ return { "在回合结束时获得 {C:money}$#1#{}", "每持有一张{C:attention}#3#{}手牌", "增加{C:money}$#2#{}的奖励,", - "每回合卡牌变化" - } + "每回合卡牌变化", + }, }, j_cry_nuts = { name = "坚果", text = { "{X:mult,C:white} X#1# {} 倍率如果出牌", "手牌包含", - "一个{C:attention}#2#" - } + "一个{C:attention}#2#", + }, }, j_cry_nutty = { name = "疯癫小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_oil_lamp = { name = "油灯", text = { "回合结束后", - "右边 {C:attention}小丑牌{}的数值 {C:attention}x#1#{}" - } + "右边 {C:attention}小丑牌{}的数值 {C:attention}x#1#{}", + }, }, j_cry_oldblueprint = { name = "残缺蓝图", text = { "复制右边小丑牌的能力", "每回合后有{C:green}#1# / #2#{} 的几率自毁", - "" - } + "", + }, }, j_cry_oldcandy = { name = "怀旧糖果", text = { "售出这张牌可以永久获得", - "{C:attention}+#1#{} 手牌上限" - } + "{C:attention}+#1#{} 手牌上限", + }, }, j_cry_oldinvisible = { name = "怀旧隐形小丑", text = { "每卖出 {C:attention} 4 {}张小丑牌,随机复制 {C:attention}一张{}小丑牌", "无法复制{s:0.8}怀旧隐形小丑{}(当前 #1#/4)", - "" - } + "", + }, }, j_cry_panopticon = { name = "全景监狱", text = { - "所有出牌都视为本回合{C:attention}最后一次出牌{}" - } + "所有出牌都视为本回合{C:attention}最后一次出牌{}", + }, }, j_cry_penetrating = { name = "渗透小丑", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_pickle = { name = "腌黄瓜", text = { "当跳过 {C:attention}盲注{} 时,创造{C:attention}#1#{} 个标签", - "当选择 {C:attention}盲注{} 时,则减少{C:red}#2#{} " - } + "当选择 {C:attention}盲注{} 时,则减少{C:red}#2#{} ", + }, }, j_cry_pirate_dagger = { name = "海盗匕首", @@ -1941,21 +1941,21 @@ return { "摧毁右边的小丑", "并获得其售价的{C:attention}四分之一{}", "作为{X:chips,C:white} X筹码 {}", - "{C:inactive}(当前{X:chips,C:white} X#1# {C:inactive} 筹码)" - } + "{C:inactive}(当前{X:chips,C:white} X#1# {C:inactive} 筹码)", + }, }, j_cry_pity_prize = { name = "遗憾奖", text = { - "当你跳过 {C:attention}补充包{} 获得一个随机的 {C:attention}标签{}" - } + "当你跳过 {C:attention}补充包{} 获得一个随机的 {C:attention}标签{}", + }, }, j_cry_pot_of_jokes = { name = "小丑之壶", text = { "{C:attention}#1#{}手牌上限,", - "每回合增加{C:blue}#2#{} " - } + "每回合增加{C:blue}#2#{} ", + }, }, j_cry_primus = { name = "素数", @@ -1963,38 +1963,38 @@ return { "这张小丑获得 {X:dark_edition,C:white} ^#1# {} 倍率", "如果手中打出的所有牌都是", "{C:attention}A{}、{C:attention}2{}、{C:attention}3{}、{C:attention}5{} 或 {C:attention}7{}", - "{C:inactive}(当前 {X:dark_edition,C:white} ^#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:dark_edition,C:white} ^#2# {C:inactive} 倍率)", + }, }, j_cry_python = { name = "Python", text = { "", "每使用一张{C:cry_code}代码牌{},这张牌增加{X:mult,C:white} X#1# {}倍率", - "{C:inactive}(当前已提供{X:mult,C:white} X#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前已提供{X:mult,C:white} X#2# {C:inactive} 倍率)", + }, }, j_cry_queens_gambit = { name = "后翼弃兵", text = { "打出{C:attention}皇家同花顺{}时", "摧毁{C:attention}计分的 Q{}", - "创造一张{C:dark_edition}负片{}{C:red}稀有{}{C:attention} 小丑{}" - } + "创造一张{C:dark_edition}负片{}{C:red}稀有{}{C:attention} 小丑{}", + }, }, j_cry_quintet = { name = "五重奏", text = { "{X:mult,C:white} X#1# {} 倍率如果出牌", "手牌包含", - "一个{C:attention}#2#" - } + "一个{C:attention}#2#", + }, }, j_cry_redbloon = { name = "红色气球", text = { - "{C:attention}#2#{}回合后{C:red,E:2}自毁{},并获得{C:money}$#1#{}" - } + "{C:attention}#2#{}回合后{C:red,E:2}自毁{},并获得{C:money}$#1#{}", + }, }, j_cry_redeo = { name = "回溯", @@ -2002,8 +2002,8 @@ return { "当花费{C:money}$#2#{} {C:inactive}($#3#){} 时", "{C:attention}-#1#{} 底注", "每次使用{C:attention,s:0.8}指数增加{}花费", - "{C:money,s:0.8}下次增加:{s:1,c:money}$#4#" - } + "{C:money,s:0.8}下次增加:{s:1,c:money}$#4#", + }, }, j_cry_rescribere = { name = "售者再择", @@ -2011,8 +2011,8 @@ return { "售出{C:attention}小丑{}时,", "将其效果添加到", "所有其他小丑上", - "{C:inactive,s:0.8}不影响其他售者再择{}" - } + "{C:inactive,s:0.8}不影响其他售者再择{}", + }, }, j_cry_reverse = { name = "反转牌", @@ -2021,14 +2021,14 @@ return { "用{C:dark_edition}镭射{C:attention}开心小丑{}", "填满所有空的小丑槽位 {C:inactive}(最多 100){}", "{C:red,E:2}自毁{}", - "{C:inactive,s:0.8}终极逆袭{}" - } + "{C:inactive,s:0.8}终极逆袭{}", + }, }, j_cry_rnjoker = { name = "随机小丑", text = { - "每次{C:attention}底注{}时随机能力" - } + "每次{C:attention}底注{}时随机能力", + }, }, j_cry_sacrifice = { name = "献祭", @@ -2038,60 +2038,60 @@ return { "和3个{C:attention}开心小丑{}", "", "{C:red}每回合生效一次{}", - "{C:inactive}#1#{}" - } + "{C:inactive}#1#{}", + }, }, j_cry_sapling = { name = "树苗", text = { "当{C:attention}#2#{} {C:inactive}[#1#]{} 张{C:attention}增强牌{}计分后", "卖掉此牌", - "以获得一张{C:cry_epic}史诗{} {C:attention}小丑{}" - } + "以获得一张{C:cry_epic}史诗{} {C:attention}小丑{}", + }, }, j_cry_savvy = { name = "精明小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_scrabble = { name = "拼M游戏", text = { "当打出手牌时,", "会有{C:green}#1#/#2#{}几率生成一张", - "{C:dark_edition}欢愉 {C:green}罕见{}小丑" - } + "{C:dark_edition}欢愉 {C:green}罕见{}小丑", + }, }, j_cry_seal_the_deal = { name = "契约已成", text = { "打出本回合{C:attention}最后一手牌{}时,", - "每张计分的卡获得{C:attention}随机蜡封{}" - } + "每张计分的卡获得{C:attention}随机蜡封{}", + }, }, j_cry_shrewd = { name = "敏锐小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_silly = { name = "傻傻小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_smallestm = { name = "超小M", text = { "打出 {C:attention}#1#{} 时", "创造一个 {C:cry_jolly}M 标签{}", - "{C:inactive,s:0.8}好吧,基本上我很小" - } + "{C:inactive,s:0.8}好吧,基本上我很小", + }, }, j_cry_soccer = { name = "合众为一", @@ -2100,8 +2100,8 @@ return { "{C:attention}+#1#{} 补充包槽位", "{C:attention}+#1#{} 手牌上限", "{C:attention}+#1#{} 消耗牌槽位", - "{C:attention}+#1#{} 商店栏位" - } + "{C:attention}+#1#{} 商店栏位", + }, }, j_cry_spaceglobe = { name = "寰宇天体仪", @@ -2109,8 +2109,8 @@ return { "当打出{C:attention}#3#{}{C:attention}牌型{}时", "获得{X:chips,C:white}X#2#{} 筹码", "每次触发变化牌型", - "{C:inactive}(当前{} {X:chips,C:white}X#1#{} {C:inactive}筹码){}" - } + "{C:inactive}(当前{} {X:chips,C:white}X#1#{} {C:inactive}筹码){}", + }, }, j_cry_spectrogram = { name = "频谱", @@ -2124,22 +2124,22 @@ return { text = { "离开{C:attention}商店{}时", "随机复制一张{C:attention}小丑{}并增加{C:dark_edition}负片{}", - "{C:inactive,s:0.8}不复制镜像{}" - } + "{C:inactive,s:0.8}不复制镜像{}", + }, }, j_cry_spy = { name = "间谍", text = { "{X:mult,C:white} X#2# {} 倍率, {C:dark_edition}+1{C:attention} 小丑槽{} ", - "{C:inactive} #1# 是间谍!" - } + "{C:inactive} #1# 是间谍!", + }, }, j_cry_stardust = { name = "星尘", text = { "{C:dark_edition}多彩{}卡", - "每张提供{X:mult,C:white}X#1#{} 倍率" - } + "每张提供{X:mult,C:white}X#1#{} 倍率", + }, }, j_cry_stella_mortis = { name = "星逝", @@ -2147,85 +2147,85 @@ return { "{C:attention}商店{}结束时", "摧毁一张随机{C:planet}星球{}牌", "并在获得 {X:dark_edition,C:white} ^#1# {} 倍率", - "{C:inactive}(当前 {X:dark_edition,C:white} ^#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:dark_edition,C:white} ^#2# {C:inactive} 倍率)", + }, }, j_cry_stronghold = { name = "堡垒", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{X:mult,C:white} X#1# {} 倍率" - } + "{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_subtle = { name = "微妙小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_supercell = { name = "Supercell", text = { "{C:chips}+#1#{} 筹码, {C:mult}+#1#{} 倍率,", "{X:chips,C:white}X#2#{} 筹码, {X:mult,C:white}X#2#{} 倍率", - "在回合结束时获得 {C:money}$#3#{}" - } + "在回合结束时获得 {C:money}$#3#{}", + }, }, j_cry_sus = { name = "sus小丑", text = { "在回合结束时,{C:attention}随机复制{}一张手牌", "摧毁其他所有手牌", - "{C:hearts,s:0.8}优先选择红桃K{}" - } + "{C:hearts,s:0.8}优先选择红桃K{}", + }, }, j_cry_swarm = { name = "虫群", text = { "{X:mult,C:white} X#1# {} 倍率如果出牌", "手牌包含", - "一个{C:attention}#2#" - } + "一个{C:attention}#2#", + }, }, j_cry_sync_catalyst = { name = "同步催化剂", text = { "平衡 {C:chips}筹码{} 和 {C:mult}倍率{}", - "{C:inactive,s:0.8}嘿!我之前见过这个!(等离子牌组效果)" - } + "{C:inactive,s:0.8}嘿!我之前见过这个!(等离子牌组效果)", + }, }, j_cry_tax_fraud = { name = "逃税", text = { "回合结束后", "每有一个 {C:attention}租用小丑{}", - "获得 {C:attention}$#1#{}" - } + "获得 {C:attention}$#1#{}", + }, }, j_cry_tenebris = { name = "暗黑", text = { "{C:dark_edition}+#1#{C:attention} 小丑{}槽", - "在回合结束时获得 {C:money}$#2#{}" - } + "在回合结束时获得 {C:money}$#2#{}", + }, }, j_cry_translucent = { name = "半透明小丑", text = { "卖掉这张小丑时,随机复制一张小丑", "并且添加易腐贴纸和香蕉贴纸", - "(不会复制对应小丑的腐烂进度)" - } + "(不会复制对应小丑的腐烂进度)", + }, }, j_cry_treacherous = { name = "诡谲小丑", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_trick_or_treat = { name = "不给糖就捣蛋", @@ -2233,52 +2233,52 @@ return { " {C:attention}出售时{}:", "{C:green}#1# / #2#{} 几率创建 {C:attention}2{}个 {C:cry_candy}糖果", "否则 创建一个 {X:cry_cursed,C:white}诅咒小丑{} ", - "{C:inactive}(可以溢出)" - } + "{C:inactive}(可以溢出)", + }, }, j_cry_tricksy = { name = "诡诈小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:chips}+#1#{} 筹码" - } + "{C:chips}+#1#{} 筹码", + }, }, j_cry_triplet_rhythm = { name = "三琴定音", text = { "计分牌中刚好有", " {C:attention}3 张 3 {}时", - "提供{X:mult,C:white} X#1# {} 倍率" - } + "提供{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_tropical_smoothie = { name = "热带风味冰沙", text = { "卖掉这张牌", - "让所拥有的小丑数值{C:attention}X1.5{}" - } + "让所拥有的小丑数值{C:attention}X1.5{}", + }, }, j_cry_unity = { name = "团结", text = { "{X:mult,C:white} X#1# {} 倍率如果出牌", "手牌包含", - "一个{C:attention}#2#" - } + "一个{C:attention}#2#", + }, }, j_cry_universe = { name = "宇宙", text = { "每张{C:dark_edition}星界{} ", - "提供 {X:dark_edition,C:white}^#1#{} 倍率" - } + "提供 {X:dark_edition,C:white}^#1#{} 倍率", + }, }, j_cry_universum = { name = "寰宇", text = { "{C:attention}牌型{}升级时获得", - "{X:red,C:white} X#1# {} 倍率和 {X:blue,C:white} X#1# {} 筹码" - } + "{X:red,C:white} X#1# {} 倍率和 {X:blue,C:white} X#1# {} 筹码", + }, }, j_cry_unjust_dagger = { name = "不公匕首", @@ -2287,8 +2287,8 @@ return { "摧毁左边的小丑", "并获得其售价的{C:attention}五分之一{}", "作为{X:mult,C:white} X倍率 {}", - "{C:inactive}(当前{X:mult,C:white} X#1# {C:inactive} 倍率)" - } + "{C:inactive}(当前{X:mult,C:white} X#1# {C:inactive} 倍率)", + }, }, j_cry_verisimile = { name = "虚实", @@ -2297,8 +2297,8 @@ return { "{C:green}成功{}触发时,", "这张小丑获得{X:red,C:white}X 倍率{}", "等于其列出的{C:attention}概率", - "{C:inactive}(当前 {X:mult,C:white} X#1# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:mult,C:white} X#1# {C:inactive} 倍率)", + }, }, j_cry_virgo = { name = "室女座", @@ -2307,29 +2307,29 @@ return { "该小丑增加 {C:money}$#1#{} {C:attention}售价{}", "出售这张牌时", "每 {C:money}$4{} 的 {C:attention}出售价值{}{C:dark_edition}创造一张多彩{} {C:attention}开心小丑{},", - " {C:inactive}(至少 1){}" - } + " {C:inactive}(至少 1){}", + }, }, j_cry_wacky = { name = "搞怪小丑", text = { "如果出的牌中包含 {C:attention}#2#", - "{C:red}+#1#{} 倍率" - } + "{C:red}+#1#{} 倍率", + }, }, j_cry_waluigi = { name = "瓦路易吉", text = { "所有小丑提供", - "{X:mult,C:white} X#1# {} 倍率" - } + "{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_wario = { name = "瓦里奥", text = { "触发任意小丑时", - "获得{C:money}$#1#{}" - } + "获得{C:money}$#1#{}", + }, }, j_cry_wee_fib = { name = "微波那契数列", @@ -2338,24 +2338,24 @@ return { "{C:mult}+#2#{} 倍率,当打出的每张", "{C:attention}A{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, 或 {C:attention}8{}", "计分时", - "{C:inactive}(当前 {C:mult}+#1#{C:inactive} 倍率)" - } + "{C:inactive}(当前 {C:mult}+#1#{C:inactive} 倍率)", + }, }, j_cry_weegaming = { name = "2D", text = { "每张计分的2", "重新触发 {C:attention:}#1#{} 次", - "{C:inactive,s:0.8}我们身处游戏中吗 {}" - } + "{C:inactive,s:0.8}我们身处游戏中吗 {}", + }, }, j_cry_wheelhope = { name = "希望之轮", text = { "当{C:attention}命运之轮{}效果失败", "这张牌获得{X:mult,C:white} X#1# {} 倍率", - "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前{X:mult,C:white} X#2# {C:inactive} 倍率)", + }, }, j_cry_whip = { name = "长鞭", @@ -2363,24 +2363,24 @@ return { "这张小丑获得 {X:mult,C:white} X#1# {} 倍率", "如果 {C:attention}出牌手牌{} 包含", "不同花色的{C:attention}2{} 和 {C:attention}7{}", - "{C:inactive}(当前 {X:mult,C:white} X#2# {C:inactive} 倍率)" - } + "{C:inactive}(当前 {X:mult,C:white} X#2# {C:inactive} 倍率)", + }, }, j_cry_wrapped = { name = "包裹糖果", text = { "{C:attention}#1#{} 回合后", "创建一个随机的{C:attention}食物小丑{}", - "{C:red,E:2}自毁{}" - } + "{C:red,E:2}自毁{}", + }, }, j_cry_wtf = { name = "我操!?", text = { "如果打出的手牌包含", "一个 {C:attention}#2#", - "{X:mult,C:white} X#1# {} 倍率" - } + "{X:mult,C:white} X#1# {} 倍率", + }, }, j_cry_zooble = { name = "祖波", @@ -2388,7 +2388,7 @@ return { "打出并计分的牌中,", "每有一个{C:attention}不同点数{},获得{C:mult}+#2#{}倍率", "{C:inactive}(当前{C:mult}+#1#{C:inactive}倍率)", - "{C:inactive}(包含顺子的出牌不触发)" + "{C:inactive}(包含顺子的出牌不触发)", }, }, }, @@ -2397,172 +2397,172 @@ return { name = "香蕉", text = { "{C:green}每回合#1#/#2#{}概率被", - "摧毁" - } + "摧毁", + }, }, blurred_sdm0 = { name = "a", text = { - "{C:inactive,s:0.8}我讨厌这张牌- SDM_0, 2024{}" - } + "{C:inactive,s:0.8}我讨厌这张牌- SDM_0, 2024{}", + }, }, cry_azure_seal = { name = "蔚蓝蜡封", text = { "打出附带该蜡封的牌时", "{C:red}摧毁{}这张牌", - "之后创造 {C:attention}#1#{} 张 {C:dark_edition}负片{}{C:planet}对应牌型的星球牌{}" - } + "之后创造 {C:attention}#1#{} 张 {C:dark_edition}负片{}{C:planet}对应牌型的星球牌{}", + }, }, cry_banana_booster = { name = "香蕉补充包", text = { "包中的所有卡牌", - "都带有{C:attention}香蕉{}贴纸" - } + "都带有{C:attention}香蕉{}贴纸", + }, }, cry_banana_consumeable = { name = "香蕉消耗牌", text = { "{C:green}#1# / #2#{}概率", - "使用时无效" - } + "使用时无效", + }, }, cry_banana_voucher = { name = "香蕉优惠券", text = { "每回合{C:green}#1# / #2#{}概率", - "失去此券" - } + "失去此券", + }, }, cry_eternal_booster = { name = "永恒补充包", text = { "包中的所有卡牌", - "都带有{C:attention}永恒{}贴纸" - } + "都带有{C:attention}永恒{}贴纸", + }, }, cry_eternal_voucher = { name = "永恒优惠券", text = { - "不能被摧毁" - } + "不能被摧毁", + }, }, cry_flickering = { name = "闪烁", text = { "{C:attention}#1#{} 次触发后摧毁", - "{C:inactive}(剩余{C:attention}#2#{C:inactive} 次)" - } + "{C:inactive}(剩余{C:attention}#2#{C:inactive} 次)", + }, }, cry_flickering_desc = { name = "闪烁", text = { - "{C:attention}#1#{} 次触发后摧毁" - } + "{C:attention}#1#{} 次触发后摧毁", + }, }, cry_green_seal = { name = "秩绿蜡封", text = { "仅当被打出且不计分时", "创造一张 {C:cry_code}代码{} 卡牌", - "{C:inactive}(必须有空间)" - } + "{C:inactive}(必须有空间)", + }, }, cry_hooked = { name = "连锁", text = { "当这个小丑被{C:cry_code}触发{}时,", - "触发{C:cry_code}#1#{}" - } + "触发{C:cry_code}#1#{}", + }, }, cry_https_disabled = { name = "M", text = { - "{C:attention,s:0.7}更新{s:0.7} 默认情况下被禁用 ({C:attention,s:0.7}HTTPS模块{s:0.7})" - } + "{C:attention,s:0.7}更新{s:0.7} 默认情况下被禁用 ({C:attention,s:0.7}HTTPS模块{s:0.7})", + }, }, cry_perishable_booster = { name = "易腐", text = { "包中的所有卡牌", - "都带有{C:attention}易腐{}贴纸" - } + "都带有{C:attention}易腐{}贴纸", + }, }, cry_perishable_consumeable = { name = "易腐消耗牌", text = { - "回合结束时被削弱" - } + "回合结束时被削弱", + }, }, cry_perishable_voucher = { name = "易腐优惠券", text = { "{C:attention}#1#{} 回合后被削弱", - "{C:inactive}({C:attention}#2#{C:inactive} 剩余)" - } + "{C:inactive}({C:attention}#2#{C:inactive} 剩余)", + }, }, cry_pinned_booster = { name = "固定补充包", text = { "包中的所有卡牌", - "都带有{C:attention}固定{}贴纸" - } + "都带有{C:attention}固定{}贴纸", + }, }, cry_pinned_consumeable = { name = "固定消耗牌", text = { "不能使用其他", - "非{C:attention}固定{}消耗牌" - } + "非{C:attention}固定{}消耗牌", + }, }, cry_pinned_voucher = { name = "固定优惠券", text = { "在商店中保留", - "直到被兑换" - } + "直到被兑换", + }, }, cry_possessed = { name = "作祟", text = { "{C:attention}禁用{} 此牌效果", "如果可能的话{C:attention}反转{}此牌的效果", - "随着 {C:attention}幽灵{}的摧毁而摧毁" - } + "随着 {C:attention}幽灵{}的摧毁而摧毁", + }, }, cry_rental_booster = { name = "租赁补充包", text = { "包中的所有卡牌", - "都带有{C:attention}租赁{}贴纸" - } + "都带有{C:attention}租赁{}贴纸", + }, }, cry_rental_consumeable = { name = "租赁消耗牌", text = { - "回合结束时和使用时失去 {C:money}$#1#{}" - } + "回合结束时和使用时失去 {C:money}$#1#{}", + }, }, cry_rental_voucher = { name = "租赁优惠券", text = { - "回合结束时失去 {C:money}$#1#{}" - } + "回合结束时失去 {C:money}$#1#{}", + }, }, cry_rigged = { name = "灌铅", text = { "这张小丑或手牌上{C:cry_code}所有的{}概率效果", - "都{C:cry_code}必定触发" - } + "都{C:cry_code}必定触发", + }, }, ev_cry_choco0 = { name = "", text = { "激活事件后", - "{C:cry_ascendant,E:1}事件{} 的具体信息将会出现" - } + "{C:cry_ascendant,E:1}事件{} 的具体信息将会出现", + }, }, ev_cry_choco1 = { name = "1: 恶灵附身", @@ -2571,8 +2571,8 @@ return { "{C:green}1 / 3{} 几率获得闪烁", "创造一张 {C:attention}幽灵", "{C:inactive,s:0.7}你被幽灵附身了", - "{C:inactive,s:0.7}意识时而清醒,时而模糊" - } + "{C:inactive,s:0.7}意识时而清醒,时而模糊", + }, }, ev_cry_choco10 = { name = "10: 珍贵古董", @@ -2581,8 +2581,8 @@ return { "出现在商店 {C:attention}优惠券{}槽位", "只有作为商店 {C:attention}最后一件物品{} 时才能购买", "{C:inactive,s:0.7}你已经引起了遗物之灵的注意,", - "{C:inactive,s:0.7}但想要平息它,可没那么简单" - } + "{C:inactive,s:0.7}但想要平息它,可没那么简单", + }, }, ev_cry_choco2 = { name = "2: 鬼屋", @@ -2591,8 +2591,8 @@ return { "商店中只能 {C:attention}重掷{} 一次", "{C:attention}优惠券{} 售价翻倍", "{C:inactive,s:0.7}幽灵们已经占领这里!", - "{C:inactive,s:0.7}千万别碰任何东西,快点逃出去!" - } + "{C:inactive,s:0.7}千万别碰任何东西,快点逃出去!", + }, }, ev_cry_choco3 = { name = "3: 女巫药剂", @@ -2602,8 +2602,8 @@ return { "否则 {C:attention}所有的{} 减益效果都会在这个{C:attention}底注{}生效", "{C:inactive,s:0.7}你被女巫绑架了!", "{C:inactive,s:0.7}她盯着你,递上三瓶药剂", - "{C:inactive,s:0.7}选一个吧,不然她可要替你做决定了。" - } + "{C:inactive,s:0.7}选一个吧,不然她可要替你做决定了。", + }, }, ev_cry_choco4 = { name = "4: 月之深渊", @@ -2612,8 +2612,8 @@ return { "变为随机的 {C:club}梅花{} 人头牌", "将 {C:attention}倍率{} 除以打出人头牌的数量", "{C:inactive,s:0.7}即便是心地善良、", - "{C:inactive,s:0.7}夜晚虔诚祈祷之人……" - } + "{C:inactive,s:0.7}夜晚虔诚祈祷之人……", + }, }, ev_cry_choco5 = { name = "5: 吸血鬼", @@ -2622,16 +2622,16 @@ return { "并有{C:green}1 / 3{} 几率摧毁", "{C:heart}红桃{} 和 {C:diamond}方块{} 卡牌", "{C:inactive,s:0.7}夜深人静时,你必须更加谨慎,", - "{C:inactive,s:0.7,E:1}因为它们在阴影中{C:inactive,s:0.7} 伺机满足自己的饥渴……" - } + "{C:inactive,s:0.7,E:1}因为它们在阴影中{C:inactive,s:0.7} 伺机满足自己的饥渴……", + }, }, ev_cry_choco6 = { name = "6: 选一个吧", text = { "{C:attention}回合结束{}打开一个随机的{C:attention}补充包{} ", "{C:inactive,s:0.7}在你漫步街道时", - "{C:inactive,s:0.7}突然发现一箱各式各样的补充包。不妨来一个吧!" - } + "{C:inactive,s:0.7}突然发现一箱各式各样的补充包。不妨来一个吧!", + }, }, ev_cry_choco7 = { name = "7: 节日气氛", @@ -2640,8 +2640,8 @@ return { "每回合商店有一个 {C:attention}不给糖就捣蛋{}", "获得{C:cry_candy}糖果{} 时,得到{C:money}$3{}", "{C:inactive,s:0.7}整个社区都为恐怖的盛会装饰一新,", - "{C:inactive,s:0.7}快来享受这节日气氛吧!" - } + "{C:inactive,s:0.7}快来享受这节日气氛吧!", + }, }, ev_cry_choco8 = { name = "8: 糖果雨", @@ -2649,8 +2649,8 @@ return { "击败 {C:attention}盲注{} 后, 每剩余一次出牌获得 1 个{C:cry_candy}糖果{}", "当获得一个{C:cry_candy}糖果{}后,获得一个 {C:attention}食物小丑{}", "{C:inactive,s:0.7}糖果从天而降!", - "{C:inactive,s:0.7,E:1}快点,抓住你能抓到的所有糖果!" - } + "{C:inactive,s:0.7,E:1}快点,抓住你能抓到的所有糖果!", + }, }, ev_cry_choco9 = { name = "9: 鬼魅财富", @@ -2659,8 +2659,8 @@ return { "所有赚到的 {C:money}钱{} 都变为 {C:attention}双倍", "{C:inactive,s:0.7}你已故亲戚的幽灵在午夜时分来访!", "{C:inactive,s:0.7}他们默默地将一袋钱放在你的手中,", - "{C:inactive,s:0.7}温暖一笑,随即化为虚影消散在空气中~" - } + "{C:inactive,s:0.7}温暖一笑,随即化为虚影消散在空气中~", + }, }, food_jokers = { name = "食物小丑", @@ -2676,82 +2676,82 @@ return { "{s:0.8}爆米花袋,火鸡晚餐,咖啡,", "{s:0.8}蜡烛服务,燃烧的西瓜,", "{s:0.8}燃烧的樱桃,软玉米饼,脆玉米饼,", - "{s:0.8}玉米片,幽灵可乐,汉堡,披萨" - } + "{s:0.8}玉米片,幽灵可乐,汉堡,披萨", + }, }, p_cry_code_jumbo_1 = { name = "巨型代码包", text = { "选择 {C:attention}#1#{} 张最多", - "{C:attention}#2#{C:cry_code} 代码{} 卡牌" - } + "{C:attention}#2#{C:cry_code} 代码{} 卡牌", + }, }, p_cry_code_mega_1 = { name = "超级代码包", text = { "选择 {C:attention}#1#{} 张最多", - "{C:attention}#2#{C:cry_code} 代码{} 卡牌" - } + "{C:attention}#2#{C:cry_code} 代码{} 卡牌", + }, }, p_cry_code_normal_1 = { name = "代码补充包", text = { "选择 {C:attention}#1#{} 张最多", - "{C:attention}#2#{C:cry_code} 代码{} 卡牌" - } + "{C:attention}#2#{C:cry_code} 代码{} 卡牌", + }, }, p_cry_code_normal_2 = { name = "代码补充包", text = { "选择 {C:attention}#1#{} 张最多", - "{C:attention}#2#{C:cry_code} 代码{} 卡牌" - } + "{C:attention}#2#{C:cry_code} 代码{} 卡牌", + }, }, p_cry_empowered = { name = "究极幻灵包", text = { "选择 {C:attention}#1#{} 张,最多", "{C:attention}#2#{C:spectral} 幻灵{}牌", - "{s:0.8,C:inactive}(由强化标签生成)" - } + "{s:0.8,C:inactive}(由强化标签生成)", + }, }, p_cry_meme_1 = { name = "玩梗包1", text = { "选择 {C:attention}#1#{} 张,最多", - "可达 {C:attention}#2# 张玩梗的小丑{}" - } + "可达 {C:attention}#2# 张玩梗的小丑{}", + }, }, p_cry_meme_three = { name = "玩梗包3", text = { "选择 {C:attention}#1#{} 张,最多", - "可达 {C:attention}#2# 张玩梗的小丑{}" - } + "可达 {C:attention}#2# 张玩梗的小丑{}", + }, }, p_cry_meme_two = { name = "玩梗包2", text = { "选择 {C:attention}#1#{} 张,最多", - "可达 {C:attention}#2# 张玩梗的小丑{}" - } + "可达 {C:attention}#2# 张玩梗的小丑{}", + }, }, undiscovered_code = { name = "未发现", text = { "在未设定的", "游戏中购买或使用", - "此卡以了解其作用" - } + "此卡以了解其作用", + }, }, undiscovered_unique = { name = "未发现", text = { "在未设定的", "游戏中购买或使用", - "此卡以了解其作用" - } - } + "此卡以了解其作用", + }, + }, }, Planet = { c_cry_Kaikki = { @@ -2762,8 +2762,8 @@ return { "{C:attention}#1#{},", "{C:attention}#2#{},", "以及 {C:attention}#3#{}", - "(芬兰语万物)" - } + "(芬兰语万物)", + }, }, c_cry_Klubi = { name = "Klubi", @@ -2773,8 +2773,8 @@ return { "{C:attention}#1#{},", "{C:attention}#2#{},", "以及 {C:attention}#3#{}", - "(芬兰语Club)" - } + "(芬兰语Club)", + }, }, c_cry_Lapio = { name = "Lapio", @@ -2784,8 +2784,8 @@ return { "{C:attention}#1#{},", "{C:attention}#2#{},", "以及 {C:attention}#3#{}", - "(芬兰语Spade)" - } + "(芬兰语Spade)", + }, }, c_cry_Sydan = { name = "Sydan", @@ -2795,8 +2795,8 @@ return { "{C:attention}#1#{},", "{C:attention}#2#{},", "以及 {C:attention}#3#{}", - "(芬兰语Heart)" - } + "(芬兰语Heart)", + }, }, c_cry_Timantti = { name = "Timantti", @@ -2806,8 +2806,8 @@ return { "{C:attention}#1#{},", "{C:attention}#2#{},", "以及 {C:attention}#3#{}", - "(芬兰语Diamond)" - } + "(芬兰语Diamond)", + }, }, c_cry_asteroidbelt = { name = "小行星带", @@ -2815,8 +2815,8 @@ return { "{S:0.8}({S:0.8,V:1}等级.#1#{S:0.8}){} 升级", "{C:attention}#2#", "{C:mult}+#3#{} 倍率和", - "{C:chips}+#4#{} 筹码" - } + "{C:chips}+#4#{} 筹码", + }, }, c_cry_marsmoons = { name = "火卫一和土卫二", @@ -2824,8 +2824,8 @@ return { "{S:0.8}({S:0.8,V:1}等级.#1#{S:0.8}){} 升级", "{C:attention}#2#", "{C:mult}+#3#{} 倍率和", - "{C:chips}+#4#{} 筹码" - } + "{C:chips}+#4#{} 筹码", + }, }, c_cry_nstar = { name = "中子星", @@ -2833,16 +2833,16 @@ return { "本局游戏中", "每使用过一张中子星", "升级一次随机扑克牌型", - "{C:inactive}(当前{C:attention} #1#{C:inactive}){}" - } + "{C:inactive}(当前{C:attention} #1#{C:inactive}){}", + }, }, c_cry_planetlua = { name = "星球.lua", text = { "{C:green}#1# / #2#{} 的几率", "升级所有种类", - "{C:legendary,E:1}扑克牌型{} {C:attention}1{} 级" - } + "{C:legendary,E:1}扑克牌型{} {C:attention}1{} 级", + }, }, c_cry_universe = { name = "TM的整个宇宙!", @@ -2850,8 +2850,8 @@ return { "{S:0.8}({S:0.8,V:1}等级.#1#{S:0.8}){} 升级", "{C:attention}#2#", "{C:mult}+#3#{} 倍率和", - "{C:chips}+#4#{} 筹码" - } + "{C:chips}+#4#{} 筹码", + }, }, c_cry_void = { name = "虚空", @@ -2859,17 +2859,17 @@ return { "{S:0.8}({S:0.8,V:1}等级.#1#{S:0.8}){} 升级", "{C:attention}#2#", "{C:mult}+#3#{} 倍率和", - "{C:chips}+#4#{} 筹码" - } + "{C:chips}+#4#{} 筹码", + }, }, - c_cry_sunplanet = { - name = '太阳', + c_cry_sunplanet = { + name = "太阳", text = { "{S:0.8}({S:0.8,V:1}等级.#1#{S:0.8}){}", "使{C:attention}晋升{}牌型的指数", "增加{X:gold,C:white}0.05{}", - "{C:inactive}(目前指数 {X:gold,C:white}X(#2#^晋升数){C:inactive})" - } + "{C:inactive}(目前指数 {X:gold,C:white}X(#2#^晋升数){C:inactive})", + }, }, }, Sleeve = { @@ -2877,15 +2877,15 @@ return { name = "丰饶牌套", text = { "每次{C:attention}出牌{} 或 {C:attention}弃牌{}后", - "固定抽五张牌" - } + "固定抽五张牌", + }, }, sleeve_cry_ccd_sleeve = { name = "CCD 牌套", text = { "每张卡牌也是", - "一张 {C:attention}随机{} 消耗牌" - } + "一张 {C:attention}随机{} 消耗牌", + }, }, sleeve_cry_conveyor_sleeve = { name = "传送带牌套", @@ -2893,24 +2893,24 @@ return { "{C:attention}不能{} 移动小丑卡", "回合开始时,", "{C:attention}复制{} 最右边的小丑卡", - "并且 {C:attention}销毁{} 最左边的小丑卡" - } + "并且 {C:attention}销毁{} 最左边的小丑卡", + }, }, sleeve_cry_critical_sleeve = { name = "暴击牌套", text = { "每打出一手牌后,", "{C:green}四分之一{} 的几率获得 {X:dark_edition,C:white} ^2 {} 倍", - "{C:green}八分之一{} 的几率获得 {X:dark_edition,C:white} ^0.5 {} 倍" - } + "{C:green}八分之一{} 的几率获得 {X:dark_edition,C:white} ^0.5 {} 倍", + }, }, sleeve_cry_encoded_sleeve = { name = "编码牌套", text = { "开始时获得一张 {C:cry_code,T:j_cry_CodeJoker}代码小丑卡{}", "和一张 {C:cry_code,T:j_cry_copypaste}复制/粘贴卡{}", - "商店中只出现 {C:cry_code}代码牌{}" - } + "商店中只出现 {C:cry_code}代码牌{}", + }, }, sleeve_cry_equilibrium_sleeve = { name = "均衡牌套", @@ -2918,15 +2918,15 @@ return { "所有卡牌在", "商店中的 {C:attention}出现几率相同{}", "开始时拥有", - "{C:attention,T:v_overstock_plus}+2 商店栏位" - } + "{C:attention,T:v_overstock_plus}+2 商店栏位", + }, }, sleeve_cry_infinite_sleeve = { name = "无限牌套", text = { "你可以选择 {C:attention}任意数量", - "的卡牌" - } + "的卡牌", + }, }, sleeve_cry_legendary_sleeve = { name = "传奇牌套", @@ -2934,30 +2934,30 @@ return { "以一张 {C:legendary}传奇{C:legendary} 小丑牌开始", "击败Boss盲注后", "{C:green}1 / 5{} 几率创建另外一张", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, sleeve_cry_misprint_sleeve = { name = "错印牌套", text = { "卡牌的数值", - "是 {C:attention}随机{} 的" - } + "是 {C:attention}随机{} 的", + }, }, sleeve_cry_redeemed_sleeve = { name = "赎回牌套", text = { "当购买{C:attention}优惠券{} 时,", - "会获得对应 {C:attention}高级{} 版" - } + "会获得对应 {C:attention}高级{} 版", + }, }, sleeve_cry_spooky_sleeve = { name = "万圣节牌套", text = { "以一张{C:eternal}永恒{} {C:attention,T:j_cry_chocolate_dice}巧克力骰{}开始", "每次{C:attention}底注{}之后 ", - "创建一个{C:cry_candy}糖果{}或 {X:cry_cursed,C:white}诅咒{}" - } + "创建一个{C:cry_candy}糖果{}或 {X:cry_cursed,C:white}诅咒{}", + }, }, sleeve_cry_wormhole_sleeve = { name = "虫洞牌套", @@ -2965,61 +2965,61 @@ return { "开始时获得一张 {C:cry_exotic}域外{C:attention} 小丑卡", "小丑卡 {C:attention}20倍{} 更有可能", "成为 {C:dark_edition}负片{} 卡", - "{C:attention}-2{} 小丑卡插槽" - } - } + "{C:attention}-2{} 小丑卡插槽", + }, + }, }, Spectral = { c_cry_adversary = { name = "敌手", text = { "拥有的{C:red}所有{} {C:attention}小丑牌{} 变为 {C:dark_edition}负片{},", - "本局游戏的小丑牌购买价格{C:red}翻倍{}" - } + "本局游戏的小丑牌购买价格{C:red}翻倍{}", + }, }, c_cry_analog = { name = "模拟", text = { "复制 {C:attention}#1#{} 张", "随机 {C:attention}小丑{}", - "摧毁所有其他小丑,{C:attention}+#2#{} 底注" - } + "摧毁所有其他小丑,{C:attention}+#2#{} 底注", + }, }, c_cry_chambered = { name = "腔室", text = { "随机复制 {C:attention}#1#{}张 {C:dark_edition}负片{}版本", - "的{C:attention}持有{}的消耗牌" - } + "的{C:attention}持有{}的消耗牌", + }, }, c_cry_conduit = { name = "渠道", text = { - "交换两张所选择的小丑或手牌的 {C:attention}版本{}" - } + "交换两张所选择的小丑或手牌的 {C:attention}版本{}", + }, }, c_cry_gateway = { name = "真理之门", text = { "生成一张随机的", "{C:cry_exotic,E:1}域外{C:attention} 小丑{}", - "摧毁所有其他小丑" - } + "摧毁所有其他小丑", + }, }, c_cry_hammerspace = { name = "次元之袋", text = { "所有手牌获得特殊{C:dark_edition}增强{}效果", - "此增强效果会将它们变为随机{C:attention}消耗牌{}" - } + "此增强效果会将它们变为随机{C:attention}消耗牌{}", + }, }, c_cry_lock = { name = "锁定", text = { "从 {C:red}所有{} 小丑中,", "移除 {C:red}所有{} 贴纸", - "然后随机给一张小丑牌增加 {C:purple,E:1}永恒{}贴纸" - } + "然后随机给一张小丑牌增加 {C:purple,E:1}永恒{}贴纸", + }, }, c_cry_pointer = { name = "://指针", @@ -3027,54 +3027,54 @@ return { "创造一张", "任选 {C:cry_code}卡牌", "{C:inactive,s:0.8}(域外小丑 #1# 排除)", - "(输入对应名字)" - } + "(输入对应名字)", + }, }, c_cry_replica = { name = "复录", text = { "转换所有手牌", "为一张 {C:attention}随机{}", - "手牌" - } + "手牌", + }, }, c_cry_ritual = { name = "仪典", text = { "增强 {C:attention}#1#{} 张选定的卡牌", "为 {C:dark_edition}负片{}, {C:dark_edition}马赛克{}", - "或 {C:dark_edition}星界{} " - } + "或 {C:dark_edition}星界{} ", + }, }, c_cry_source = { name = "源码", text = { "向你手中的", "{C:attention}#1#{} 选定卡牌", - "添加一个 {C:cry_code}绿色蜡封{}" - } + "添加一个 {C:cry_code}绿色蜡封{}", + }, }, c_cry_summoning = { name = "召唤", text = { "创造一张随机的", "{C:cry_epic}史诗{} {C:joker}小丑{},摧毁", - "一张随机 {C:joker}小丑{}" - } + "一张随机 {C:joker}小丑{}", + }, }, c_cry_trade = { name = "交易", text = { "{C:attention}失去{} 一张随机优惠券,", - "获得 {C:attention}2{} 张随机优惠券" - } + "获得 {C:attention}2{} 张随机优惠券", + }, }, c_cry_typhoon = { name = "台风", text = { "向手中 {C:attention}#1#{} 选择的", - "牌中添加 {C:cry_azure}蔚蓝蜡封{}" - } + "牌中添加 {C:cry_azure}蔚蓝蜡封{}", + }, }, c_cry_vacuum = { name = "虚空", @@ -3082,17 +3082,17 @@ return { "从 {C:red}所有{} 手中的牌,", "移除 {C:red}所有 {C:green}修改{}", "每移除一个 {C:green}修改{},获得 {C:money}$#1#{}", - "{C:inactive,s:0.7}(例如: 强化、蜡封、版本)" - } + "{C:inactive,s:0.7}(例如: 强化、蜡封、版本)", + }, }, c_cry_white_hole = { name = "白洞", text = { "{C:attention}移除{} 所有手牌等级,", "升级 {C:legendary,E:1}最常用{} 扑克牌型", - "每移除1级,最常用牌型升{C:attention}3{}级" - } - } + "每移除1级,最常用牌型升{C:attention}3{}级", + }, + }, }, Stake = { stake_cry_amber = { @@ -3100,16 +3100,16 @@ return { name = "琥珀注", text = { "商店的{C:attention}补充包-1{} ", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_ascendant = { colour = "Ascendant", name = "飞升注", text = { "商店栏位{C:attention}-1{}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_azure = { colour = "Azure", @@ -3117,8 +3117,8 @@ return { text = { "所有小丑牌的数值降低", "{C:attention}20%{}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_blossom = { colour = "Blossom", @@ -3127,32 +3127,32 @@ return { "{C:attention}最终{}Boss版盲注可以出现在", "{C:attention}任何{}底注中", "{s:0.8,C:inactive}之前所有赌注也都起效{}", - "" - } + "", + }, }, stake_cry_bronze = { colour = "Bronze", name = "青铜注", text = { "优惠券价格增加 {C:attention}50%{}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_brown = { colour = "Brown", name = "棕色注", text = { "所有的 {C:attention}贴纸(如永恒,易腐,租赁){} 互相兼容", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_crimson = { colour = "Crimson", name = "猩红注", text = { "优惠券只会在 {C:attention}双数{} 底注 时刷新", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_cyan = { colour = "Cyan", @@ -3160,8 +3160,8 @@ return { text = { "{C:green}罕见的{} 和 {C:red}稀有的{} 小丑牌出现概率", "减少", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_dawn = { colour = "Dawn", @@ -3169,24 +3169,24 @@ return { text = { "塔罗牌和幻灵牌的选择目标 {C:attention}减 1{}", "{s:0.8,C:inactive}(最少 1 张){}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_diamond = { colour = "Diamond", name = "钻石注", text = { "获胜的底注变成{C:attention}10{}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_ember = { colour = "Ember", name = "余烬注", text = { "所有卡牌出售时不再产生金钱", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_emerald = { colour = "Emerald", @@ -3194,24 +3194,24 @@ return { text = { "卡牌、包和优惠券可以是 {C:attention}面朝下{} 的", "{s:0.8,C:inactive}(购买前无法查看)", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_glass = { colour = "Glass", name = "玻璃注", text = { "卡牌在得分时可能会被 {C:attention}摧毁", - "{}{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{}{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_gray = { colour = "Gray", name = "灰色注", text = { "重新投掷的费用每次增加 {C:attention}$2{}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_horizon = { colour = "Horizon", @@ -3219,32 +3219,32 @@ return { text = { "选择盲注时,增加一张", "{C:attention}随机卡牌{} 到牌堆", - " {s:0.8,C:inactive}之前所有赌注也都起效{}" - } + " {s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_jade = { colour = "Jade", name = "碧玉注", text = { "抽取手牌时有概率是 {C:attention}面朝下{} 的", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_pink = { colour = "Pink", name = "粉红注", text = { " {C:attention}底注 {}提升时,过关需求分数再次增速", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_platinum = { colour = "Platinum", name = "铂金注", text = { "小盲注 {C:attention}不会出现{}", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_quartz = { colour = "Quartz", @@ -3252,8 +3252,8 @@ return { text = { "商店有可能出现{C:attention}固定{}小丑牌", "{s:0.8,C:inactive}(固定在最左侧的位置){}", - "{s:0.8,C:inactive}之前所有赌注也都起效" - } + "{s:0.8,C:inactive}之前所有赌注也都起效", + }, }, stake_cry_ruby = { colour = "Ruby", @@ -3261,8 +3261,8 @@ return { text = { "{C:attention}大{} 盲注有可能变为", "{C:attention}Boss{} 盲注", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_sapphire = { colour = "Sapphire", @@ -3270,8 +3270,8 @@ return { text = { "在 底注 结束时,失去当前总资金的 {C:attention}25%{} ", "{s:0.8,C:inactive}(最高失去至 $10)", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_twilight = { colour = "Twilight", @@ -3279,16 +3279,16 @@ return { text = { "商店有可能出现{C:attention}香蕉{}小丑牌", "{s:0.8,C:inactive}(每回合有 1/10 的几率销毁){}", - "{s:0.8,C:inactive}之前所有赌注也都起效" - } + "{s:0.8,C:inactive}之前所有赌注也都起效", + }, }, stake_cry_verdant = { colour = "Verdant", name = "翠绿注", text = { "所需分数会随每个 {C:attention}底注加速增加", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, }, stake_cry_yellow = { colour = "Yellow", @@ -3296,142 +3296,142 @@ return { text = { "{C:attention}永恒,易腐,租赁等贴纸{}", "有可能出现在所有可以购买的物品上", - "{s:0.8,C:inactive}之前所有赌注也都起效{}" - } - } + "{s:0.8,C:inactive}之前所有赌注也都起效{}", + }, + }, }, Tag = { tag_cry_astral = { name = "星界标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}星界版本{}并且免费" - } + "增加 {C:dark_edition}星界版本{}并且免费", + }, }, tag_cry_banana = { name = "香蕉标签", text = { "创造{C:attention}#1#", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, tag_cry_better_voucher = { name = "黄金优惠券标签", text = { - "下个商店增加一张 T{C:attention}#1#{} 等级优惠券" - } + "下个商店增加一张 T{C:attention}#1#{} 等级优惠券", + }, }, tag_cry_bettertop_up = { name = "进阶充值标签", text = { "创造 {C:attention}#1#张{C:green}罕见{}小丑", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, tag_cry_blur = { name = "模糊标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}模糊版本{}并且免费" - } + "增加 {C:dark_edition}模糊版本{}并且免费", + }, }, tag_cry_booster = { name = "增强包标签", text = { "下一个 {C:cry_code}增强包{} 有", "{C:attention}双倍{} 卡牌数量", - "{C:attention}双倍{} 选择次数" - } + "{C:attention}双倍{} 选择次数", + }, }, tag_cry_bundle = { name = "组合标签", text = { "创造一个 {C:attention}标准标签{},{C:tarot}吊饰标签{},", - "{C:attention}小丑标签{},和 {C:planet}流星标签" - } + "{C:attention}小丑标签{},和 {C:planet}流星标签", + }, }, tag_cry_cat = { name = "猫猫标签", text = { "喵。", - "{C:inactive}等级 {C:dark_edition}#1#" - } + "{C:inactive}等级 {C:dark_edition}#1#", + }, }, tag_cry_console = { name = "控制台标签", text = { "给予一个免费", - "{C:cry_code}代码包" - } + "{C:cry_code}代码包", + }, }, tag_cry_double_m = { name = "M标签", text = { - "商店增加一张 {C:legendary}M系列小丑{}" - } + "商店增加一张 {C:legendary}M系列小丑{}", + }, }, tag_cry_empowered = { name = "强化标签", text = { "给予一个 {C:spectral}究极幻灵{} 包", - "包括 {C:legendary,E:1}灵魂{} 和 {C:cry_exotic,E:1}传送门{}" - } + "包括 {C:legendary,E:1}灵魂{} 和 {C:cry_exotic,E:1}传送门{}", + }, }, tag_cry_epic = { name = "史诗标签", text = { "下个商店有一张半价的", - "{C:cry_epic}史诗小丑" - } + "{C:cry_epic}史诗小丑", + }, }, tag_cry_gambler = { name = "赌徒标签", text = { "{C:green}#1# / #2#{} 的几率", - "创造一个 {C:cry_exotic,E:1}强化{} 标签" - } + "创造一个 {C:cry_exotic,E:1}强化{} 标签", + }, }, tag_cry_glass = { name = "琉璃标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}灰质琉璃{}版本并且免费" - } + "增加 {C:dark_edition}灰质琉璃{}版本并且免费", + }, }, tag_cry_glitched = { name = "故=@+/?”障", text = { "下《##一张商", - "//“小&获得 {C:dark_edition}故#_《障&效果并且免@{}" - } + "//“小&获得 {C:dark_edition}故#_《障&效果并且免@{}", + }, }, tag_cry_gold = { name = "鎏金标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}鎏金版本{}并且免费" - } + "增加 {C:dark_edition}鎏金版本{}并且免费", + }, }, tag_cry_gourmand = { name = "美餐标签", text = { "商店里增加一张", - "免费的{C:attention}食物小丑{}" - } + "免费的{C:attention}食物小丑{}", + }, }, tag_cry_loss = { name = "loss", text = { "给予一个免费", - "的{C:cry_ascendant}玩梗{}包" - } + "的{C:cry_ascendant}玩梗{}包", + }, }, tag_cry_m = { name = "欢愉~标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}欢愉{}版本并且免费" - } + "增加 {C:dark_edition}欢愉{}版本并且免费", + }, }, tag_cry_memory = { name = "记忆标签", @@ -3439,68 +3439,68 @@ return { "创造 {C:attention}#1#{} 份", "本局游戏上一次使用的 {C:attention}标签{}", "{s:0.8,C:inactive}复制类标签除外", - "{s:0.8,C:inactive}当前: {s:0.8,C:attention}#2#" - } + "{s:0.8,C:inactive}当前: {s:0.8,C:attention}#2#", + }, }, tag_cry_mosaic = { name = "马赛克标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}马赛克版本{}并且免费" - } + "增加 {C:dark_edition}马赛克版本{}并且免费", + }, }, tag_cry_oversat = { name = "过曝标签", text = { "下一张在商店里的小丑", - "增加 {C:dark_edition}过曝版本{}并且免费" - } + "增加 {C:dark_edition}过曝版本{}并且免费", + }, }, tag_cry_quadruple = { name = "四方标签", text = { "给予 {C:attention}#1#{} 份", "下一个选择的 {C:attention}标签", - "{s:0.8,C:inactive}复制类标签除外" - } + "{s:0.8,C:inactive}复制类标签除外", + }, }, tag_cry_quintuple = { name = "五重标签", text = { "给予 {C:attention}#1#{} 份", "下一个选择的 {C:attention}标签", - "{s:0.8,C:inactive}复制类标签除外" - } + "{s:0.8,C:inactive}复制类标签除外", + }, }, tag_cry_rework = { name = "重制标签", text = { "商店有一张", - "{C:dark_edition}#1# {C:cry_code}#2#" - } + "{C:dark_edition}#1# {C:cry_code}#2#", + }, }, tag_cry_schematic = { name = "原理图标签", text = { "下个商店有一张", - "{C:attention}头脑风暴{} " - } + "{C:attention}头脑风暴{} ", + }, }, tag_cry_scope = { name = "机遇标签", text = { "下回合增加1出牌次数", - "增加1弃牌次数" - } + "增加1弃牌次数", + }, }, tag_cry_triple = { name = "三连标签", text = { "给予 {C:attention}#1#{} 份", "下一个选择的 {C:attention}标签", - "{s:0.8,C:inactive}复制类标签除外" - } - } + "{s:0.8,C:inactive}复制类标签除外", + }, + }, }, Tarot = { c_cry_automaton = { @@ -3508,31 +3508,31 @@ return { text = { "创造 {C:attention}#1#", "随机 {C:cry_code}代码{} 卡", - "{C:inactive}(必须有空间)" - } + "{C:inactive}(必须有空间)", + }, }, c_cry_eclipse = { name = "日食", text = { "增强 {C:attention}#1#{} 张选定的卡牌", - "为 {C:attention}回响卡" - } + "为 {C:attention}回响卡", + }, }, c_cry_meld = { name = "融合", text = { "选择一张 {C:attention}小丑{} 或", "{C:attention}扑克牌{} 将其变成", - "{C:dark_edition}双面{} " - } + "{C:dark_edition}双面{} ", + }, }, c_cry_theblessing = { name = "祝福", text = { "创造 {C:attention}1{}", "随机 {C:attention}消耗牌{}", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, c_cry_seraph = { name = "六翼天使", @@ -3548,95 +3548,95 @@ return { text = { "使用后获取一种未知的 ", "{C:attention}魔力{}", - "{C:inactive,s:0.7}从巧克力骰子中获取" - } - } + "{C:inactive,s:0.7}从巧克力骰子中获取", + }, + }, }, Voucher = { v_cry_asteroglyph = { name = "星象文字", text = { - "设置底注为 {C:attention}#1#{}" - } + "设置底注为 {C:attention}#1#{}", + }, }, v_cry_blankcanvas = { name = "空白画布", text = { - "{C:attention}+#1#{} 手牌上限" - } + "{C:attention}+#1#{} 手牌上限", + }, }, v_cry_clone_machine = { name = "克隆机器", text = { "双倍标签变成", "{C:attention}五重标签{},并且", - " {C:attention}4X{} 常见" - } + " {C:attention}4X{} 常见", + }, }, v_cry_command_prompt = { name = "命令提示符", text = { "{C:cry_code}代码{} 牌可以", - "出现在 {C:attention}商店{}" - } + "出现在 {C:attention}商店{}", + }, }, v_cry_copies = { name = "多重复制", text = { "双倍标签变成", "{C:attention}三连标签{},并且", - "是 {C:attention}2X{} 常见" - } + "是 {C:attention}2X{} 常见", + }, }, v_cry_curate = { name = "策展", text = { "所有牌出现时均", - "带有 {C:dark_edition}版本{}" - } + "带有 {C:dark_edition}版本{}", + }, }, v_cry_dexterity = { name = "灵巧", text = { "永久", - "每回合获得 {C:blue}+#1#{} 手牌" - } + "每回合获得 {C:blue}+#1#{} 手牌", + }, }, v_cry_double_down = { name = "双倍下注", text = { "每轮之后,", - " {C:dark_edition}双面{} 牌背面的所有数值 {X:dark_edition,C:white} X1.5 {}" - } + " {C:dark_edition}双面{} 牌背面的所有数值 {X:dark_edition,C:white} X1.5 {}", + }, }, v_cry_double_slit = { name = "成对裂隙", text = { "{C:attention}融合{} 可以", "出现在商店和", - "秘术包中" - } + "秘术包中", + }, }, v_cry_double_vision = { name = "重影", text = { "{C:dark_edition}双面{} 牌出现", - "{C:attention}4X{} 更频繁" - } + "{C:attention}4X{} 更频繁", + }, }, v_cry_fabric = { name = "宇宙结构", text = { - "{C:dark_edition}+#1#{} 小丑槽" - } + "{C:dark_edition}+#1#{} 小丑槽", + }, }, v_cry_grapplinghook = { name = "抓钩", text = { "{C:attention}+#1#{} 牌", "选择限制", - "{C:inactive,s:0.7}你可以用它做很多事情,比你想象的要多得多。{}" - } + "{C:inactive,s:0.7}你可以用它做很多事情,比你想象的要多得多。{}", + }, }, v_cry_hyperspacetether = { name = "超时空钩锁", @@ -3644,30 +3644,30 @@ return { "{C:attention}+#1#{} 牌", "选择限制", "{C:inactive,s:0.7}注意:未来会有额外的{}", - "{C:inactive,s:0.7}功能{}" - } + "{C:inactive,s:0.7}功能{}", + }, }, v_cry_massproduct = { name = "规模量产", text = { "商店中的所有牌和包", - "费用为 {C:attention}$1{}" - } + "费用为 {C:attention}$1{}", + }, }, v_cry_moneybean = { name = "金钱魔豆", text = { "提高每轮获得的", - "利息上限至 {C:money}$#1#{}" - } + "利息上限至 {C:money}$#1#{}", + }, }, v_cry_overstock_multi = { name = "多重库存", text = { "{C:attention}+#1#{} 卡槽和", "{C:attention}+#1#{} 补充包槽", - "在商店中可用" - } + "在商店中可用", + }, }, v_cry_pacclimator = { name = "星球适应器", @@ -3675,66 +3675,66 @@ return { "{C:planet}星球{} 牌出现的概率", "{C:attention}X#1#{} ", "购买此优惠券后本赛局所有", - "{C:planet}星球{}牌都{C:green}免费{}" - } + "{C:planet}星球{}牌都{C:green}免费{}", + }, }, v_cry_pairamount_plus = { name = "至高山巅", text = { "打出的牌中每包含一个对子", - "{C:attention}重新触发{}一次所有 M 小丑" - } + "{C:attention}重新触发{}一次所有 M 小丑", + }, }, v_cry_pairing = { name = "配对", text = { "{C:attention}重新触发{} 所有 M 小丑", - "如果出牌是 {C:attention}一对" - } + "如果出牌是 {C:attention}一对", + }, }, v_cry_quantum_computing = { name = "量子计算", text = { "{C:cry_code}代码{} 牌生成时概率", - "带有 {C:dark_edition}负片{} 版本" - } + "带有 {C:dark_edition}负片{} 版本", + }, }, v_cry_repair_man = { name = "修理工", text = { "{C:attention}重新触发{} 所有 M 小丑", - "如果出牌包含 {C:attention}一对" - } + "如果出牌包含 {C:attention}一对", + }, }, v_cry_rerollexchange = { name = "重掷交换", text = { "所有重掷", - "费用 {C:attention}$2{}" - } + "费用 {C:attention}$2{}", + }, }, v_cry_satellite_uplink = { name = "卫星串联", text = { "{C:cry_code}代码{} 牌可能", "出现在任何", - "{C:attention}天体包{}中" - } + "{C:attention}天体包{}中", + }, }, v_cry_scope = { name = "银河望远镜", text = { "为出牌创造 {C:planet}星球", "{C:attention}牌型{}", - "{C:inactive}(必须有空间){}" - } + "{C:inactive}(必须有空间){}", + }, }, v_cry_stickyhand = { name = "粘粘手", text = { "选择限制", - "{C:attention}+#1#{} 牌" - } + "{C:attention}+#1#{} 牌", + }, }, v_cry_tacclimator = { name = "塔罗适应器", @@ -3742,25 +3742,25 @@ return { "{C:tarot}塔罗{} 牌出现的概率", "{C:attention}X#1#{} ", "购买此优惠券后本赛局所有", - "{C:tarot}塔罗{}牌都{C:green}免费{}" - } + "{C:tarot}塔罗{}牌都{C:green}免费{}", + }, }, v_cry_tag_printer = { name = "标签打印机", text = { "双倍标签变成", "{C:attention}四方标签{},并且", - " {C:attention}3X{} 常见" - } + " {C:attention}3X{} 常见", + }, }, v_cry_threers = { name = "读,写,算", text = { "永久", - "每回合获得 {C:red}+#1#{} 弃牌" - } - } - } + "每回合获得 {C:red}+#1#{} 弃牌", + }, + }, + }, }, misc = { achievement_descriptions = { @@ -3783,7 +3783,7 @@ return { ach_cry_traffic_jam = "击败所有高峰时段挑战", ach_cry_ult_full_skip = "在1回合内获胜", ach_cry_used_crash = "使用://崩溃", - ach_cry_what_have_you_done = "删除或献祭一张域外小丑牌" + ach_cry_what_have_you_done = "删除或献祭一张域外小丑牌", }, achievement_names = { ach_cry_ace_in_crash = "口袋ACE", @@ -3805,7 +3805,7 @@ return { ach_cry_traffic_jam = "交通堵塞", ach_cry_ult_full_skip = "终极全跳过", ach_cry_used_crash = "早告诉过你", - ach_cry_what_have_you_done = "你到底做了什么?!" + ach_cry_what_have_you_done = "你到底做了什么?!", }, challenge_names = { c_cry_ballin = "炫酷风采", @@ -3818,7 +3818,7 @@ return { c_cry_rush_hour_ii = "高峰时段 II", c_cry_rush_hour_iii = "高峰时段 III", c_cry_sticker_sheet = "贴纸纸张", - c_cry_sticker_sheet_plus = "贴纸纸张+" + c_cry_sticker_sheet_plus = "贴纸纸张+", }, dictionary = { b_code_cards = "代码牌", @@ -3923,7 +3923,7 @@ return { k_planet_disc = "星周盘", k_planet_satellite = "天然卫星", k_planet_universe = "整个TMD宇宙", - k_unique = "独特" + k_unique = "独特", }, labels = { banana = "香蕉", @@ -3951,666 +3951,666 @@ return { k_cry_cursed = "诅咒", k_cry_epic = "史诗", k_cry_exotic = "域外", - unique = "独特" + unique = "独特", }, poker_hand_descriptions = { cry_Bulwark = { - "5 张无等级,无花色的牌" + "5 张无等级,无花色的牌", }, cry_Clusterfuck = { "至少 8 张不包含", - "对子、同花或顺子的牌" + "对子、同花或顺子的牌", }, cry_UltPair = { "两个两对,共两种花色", "每对两对是一种花色", - "他们之间共有两种花色" + "他们之间共有两种花色", }, cry_WholeDeck = { "在一次出牌中,包含", "52张牌的牌组中的每一张牌", - "你疯了?" - } + "你疯了?", + }, }, poker_hands = { cry_Bulwark = "碉堡", cry_Clusterfuck = "一坨", cry_UltPair = "至尊对子", - cry_WholeDeck = "一整副牌" + cry_WholeDeck = "一整副牌", }, rnj_loc_txts = { actions = { add_dollars = { - "获得 {C:money}$#2#{}" + "获得 {C:money}$#2#{}", }, make_joker = { - "创造 {C:attention}#2# 小丑{}牌" + "创造 {C:attention}#2# 小丑{}牌", }, make_planet = { - "创造 {C:attention}#2#{C:planet} 星球{} 牌" + "创造 {C:attention}#2#{C:planet} 星球{} 牌", }, make_spectral = { - "创造 {C:attention}#2#{C:spectral} 幻灵{} 牌" + "创造 {C:attention}#2#{C:spectral} 幻灵{} 牌", }, make_tarot = { - "创造 {C:attention}#2#{C:tarot} 塔罗{} 牌" - } + "创造 {C:attention}#2#{C:tarot} 塔罗{} 牌", + }, }, conds = { big = { - "如果 {C:attention}盲注{} 是 {C:attention}大 {C:attention}盲注{}" + "如果 {C:attention}盲注{} 是 {C:attention}大 {C:attention}盲注{}", }, boss = { - "如果 {C:attention}盲注{} 是 {C:attention}Boss {C:attention}盲注{}" + "如果 {C:attention}盲注{} 是 {C:attention}Boss {C:attention}盲注{}", }, buy_common = { - "如果是 {C:blue}普通{} {C:attention}小丑{}" + "如果是 {C:blue}普通{} {C:attention}小丑{}", }, buy_uncommon = { - "如果是 {C:green}罕见{} {C:attention}小丑{}" + "如果是 {C:green}罕见{} {C:attention}小丑{}", }, common = { - "如果是 {C:blue}普通{} {C:attention}小丑{}" + "如果是 {C:blue}普通{} {C:attention}小丑{}", }, discards_left = { - "如果回合结束时剩余 {C:red}#3#{} 次丢弃" + "如果回合结束时剩余 {C:red}#3#{} 次丢弃", }, face = { - "如果卡牌是 {C:attention}面{} 卡" + "如果卡牌是 {C:attention}面{} 卡", }, first = { - "如果是 {C:attention}第一次出牌{}" + "如果是 {C:attention}第一次出牌{}", }, first_discard = { - "如果是 {C:attention}第一次 {C:attention}丢弃{}" + "如果是 {C:attention}第一次 {C:attention}丢弃{}", }, hands_left = { - "如果回合结束时剩余 {C:blue}#3#{} 手牌" + "如果回合结束时剩余 {C:blue}#3#{} 手牌", }, joker = { - "如果卡牌是 {C:attention}小丑{}" + "如果卡牌是 {C:attention}小丑{}", }, last = { - "如果是 {C:attention}最后一次{} 出牌" + "如果是 {C:attention}最后一次{} 出牌", }, last_discard = { - "如果是 {C:attention}最后一次 {C:attention}丢弃{}" + "如果是 {C:attention}最后一次 {C:attention}丢弃{}", }, non_boss = { - "如果 {C:attention}盲注{} 是 {C:attention}非Boss {C:attention}盲注{}" + "如果 {C:attention}盲注{} 是 {C:attention}非Boss {C:attention}盲注{}", }, odds = { - "以 {C:green}#4# {C:green}中 {C:green}#3#{} 的几率" + "以 {C:green}#4# {C:green}中 {C:green}#3#{} 的几率", }, or_less = { - "如果手牌包含 {C:attention}#3#{} 或更少卡牌" + "如果手牌包含 {C:attention}#3#{} 或更少卡牌", }, or_more = { - "如果手牌包含 {C:attention}#3#{} 或更多卡牌" + "如果手牌包含 {C:attention}#3#{} 或更多卡牌", }, planet = { - "如果卡牌是 {C:planet}星球{} 卡" + "如果卡牌是 {C:planet}星球{} 卡", }, poker_hand = { - "如果手牌是 {C:attention}#3#{}" + "如果手牌是 {C:attention}#3#{}", }, rank = { - "如果卡牌的等级是 {C:attention}#3#{}" + "如果卡牌的等级是 {C:attention}#3#{}", }, rare = { - "如果是 {C:red}稀有{} {C:attention}小丑{}" + "如果是 {C:red}稀有{} {C:attention}小丑{}", }, small = { - "如果 {C:attention}盲注{} 是 {C:attention}小 {C:attention}盲注{}" + "如果 {C:attention}盲注{} 是 {C:attention}小 {C:attention}盲注{}", }, spectral = { - "如果卡牌是 {C:spectral}幻灵{} 卡" + "如果卡牌是 {C:spectral}幻灵{} 卡", }, suit = { - "如果卡牌是 {V:1}#3#{}" + "如果卡牌是 {V:1}#3#{}", }, tarot = { - "如果卡牌是 {C:tarot}塔罗{} 卡" + "如果卡牌是 {C:tarot}塔罗{} 卡", }, uncommon = { - "如果是 {C:green}罕见{} {C:attention}小丑{}" - } + "如果是 {C:green}罕见{} {C:attention}小丑{}", + }, }, contexts = { after = { - "每个 {C:attention}手牌{} 后" + "每个 {C:attention}手牌{} 后", }, before = { - "每个 {C:attention}手牌{} 前" + "每个 {C:attention}手牌{} 前", }, buying_card = { - "购买卡牌时" + "购买卡牌时", }, debuffed_hand = { - "如果已打出 {C:attention}手牌{} 被削弱" + "如果已打出 {C:attention}手牌{} 被削弱", }, discard = { - "为每张丢弃的卡牌" + "为每张丢弃的卡牌", }, end_of_round = { - "回合结束时" + "回合结束时", }, ending_shop = { - "在 {C:attention}商店{} 结束时" + "在 {C:attention}商店{} 结束时", }, first_hand_drawn = { - "回合开始时" + "回合开始时", }, individual_hand_end = { - "回合结束时手中的每张卡牌" + "回合结束时手中的每张卡牌", }, individual_hand_score = { - "结算期间为手中的每张卡牌" + "结算期间为手中的每张卡牌", }, individual_play = { - "为每张计分的卡牌" - }, - joker_main = { - + "为每张计分的卡牌", }, + joker_main = {}, open_booster = { - "当 {C:attention}补充包{} 被打开时" + "当 {C:attention}补充包{} 被打开时", }, other_joker = { - "每个 {C:attention}小丑{}" + "每个 {C:attention}小丑{}", }, playing_card_added = { - "每次将 {C:attention}手牌{} 添加到牌组时" + "每次将 {C:attention}手牌{} 添加到牌组时", }, pre_discard = { - "每次丢弃前" + "每次丢弃前", }, remove_playing_cards = { - "卡牌被销毁时" + "卡牌被销毁时", }, repetition_hand = { - "重新触发手中的卡牌" + "重新触发手中的卡牌", }, repetition_play = { - "重新触发已打出的卡牌" + "重新触发已打出的卡牌", }, reroll_shop = { - "重roll商店" + "重roll商店", }, selling_card = { - "出售卡牌时" + "出售卡牌时", }, selling_self = { - "出售此卡时" + "出售此卡时", }, setting_blind = { - "选择 {C:attention}盲注{} 时" + "选择 {C:attention}盲注{} 时", }, skip_blind = { - "跳过 {C:attention}盲注{} 时" + "跳过 {C:attention}盲注{} 时", }, skipping_booster = { - "跳过任何 {C:attention}补充包{} 时" + "跳过任何 {C:attention}补充包{} 时", }, using_consumeable = { - "使用 {C:attention}消耗牌{} 卡牌时" - } + "使用 {C:attention}消耗牌{} 卡牌时", + }, }, stats = { h_size = { - "{C:attention}+#2#{} 手牌数目" + "{C:attention}+#2#{} 手牌数目", }, money = { - "{C:money}+$#2#{} 金钱" + "{C:money}+$#2#{} 金钱", }, plus_chips = { - "{C:blue}+#2#{} 筹码" + "{C:blue}+#2#{} 筹码", }, plus_mult = { - "{C:red}+#2#{} 增加倍数" + "{C:red}+#2#{} 增加倍数", }, x_chips = { - "{X:blue,C:white} X#2#{} 筹码" + "{X:blue,C:white} X#2#{} 筹码", }, x_mult = { - "{X:red,C:white} X#2#{} 倍数" - } + "{X:red,C:white} X#2#{} 倍数", + }, }, stats_inactive = { h_size = { - "{C:inactive}(当前 {C:attention}+#1#{C:inactive} 手牌数目)" + "{C:inactive}(当前 {C:attention}+#1#{C:inactive} 手牌数目)", }, money = { - "{C:inactive}(当前 {C:money}+$#1#{C:inactive})" + "{C:inactive}(当前 {C:money}+$#1#{C:inactive})", }, plus_chips = { - "{C:inactive}(当前 {C:blue}+#1#{C:inactive} 筹码)" + "{C:inactive}(当前 {C:blue}+#1#{C:inactive} 筹码)", }, plus_mult = { - "{C:inactive}(当前 {C:red}+#1#{C:inactive} 倍率)" + "{C:inactive}(当前 {C:red}+#1#{C:inactive} 倍率)", }, x_chips = { - "{C:inactive}(当前 {X:blue,C:white} X#1# {C:inactive} 筹码)" + "{C:inactive}(当前 {X:blue,C:white} X#1# {C:inactive} 筹码)", }, x_mult = { - "{C:inactive}(当前 {X:red,C:white} X#1# {C:inactive} 倍率)" - } - } + "{C:inactive}(当前 {X:red,C:white} X#1# {C:inactive} 倍率)", + }, + }, }, v_dictionary = { a_candy = { - "+#1# 糖果" + "+#1# 糖果", }, a_powchips = { - "^#1# 筹码" + "^#1# 筹码", }, a_powchips_minus = { - "-^#1# 筹码" + "-^#1# 筹码", }, a_powmult = { - "^#1# 倍率" + "^#1# 倍率", }, a_powmult_minus = { - "-^#1# 倍率" + "-^#1# 倍率", }, a_powmultchips = { - "^#1# 倍率+筹码" + "^#1# 倍率+筹码", }, a_powmultchips_minus = { - "-^#1# 倍率+筹码" + "-^#1# 倍率+筹码", }, a_round = { - "+#1# 回合" + "+#1# 回合", }, a_round_minus = { - "-#1# 回合" + "-#1# 回合", }, + a_tag_minus = { "-#1# 标签" }, + a_tags_minus = { "-#1# 标签" }, a_tag = { - "#1# 标签" + "#1# 标签", }, a_tags = { - "#1# 标签" + "#1# 标签", }, a_xchips = { - "X#1# 筹码" + "X#1# 筹码", }, a_xchips_minus = { - "-X#1# 筹码" + "-X#1# 筹码", }, cry_art = { - "美术: #1#" + "美术: #1#", }, cry_code = { - "程序: #1#" + "程序: #1#", }, cry_idea = { - "想法: #1#" + "想法: #1#", }, cry_sticker_desc = { "使用这张小丑在", "#2#Stake#3# 难度", - "赢得 #2##1#" + "赢得 #2##1#", }, cry_sticker_name = { - "#1# 贴纸" - } + "#1# 贴纸", + }, }, v_text = { ch_c_all_rnj = { - "所有小丑都是 {C:attention}RNJoker{}" + "所有小丑都是 {C:attention}RNJoker{}", }, ch_c_cry_all_banana = { - "所有小丑都是 {C:eternal}香蕉{}" + "所有小丑都是 {C:eternal}香蕉{}", }, ch_c_cry_all_perishable = { - "所有小丑都是 {C:eternal}易腐{}" + "所有小丑都是 {C:eternal}易腐{}", }, ch_c_cry_all_pinned = { - "所有小丑都是 {C:eternal}固定{}" + "所有小丑都是 {C:eternal}固定{}", }, ch_c_cry_all_rental = { - "所有小丑都是 {C:eternal}租赁{}" + "所有小丑都是 {C:eternal}租赁{}", }, ch_c_cry_no_boosters = { - "{C:attention}补充包{}不再出现在商店中" + "{C:attention}补充包{}不再出现在商店中", }, ch_c_cry_no_consumables = { - "不再出现{C:attention}消耗牌{} " + "不再出现{C:attention}消耗牌{} ", }, ch_c_cry_no_rerolls = { - "禁止 {C:attention}重掷{}" + "禁止 {C:attention}重掷{}", }, ch_c_cry_no_tags = { - "跳过功能已 {C:attention}禁用{}" + "跳过功能已 {C:attention}禁用{}", }, ch_c_cry_no_vouchers = { - "{C:attention}优惠券{} 不再出现在商店中" + "{C:attention}优惠券{} 不再出现在商店中", }, ch_c_cry_rush_hour = { - "所有 Boss 盲注都是 {C:attention}时钟{} 或 {C:attention}薰衣草循环" + "所有 Boss 盲注都是 {C:attention}时钟{} 或 {C:attention}薰衣草循环", }, ch_c_cry_rush_hour_ii = { - "所有盲注都是 {C:attention}Boss 盲注{}" + "所有盲注都是 {C:attention}Boss 盲注{}", }, ch_c_cry_rush_hour_iii = { - "{C:attention}时钟{} 和 {C:attention}薰衣草循环{} 的规模是 {C:attention}两倍{} 快" + "{C:attention}时钟{} 和 {C:attention}薰衣草循环{} 的规模是 {C:attention}两倍{} 快", }, ch_c_cry_sticker_sheet_plus = { - "所有可购买的物品都有所有贴纸" - } + "所有可购买的物品都有所有贴纸", + }, }, very_fair_quips = { { "L", "没有优惠券", - "给你" + "给你", }, { "傻瓜", "你以为我会", - "给你优惠券?" + "给你优惠券?", }, { "不行!", "这里没有优惠券!", - "(崩溃版)" + "(崩溃版)", }, { "操作水平问题", "想象一下能", - "获得优惠券的水平" + "获得优惠券的水平", }, { "小丑球", "管理层", - "忘记补货了" + "忘记补货了", }, { "哎呀!", "没有优惠券", - "" + "", }, { "你这个小丑,", "你在这还在", - "看什么看呢?哈哈" + "看什么看呢?哈哈", }, { "优惠券", "在", - "另一个城堡" + "另一个城堡", }, { "$0", "空白优惠券", - "(明白了吗?)" + "(明白了吗?)", }, { "错误", "无法对 NIL 值进行算术运算", - "(T4优惠券.lua)" + "(T4优惠券.lua)", }, { "100% OFF", "所有优惠券", - "(有人已经买了)" + "(有人已经买了)", }, { "稍后再试", "提示:你没有", - "足够的钱" + "足够的钱", }, { "啊?", "优惠券 ", - "那甚至不是一个词..." + "那甚至不是一个词...", }, { "按住 R", "补货", - "所有优惠券" + "所有优惠券", }, { "你知道吗?", "按 ALT+F4", - "会得到免费优惠券!" + "会得到免费优惠券!", }, { "对不起,", "由于预算削减", - "没有优惠券" + "没有优惠券", }, { "拨打 1-600-JIMBO", "来评价你的", - "优惠券体验" + "优惠券体验", }, { "击败", "底注 39 BOSS 盲注", - "以补货" + "以补货", }, { "来个魔术", "我把这张优惠券", - "变消失了~" + "变消失了~", }, { "为什么优惠券像", - "写字台一样?" + "写字台一样?", }, { "我们已经撤回了", "你的优惠券,它们", - "在其他局中会更好用" + "在其他局中会更好用", }, { "为什么叫优惠券", "既不优惠", - "又没有券" + "又没有券", }, { "对不起", "优惠券正在经历", - "VOUCHIFIA ABORTUS" + "VOUCHIFIA ABORTUS", }, { "不幸的是", "优惠券重写更新", - "已被取消" + "已被取消", }, { "击败", "BOSS 盲注", - "以改变……啥都不变" + "以改变……啥都不变", }, { "鸟儿在歌唱,花儿在绽放", "像你这样的孩子...", - "没有优惠券可买" + "没有优惠券可买", }, { "我们很抱歉", "由于沙门氏菌污染", - "所有优惠券都已被召回" + "所有优惠券都已被召回", }, { "优惠券未能到达", "由于商店布局超出", - "200% 预算" + "200% 预算", }, { "你喜欢", "买优惠券,对吧", - "你是优惠券买家" + "你是优惠券买家", }, { "优惠券", "!E", - "优惠券池" + "优惠券池", }, { "没有", - "优惠券" + "优惠券", }, { "没有圣诞老人", - "也没有优惠券" + "也没有优惠券", }, { "", "优惠券't", - "" + "", }, { "你", "刚刚输掉了", - "游戏" + "游戏", }, { "我可以给你", "一个漂亮的鸡蛋", - "在这些困难时期?" + "在这些困难时期?", }, { "出门摸摸草", "而不是玩", - "这个牌组" + "这个牌组", }, { "你现在可以", "玩蓝色牌组", - "对吧" + "对吧", }, { "免费域外小丑!", "快来拿,在它还没", - "卖完之前(已售罄)" + "卖完之前(已售罄)", }, { "证明他们错了", "购买一张隐形", - "优惠券,仅需 $10" + "优惠券,仅需 $10", }, { "", "没有优惠券?", - "" + "", }, { "看到这个广告了吗?", "如果你看到了,那就说明它有效", - "你也可以拥有它" + "你也可以拥有它", }, { "你现在错过了", "至少 5 张优惠券", - "噔噔等噔~" + "噔噔等噔~", }, { "10", "20 没有优惠券 XD", - "30 返回 10" + "30 返回 10", }, { "优惠券", "是一项高级功能", - "$199.99 JOLLARS 解锁" + "$199.99 JOLLARS 解锁", }, { "真正的无优惠券! ! ", "仅限飞升注", - "超平衡的牌组" + "超平衡的牌组", }, { "享受你的", "优惠券体验吗?在 JESTELP 上", - "给我们一个五星评价" + "给我们一个五星评价", }, { "免费优惠券", "火辣的单身优惠券就在你附近", - "使用这个技巧快速获得优惠券" + "使用这个技巧快速获得优惠券", }, { "隆重介绍", "第一张 T0 优惠券!", - "(即将来到 Cryptid 1.0)" + "(即将来到 Cryptid 1.0)", }, { "一张优惠券!", "但它只是想象中的", - "我还以为你想要呢" + "我还以为你想要呢", }, { "关闭广告拦截器", "没有广告,我们就不能", - "向你出售优惠券" + "向你出售优惠券", }, { "如果你有", "关于这个的问题", - "请通过 NORESPONSE@JMAIL.COM 发送电子邮件给我们" + "请通过 NORESPONSE@JMAIL.COM 发送电子邮件给我们", }, { "没有足够的钱", "来购买这张优惠券", - "所以我们为什么要把它放在这里?" + "所以我们为什么要把它放在这里?", }, { "想要优惠券吗?", "那就闭嘴", - "你不能得到任何优惠券 笑死" + "你不能得到任何优惠券 笑死", }, { "^$%& 不", "优惠券 ^%&% %&$^% 给你", - "$%&%%$ %&$&*%$^" + "$%&%%$ %&$&*%$^", }, { "一张优惠券 (相信)", "|/|", - "|/|" + "|/|", }, { "... --- ...", ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-." + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", }, { "开始游戏 > 新一局", "盯着屏幕什么也不做", - "一个小时或两个小时" + "一个小时或两个小时", }, { "我们非常抱歉", "上一个人紧急购买了", - "所有优惠券" + "所有优惠券", }, { "没有优惠券", - "可买的感觉如何" + "可买的感觉如何", }, { "小丑球掷出 1", "把所有优惠券", - "扔进了一个沟里" + "扔进了一个沟里", }, { "尝试索引", "字段 '优惠券'", - "(一个 NIL 值)" + "(一个 NIL 值)", }, { "哦,你真的以为阅读所有这些行会让你的优惠券回来?", "很抱歉告诉你,这副牌中没有你所寻求的优惠券。", - "这个异常长的文本是为了浪费你的时间和精力而设计的。" + "这个异常长的文本是为了浪费你的时间和精力而设计的。", }, { "访问", "https://youtu.be/p7YXXieghto", - "获取免费优惠券" - } - } - } + "获取免费优惠券", + }, + }, + }, } diff --git a/Cryptid/localization/zh_TW.lua b/Cryptid/localization/zh_TW.lua index bb5d5f5..dec9d88 100644 --- a/Cryptid/localization/zh_TW.lua +++ b/Cryptid/localization/zh_TW.lua @@ -1,3318 +1,3316 @@ --I couldn't get Meme Packs to work without crashing --yes somehow that was harder than RNJoker return { - descriptions = { - Back = { - b_cry_antimatter = { - name = "Antimatter Deck", - text = { - "Applies the {C:legendary,E:1}upsides{}", - "of {C:attention}every{} deck", - }, - }, - b_cry_beta = { - name = "Nostalgic Deck", - text = { - "{C:attention}Joker{} and {C:attention}Consumable{}", - "slots are {C:attention}combined", - "{C:attention}Nostalgic{} Blinds replace", - "their updated Blind" - }, - }, - b_cry_blank = { - name = "Blank Deck", - text = { - "{C:inactive,E:1}Does nothing?", - }, - }, - b_cry_CCD = { - name = "CCD Deck", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - b_cry_conveyor = { - name = "Conveyor Deck", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - b_cry_critical = { - name = "Critical Deck", - text = { - "After each hand played,", - "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - b_cry_encoded = { - name = "Encoded Deck", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - b_cry_equilibrium = { - name = "Deck of Equilibrium", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}Overstock Plus", - }, - }, - b_cry_glowing = { - name = "Glowing Deck", - text = { - "Multiply the values of", - "all Jokers by {X:dark_edition,C:white} X1.25 {}", - "when Boss Blind is defeated", - "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here - }, - }, - b_cry_infinite = { - name = "Infinite Deck", - text = { - "You can select {C:attention}any", - "number of cards", - "{C:attention}+1{} hand size", - }, - }, - b_cry_misprint = { - name = "Misprint Deck", - text = { - "Values of cards", - "and poker hands", - "are {C:attention}randomized", - }, - }, - b_cry_redeemed = { - name = "Redeemed Deck", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - b_cry_very_fair = { - name = "Very Fair Deck", - text = { - "{C:blue}-2{} hands, {C:red}-2{} discards", - "every round", - "{C:attention}Vouchers{} no longer", - "appear in the shop", - }, - }, - b_cry_wormhole = { - name = "Wormhole Deck", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - b_cry_legendary = { - name = "Legendary Deck", - text = { - "Start with an {C:legendary}Legendary{C:legendary} Joker", - "{C:green}1 in 5{} chance to create another", + descriptions = { + Back = { + b_cry_antimatter = { + name = "Antimatter Deck", + text = { + "Applies the {C:legendary,E:1}upsides{}", + "of {C:attention}every{} deck", + }, + }, + b_cry_beta = { + name = "Nostalgic Deck", + text = { + "{C:attention}Joker{} and {C:attention}Consumable{}", + "slots are {C:attention}combined", + "{C:attention}Nostalgic{} Blinds replace", + "their updated Blind", + }, + }, + b_cry_blank = { + name = "Blank Deck", + text = { + "{C:inactive,E:1}Does nothing?", + }, + }, + b_cry_CCD = { + name = "CCD Deck", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + b_cry_conveyor = { + name = "Conveyor Deck", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + b_cry_critical = { + name = "Critical Deck", + text = { + "After each hand played,", + "{C:green}#1# in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}#1# in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + b_cry_encoded = { + name = "Encoded Deck", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + b_cry_equilibrium = { + name = "Deck of Equilibrium", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}Overstock Plus", + }, + }, + b_cry_glowing = { + name = "Glowing Deck", + text = { + "Multiply the values of", + "all Jokers by {X:dark_edition,C:white} X1.25 {}", + "when Boss Blind is defeated", + "{X:cry_jolly,C:white,s:0.8} Jolly#1#Open#1#Winner#1#-#1#wawa#1#person", --peak loc_vars right here + }, + }, + b_cry_infinite = { + name = "Infinite Deck", + text = { + "You can select {C:attention}any", + "number of cards", + "{C:attention}+1{} hand size", + }, + }, + b_cry_misprint = { + name = "Misprint Deck", + text = { + "Values of cards", + "and poker hands", + "are {C:attention}randomized", + }, + }, + b_cry_redeemed = { + name = "Redeemed Deck", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + b_cry_very_fair = { + name = "Very Fair Deck", + text = { + "{C:blue}-2{} hands, {C:red}-2{} discards", + "every round", + "{C:attention}Vouchers{} no longer", + "appear in the shop", + }, + }, + b_cry_wormhole = { + name = "Wormhole Deck", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + b_cry_legendary = { + name = "Legendary Deck", + text = { + "Start with an {C:legendary}Legendary{C:legendary} Joker", + "{C:green}1 in 5{} chance to create another", "when Boss Blind is defeated {C:inactive}(must have room){}", - }, - }, - }, - Blind = { - bl_cry_box = { - name = "The Box", - text = { - "All Common Jokers", - "are debuffed", - }, - }, - bl_cry_clock = { - name = "The Clock", - text = { - "+0.1X blind requirements every", - "3 seconds spent this ante", - }, - }, - bl_cry_hammer = { - name = "The Hammer", - text = { - "All cards with odd", - "rank are debuffed", - }, - }, - bl_cry_joke = { - name = "The Joke", - text = { - "If score is >2X requirements,", - "set ante to multiple of #1#", - }, - }, - bl_cry_magic = { - name = "The Magic", - text = { - "All cards with even", - "rank are debuffed", - }, - }, - bl_cry_lavender_loop = { - name = "Lavender Loop", - text = { - "1.25X blind requirements every", - "1.5 seconds spent this round", - }, - }, - bl_cry_obsidian_orb = { - name = "Obsidian Orb", - text = { - "Applies abilities of", - "all defeated bosses", - }, - }, - bl_cry_oldarm = { - name = "Nostalgic Arm", - text = { - "Must play 4", - "or fewer cards", - }, - }, - bl_cry_oldfish = { - name = "Nostalgic Fish", - text = { - "All hands start", - "with 1 Mult", - }, - }, - bl_cry_oldflint = { - name = "Nostalgic Flint", - text = { - "No Flushes", - }, - }, - bl_cry_oldhouse = { - name = "Nostalgic House", - text = { - "No Full Houses", - }, - }, - bl_cry_oldmanacle = { - name = "Nostalgic Manacle", - text = { - "Divide Mult by discards", - }, - }, - bl_cry_oldmark = { - name = "Nostalgic Mark", - text = { - "No hands that", - "contain a Pair", - }, - }, - bl_cry_oldox = { - name = "Nostalgic Ox", - text = { - "All hands start", - "with 0 Chips", - }, - }, - bl_cry_oldpillar = { - name = "Nostalgic Pillar", - text = { - "No Straights", - }, - }, - bl_cry_oldserpent = { - name = "Nostalgic Serpent", - text = { - "Divide Mult by level", - "of played poker hand", - }, - }, - bl_cry_pin = { - name = "The Pin", - text = { - "Jokers with Epic or higher", - "rarity are debuffed", - }, - }, - bl_cry_pinkbow = { - name = "Pink Bow", - text = { - "Randomize rank of cards", - "held in hand on play", - }, - }, - bl_cry_sapphire_stamp = { - name = "Sapphire Stamp", - text = { - "Select an extra card, deselect", - "random card before scoring", - }, - }, - bl_cry_shackle = { - name = "The Shackle", - text = { - "All Negative Jokers", - "are debuffed", - }, - }, - bl_cry_striker = { - name = "The Striker", - text = { - "All Rare Jokers", - "are debuffed", - }, - }, - bl_cry_tax = { - name = "The Tax", - text = { - "Score per hand capped at", - "0.4X blind requirements", - }, - }, - bl_cry_tornado = { - name = "Turquoise Tornado", - text = { - "#1# in #2# chance for", - "played hand to not score", - }, - }, - bl_cry_trick = { - name = "The Trick", - text = { - "After each hand, flip all", - "face-up cards held in hand", - }, - }, - bl_cry_vermillion_virus = { - name = "Vermillion Virus", - text = { - "One random Joker", - "replaced every hand", - }, - }, - bl_cry_windmill = { - name = "The Windmill", - text = { - "All Uncommon Jokers", - "are debuffed", - }, - }, - }, - Code = { - c_cry_class = { - name = "://CLASS", - text = { - "Convert {C:cry_code}#1#{} selected card", - "to a {C:cry_code}chosen{} enhancement", - }, - }, - c_cry_commit = { - name = "://COMMIT", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}new{} Joker", - "of the {C:cry_code}same rarity", - }, - }, - c_cry_crash = { - name = "://CRASH", - text = { - "{C:cry_code,E:1}Don't.", - }, - }, - c_cry_delete = { - name = "://DELETE", - text = { - "{C:cry_code}Permanently{} remove a", - "{C:cry_code}selected{} shop item", - "{C:inactive,s:0.8}Item cannot appear again this run", - }, - }, - c_cry_divide = { - name = "://DIVIDE", - text = { - "{C:cry_code}Halve{} all listed prices", - "in current shop", - }, - }, - c_cry_exploit = { - name = "://EXPLOIT", - text = { - "The {C:cry_code}next{} hand played", - "is calculated as a", - "{C:cry_code}chosen{} poker hand", - "{C:inactive,s:0.8}Secret hands must be", - "{C:inactive,s:0.8}discovered to be valid", - }, - }, - c_cry_hook = { - name = "HOOK://", - text = { - "Select two Jokers", - "to become {C:cry_code}Hooked", - }, - }, - c_cry_machinecode = { - name = "://MACHINECODE", - text = { - "", - }, - }, - c_cry_malware = { - name = "://MALWARE", - text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, - }, - c_cry_merge = { - name = "://MERGE", - text = { - "Merge a selected {C:cry_code}consumable", - "with a selected {C:cry_code}playing card", - }, - }, - c_cry_multiply = { - name = "://MULTIPLY", - text = { - "{C:cry_code}Double{} all values of", - "a selected {C:cry_code}Joker{} until", - "end of round", - }, - }, - c_cry_payload = { - name = "://PAYLOAD", - text = { - "Next defeated Blind", - "gives {C:cry_code}X#1#{} interest", - }, - }, - c_cry_oboe = { - name = "://OFFBYONE", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:cry_code}#1#{} extra card and", - "{C:cry_code}#1#{} extra choice", - "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", - }, - }, - c_cry_reboot = { - name = "://REBOOT", - text = { - "Replenish {C:blue}Hands{} and {C:red}Discards{},", - "return {C:cry_code}all{} cards to deck", - "and draw a {C:cry_code}new{} hand", - }, - }, - c_cry_revert = { - name = "://REVERT", - text = { - "Set {C:cry_code}game state{} to", - "start of {C:cry_code}this Ante{}", - }, - }, - c_cry_rework = { - name = "://REWORK", - text = { - "Destroy a {C:cry_code}selected{} Joker,", - "create a {C:cry_code}Rework Tag{} with", - "an {C:cry_code}upgraded{} edition", - "{C:inactive,s:0.8}Upgrades using order in the Collection", - }, - }, - c_cry_run = { - name = "://RUN", - text = { - "Visit a {C:cry_code}shop", - "during a {C:cry_code}Blind", - }, - }, - c_cry_seed = { - name = "://SEED", - text = { - "Select a Joker", - "or playing card", - "to become {C:cry_code}Rigged", - }, - }, - c_cry_semicolon = { - name = ";//", - text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, - }, - c_cry_spaghetti = { - name = "://SPAGHETTI", - text = { - "Create a {C:cry_code}Glitched", - "Food Joker", - }, - }, - c_cry_variable = { - name = "://VARIABLE", - text = { - "Convert {C:cry_code}#1#{} selected cards", - "to a {C:cry_code}chosen{} rank", - }, - }, - }, - Edition = { - e_cry_astral = { - name = "Astral", - text = { - "{X:dark_edition,C:white}^#1#{} Mult", - }, - }, - e_cry_blur = { - name = "Blurred", - text = { - "{C:attention}Retrigger{} this", - "card {C:attention}1{} time", - "{C:green}#1# in #2#{} chance", - "to retrigger {C:attention}#3#{}", - "additional time", - }, - }, - e_cry_double_sided = { - name = "Double-Sided", - text = { - "This card can be", - "{C:attention}flipped{} to reveal", - "a different card", - "{C:inactive}(Blank side can be merged", + }, + }, + }, + Blind = { + bl_cry_box = { + name = "The Box", + text = { + "All Common Jokers", + "are debuffed", + }, + }, + bl_cry_clock = { + name = "The Clock", + text = { + "+0.1X blind requirements every", + "3 seconds spent this ante", + }, + }, + bl_cry_hammer = { + name = "The Hammer", + text = { + "All cards with odd", + "rank are debuffed", + }, + }, + bl_cry_joke = { + name = "The Joke", + text = { + "If score is >2X requirements,", + "set ante to multiple of #1#", + }, + }, + bl_cry_magic = { + name = "The Magic", + text = { + "All cards with even", + "rank are debuffed", + }, + }, + bl_cry_lavender_loop = { + name = "Lavender Loop", + text = { + "1.25X blind requirements every", + "1.5 seconds spent this round", + }, + }, + bl_cry_obsidian_orb = { + name = "Obsidian Orb", + text = { + "Applies abilities of", + "all defeated bosses", + }, + }, + bl_cry_oldarm = { + name = "Nostalgic Arm", + text = { + "Must play 4", + "or fewer cards", + }, + }, + bl_cry_oldfish = { + name = "Nostalgic Fish", + text = { + "All hands start", + "with 1 Mult", + }, + }, + bl_cry_oldflint = { + name = "Nostalgic Flint", + text = { + "No Flushes", + }, + }, + bl_cry_oldhouse = { + name = "Nostalgic House", + text = { + "No Full Houses", + }, + }, + bl_cry_oldmanacle = { + name = "Nostalgic Manacle", + text = { + "Divide Mult by discards", + }, + }, + bl_cry_oldmark = { + name = "Nostalgic Mark", + text = { + "No hands that", + "contain a Pair", + }, + }, + bl_cry_oldox = { + name = "Nostalgic Ox", + text = { + "All hands start", + "with 0 Chips", + }, + }, + bl_cry_oldpillar = { + name = "Nostalgic Pillar", + text = { + "No Straights", + }, + }, + bl_cry_oldserpent = { + name = "Nostalgic Serpent", + text = { + "Divide Mult by level", + "of played poker hand", + }, + }, + bl_cry_pin = { + name = "The Pin", + text = { + "Jokers with Epic or higher", + "rarity are debuffed", + }, + }, + bl_cry_pinkbow = { + name = "Pink Bow", + text = { + "Randomize rank of cards", + "held in hand on play", + }, + }, + bl_cry_sapphire_stamp = { + name = "Sapphire Stamp", + text = { + "Select an extra card, deselect", + "random card before scoring", + }, + }, + bl_cry_shackle = { + name = "The Shackle", + text = { + "All Negative Jokers", + "are debuffed", + }, + }, + bl_cry_striker = { + name = "The Striker", + text = { + "All Rare Jokers", + "are debuffed", + }, + }, + bl_cry_tax = { + name = "The Tax", + text = { + "Score per hand capped at", + "0.4X blind requirements", + }, + }, + bl_cry_tornado = { + name = "Turquoise Tornado", + text = { + "#1# in #2# chance for", + "played hand to not score", + }, + }, + bl_cry_trick = { + name = "The Trick", + text = { + "After each hand, flip all", + "face-up cards held in hand", + }, + }, + bl_cry_vermillion_virus = { + name = "Vermillion Virus", + text = { + "One random Joker", + "replaced every hand", + }, + }, + bl_cry_windmill = { + name = "The Windmill", + text = { + "All Uncommon Jokers", + "are debuffed", + }, + }, + }, + Code = { + c_cry_class = { + name = "://CLASS", + text = { + "Convert {C:cry_code}#1#{} selected card", + "to a {C:cry_code}chosen{} enhancement", + }, + }, + c_cry_commit = { + name = "://COMMIT", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}new{} Joker", + "of the {C:cry_code}same rarity", + }, + }, + c_cry_crash = { + name = "://CRASH", + text = { + "{C:cry_code,E:1}Don't.", + }, + }, + c_cry_delete = { + name = "://DELETE", + text = { + "{C:cry_code}Permanently{} remove a", + "{C:cry_code}selected{} shop item", + "{C:inactive,s:0.8}Item cannot appear again this run", + }, + }, + c_cry_divide = { + name = "://DIVIDE", + text = { + "{C:cry_code}Halve{} all listed prices", + "in current shop", + }, + }, + c_cry_exploit = { + name = "://EXPLOIT", + text = { + "The {C:cry_code}next{} hand played", + "is calculated as a", + "{C:cry_code}chosen{} poker hand", + "{C:inactive,s:0.8}Secret hands must be", + "{C:inactive,s:0.8}discovered to be valid", + }, + }, + c_cry_hook = { + name = "HOOK://", + text = { + "Select two Jokers", + "to become {C:cry_code}Hooked", + }, + }, + c_cry_machinecode = { + name = "://MACHINECODE", + text = { + "", + }, + }, + c_cry_malware = { + name = "://MALWARE", + text = { "Add {C:dark_edition}Glitched{} to all", "cards {C:cry_code}held in hand" }, + }, + c_cry_merge = { + name = "://MERGE", + text = { + "Merge a selected {C:cry_code}consumable", + "with a selected {C:cry_code}playing card", + }, + }, + c_cry_multiply = { + name = "://MULTIPLY", + text = { + "{C:cry_code}Double{} all values of", + "a selected {C:cry_code}Joker{} until", + "end of round", + }, + }, + c_cry_payload = { + name = "://PAYLOAD", + text = { + "Next defeated Blind", + "gives {C:cry_code}X#1#{} interest", + }, + }, + c_cry_oboe = { + name = "://OFFBYONE", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:cry_code}#1#{} extra card and", + "{C:cry_code}#1#{} extra choice", + "{C:inactive}(Currently {C:cry_code}+#2#{C:inactive})", + }, + }, + c_cry_reboot = { + name = "://REBOOT", + text = { + "Replenish {C:blue}Hands{} and {C:red}Discards{},", + "return {C:cry_code}all{} cards to deck", + "and draw a {C:cry_code}new{} hand", + }, + }, + c_cry_revert = { + name = "://REVERT", + text = { + "Set {C:cry_code}game state{} to", + "start of {C:cry_code}this Ante{}", + }, + }, + c_cry_rework = { + name = "://REWORK", + text = { + "Destroy a {C:cry_code}selected{} Joker,", + "create a {C:cry_code}Rework Tag{} with", + "an {C:cry_code}upgraded{} edition", + "{C:inactive,s:0.8}Upgrades using order in the Collection", + }, + }, + c_cry_run = { + name = "://RUN", + text = { + "Visit a {C:cry_code}shop", + "during a {C:cry_code}Blind", + }, + }, + c_cry_seed = { + name = "://SEED", + text = { + "Select a Joker", + "or playing card", + "to become {C:cry_code}Rigged", + }, + }, + c_cry_semicolon = { + name = ";//", + text = { "Ends current non-Boss {C:cry_code}Blind{}", "{C:cry_code}without{} cashing out" }, + }, + c_cry_spaghetti = { + name = "://SPAGHETTI", + text = { + "Create a {C:cry_code}Glitched", + "Food Joker", + }, + }, + c_cry_variable = { + name = "://VARIABLE", + text = { + "Convert {C:cry_code}#1#{} selected cards", + "to a {C:cry_code}chosen{} rank", + }, + }, + }, + Edition = { + e_cry_astral = { + name = "Astral", + text = { + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + e_cry_blur = { + name = "Blurred", + text = { + "{C:attention}Retrigger{} this", + "card {C:attention}1{} time", + "{C:green}#1# in #2#{} chance", + "to retrigger {C:attention}#3#{}", + "additional time", + }, + }, + e_cry_double_sided = { + name = "Double-Sided", + text = { + "This card can be", + "{C:attention}flipped{} to reveal", + "a different card", + "{C:inactive}(Blank side can be merged", "{C:inactive}with another card)", - }, - }, - e_cry_glass = { - name = "Fragile", - label = "Fragile", - text = { - "{C:white,X:mult} X#3# {} Mult", - "{C:green}#1# in #2#{} chance this", - "card isn't {C:red}destroyed", - "when triggered", - }, - }, - e_cry_glitched = { - name = "Glitched", - text = { - "All values on this card", - "are {C:dark_edition}randomized{}", - "between {C:attention}X0.1{} and {C:attention}X10{}", - "{C:inactive}(If possible){}", - }, - }, - e_cry_gold = { - name = "Golden", - label = "Golden", - text = { - "Earn {C:money}$#1#{} when used", - "or triggered", - }, - }, - e_cry_m = { - name = "Jolly", - text = { - "{C:mult}+#1#{} Mult", - "This card is feeling", - "rather {C:attention}jolly{}", - }, - }, - e_cry_mosaic = { - name = "Mosaic", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - e_cry_noisy = { - name = "Noisy", - text = { - "???", - }, - }, - e_cry_oversat = { - name = "Oversaturated", - text = { - "All values", - "on this card", - "are {C:attention}doubled{}", - "{C:inactive}(If possible)", - }, - }, - }, - Enhanced = { - m_cry_echo = { - name = "Echo Card", - text = { - "{C:green}#2# in #3#{} chance to", - "{C:attention}retrigger{} #1# additional", - "times when scored", - }, - }, - }, - Joker = { - j_cry_altgoogol = { - name = "Nostalgic Googol Play Card", - text = { - "Sell this card to create", - "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", - "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", - }, - }, - j_cry_antennastoheaven = { - name = "...Like Antennas to Heaven", - text = { - "This Joker gains", - "{X:chips,C:white} X#1# {} Chips when each", - "played {C:attention}7{} or {C:attention}4{} is scored", - "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", - }, - }, - j_cry_apjoker = { - name = "AP Joker", - text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, - }, - j_cry_big_cube = { - name = "Big Cube", - text = { - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_biggestm = { - name = "Huge", - text = { - "{X:mult,C:white} X#1# {} Mult until end", - "of round if {C:attention}poker hand{}", - "is a {C:attention}#2#{}", - "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", - "{C:inactive,s:0.8}not fat, just big boned.", - }, - }, - j_cry_blender = { - name = "Blender", - text = { - "Create a {C:attention}random{}", - "consumable when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_blurred = { - name = "Blurred Joker", - text = { - "Gain {C:blue}+#1#{} hand(s) when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_bonk = { - name = "Bonk", - text = { - "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", - "Increase amount by {C:chips}+#2#{} if", - "{C:attention} poker hand{} is a {C:attention}#3#{}", - "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", - }, - }, - j_cry_bonusjoker = { - name = "Bonus Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Bonus{} card to increase", - "{C:attention}Joker{} or {C:attention}Consumable slots", - "by {C:dark_edition}1{} when scored", - "{C:red}Works twice per round", - "{C:inactive,s:0.8}(Equal chance for each){}", - }, - }, - j_cry_booster = { - name = "Booster Joker", - text = { - "{C:attention}+#1#{} Booster Pack slot", - "available in shop", - }, - }, - j_cry_boredom = { - name = "Boredom", - text = { - "{C:green}#1# in #2#{} chance to", - "{C:attention}retrigger{} each {C:attention}Joker{}", - "or {C:attention}played card{}", - "{C:inactive,s:0.8}Does not affect other Boredom{}", - }, - }, - j_cry_bubblem = { - name = "Bubble M", - text = { - "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", - "if played hand contains", - "a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_busdriver = { - name = "Bus Driver", - text = { - "{C:green}#1# in #3#{} chance", - "for {C:mult}+#2#{} Mult", - "{C:green}1 in 4{} chance", - "for {C:mult}-#2#{} Mult", - }, - }, - j_cry_canvas = { - name = "Canvas", - text = { - "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", - "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", - "to the right of this Joker", - }, - }, - j_cry_caramel = { - name = "Caramel", - text = { - "Each played card gives", - "{X:mult,C:white}X#1#{} Mult when scored", - "for the next {C:attention}#2#{} rounds", - }, - }, - j_cry_chad = { - name = "Chad", - text = { - "Retrigger {C:attention}leftmost{} Joker", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_chili_pepper = { - name = "Chili Pepper", - text = { - "This Joker gains {X:mult,C:white} X#2# {} Mult", - "at end of round,", - "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", - "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", - }, - }, - j_cry_circulus_pistoris = { - name = "Circulus Pistoris", - text = { - "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", - "if {C:attention}exactly{} #2#", - "hands remaining", - }, - }, - j_cry_circus = { - name = "Circus", - text = { - "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", - "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", - "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", - "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", - }, - }, - j_cry_CodeJoker = { - name = "Code Joker", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:cry_code}Code Card{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_coin = { - name = "Crypto Coin", - text = { - "Earn between", - "{C:money}$#1#{} and {C:money}$#2#{} for", - "each Joker {C:attention}sold{}", - }, - }, - j_cry_compound_interest = { - name = "Compound Interest", - text = { - "Earn {C:money}#1#%{} of total money", - "at end of round,", - "increases by {C:money}#2#%{} per", - "consecutive payout", - }, - }, - j_cry_copypaste = { - name = "Copy/Paste", - text = { - "When a {C:cry_code}Code{} card is used,", - "{C:green}#1# in #2#{} chance to add a copy", - "to your consumable area", - "{C:inactive}(Must have room)", - }, - }, - j_cry_crustulum = { - name = "Crustulum", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "per {C:attention}reroll{} in the shop", - "{C:green}All rerolls are free{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", - }, - }, - j_cry_cryptidmoment = { - name = "M Chain", - text = { - "Sell this card to", - "add {C:money}$#1#{} of {C:attention}sell value{}", - "to every {C:attention}Joker{} card", - }, - }, - j_cry_cube = { - name = "Cube", - text = { - "{C:chips}+#1#{} Chips", - }, - }, - j_cry_curse_sob = { - name = "Sob", - text = { - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", - "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", - "{C:dark_edition,E:1}you cannot escape...{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_cursor = { - name = "Cursor", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "for each card {C:attention}purchased{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_cut = { - name = "Cut", - text = { - "This Joker destroys", - "a random {C:cry_code}Code{} card", - "and gains {X:mult,C:white} X#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_delirious = { - name = "Delirious Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_discreet = { - name = "Discreet Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_doodlem = { - name = "Doodle M", - text = { - "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", - "when {C:attention}Blind{} is selected", - "Create 1 more {C:attention}consumable", - "for each {C:attention}Jolly Joker{}", - }, - }, - ["j_cry_Double Scale"] = { - name = "Double Scale", - text = { - "Scaling {C:attention}Jokers{}", - "scale {C:attention}quadratically", - "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", - "{C:inactive,s:0.8}(grows by +1, +2, +3)", - }, - }, - j_cry_dropshot = { - name = "Dropshot", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult for", - "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", - "suit changes every round", - "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", - }, - }, - j_cry_dubious = { - name = "Dubious Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_duos = { - name = "The Duos", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_duplicare = { - name = 'Duplicare', - text = { - "Every {C:attention}Joker{} gives", - "{X:dark_edition,C:white}^#1#{} Mult" - } - }, - j_cry_effarcire = { - name = "Effarcire", - text = { - "Draw {C:green}full deck{} to hand", - "when {C:attention}Blind{} is selected", - "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", - "{C:inactive,s:0.8}you don't deserve me at my 2x\"", - }, - }, - j_cry_energia = { - name = "Energia", - text = { - "When a {C:attention}Tag{} is acquired,", - "create {C:attention}#1#{} copies of it", - "and {C:attention}increase{} the number of", - "copies by {C:attention}#2#", - }, - }, - j_cry_equilib = { - name = "Ace Aequilibrium", - text = { - "Jokers appear using the", - "order from the {C:attention}Collection{}", - "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", - "when hand is played", - "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", - "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", - }, - }, - j_cry_error = { - name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", - text = { - "", - }, - }, - j_cry_eternalflame = { - name = "Eternal Flame", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "for each card {C:attention}sold{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_exoplanet = { - name = "Exoplanet", - text = { - "{C:dark_edition}Holographic{} cards", - "each give {C:mult}+#1#{} Mult", - }, - }, - j_cry_exponentia = { - name = "Exponentia", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "when {X:red,C:white} XMult {} is triggered", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_facile = { - name = "Facile", - text = { - "{X:dark_edition,C:white}^#1#{} Mult if", - "played cards are scored", - "{C:attention}#2#{} or fewer times", - }, - }, - j_cry_filler = { - name = "The Filler", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_fractal = { - name = "Fractal Fingers", - text = { - "{C:attention}+#1#{} card selection limit", - }, - }, - j_cry_flip_side = { - name = "On the Flip Side", - text = { - "{C:dark_edition}Double-Sided{} Jokers use", - "their back side for effects", - "instead of the front side", - "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers" - }, - }, - j_cry_foodm = { - name = "Fast Food M", - text = { - "{C:mult}+#1#{} Mult", - "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", - "Increases by {C:attention}#3#{} round when", - "{C:attention}Jolly Joker{} is {C:attention}sold{}", - "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", - "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", - }, - }, - j_cry_foxy = { - name = "Foxy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_fspinner = { - name = "Fidget Spinner", - text = { - "This Joker gains {C:chips}+#2#{} Chips", - "if hand played is {C:attention}not{}", - "most played {C:attention}poker hand{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_gardenfork = { - name = "Garden of Forking Paths", - text = { - "Earn {C:money}$#1#{} if {C:attention}played hand{}", - "contains an {C:attention}Ace{} and a {C:attention}7{}", - }, - }, - j_cry_gemino = { - name = "Gemini", - text = { - "{C:attention}Double{} all values", - "of leftmost {C:attention}Joker", - "at end of round", - }, - }, - j_cry_giggly = { - name = "Absurd Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_goldjoker = { - name = "Gold Joker", - text = { - "Earn {C:money}#1#%{} of total", - "money at end of round", - "Payout increases by {C:money}#2#%{}", - "when each played {C:attention}Gold{}", - "card is scored", - }, - }, - j_cry_googol_play = { - name = "Googol Play Card", - text = { - "{C:green}#1# in #2#{} chance for", - "{X:red,C:white} X#3# {} Mult", - }, - }, - j_cry_happy = { - name = ":D", - text = { - "Create a random {C:attention}Joker{}", - "at end of round", - "Sell this card to", - "create a random {C:attention}Joker{}", - "{C:inactive}(Must have room){}", - }, - }, - j_cry_happyhouse = { - name = "Happy House", - text = { - "{X:dark_edition,C:white}^#1#{} Mult only after", - "playing {C:attention}114{} hands{}", - "{C:inactive}(Currently #2#/114){}", - "{C:inactive,s:0.8}There is no place like home!{}", - }, - }, - j_cry_home = { - name = "The Home", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_hunger = { - name = "Consume-able", - text = { - "Earn {C:money}$#1#{} when", - "using a {C:attention}consumable{}", - }, - }, - j_cry_iterum = { - name = "Iterum", - text = { - "Retrigger all cards played", - "{C:attention}#2#{} time(s),", - "each played card gives", - "{X:mult,C:white} X#1# {} Mult when scored", - }, - }, - j_cry_jimball = { - name = "Jimball", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "per {C:attention}consecutive{} hand played", - "while playing your", - "most played {C:attention}poker hand", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_jollysus = { - name = "Jolly Joker?", - text = { - "Create a {C:dark_edition}Jolly{} Joker", - "when a Joker is {C:attention}sold{}", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - "{C:inactive,s:0.8}Seems legit...{}", - }, - }, - j_cry_kidnap = { - name = "Kidnapping", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{}", - "when a {C:attention}Type Mult{} or", - "{C:attention}Type Chips{} Joker is sold", - }, - }, - j_cry_kooky = { - name = "Kooky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_krustytheclown = { - name = "Krusty the Clown", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when", - "each played {C:attention}card{} is scored", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_kscope = { - name = "Kaleidoscope", - text = { - "Add {C:dark_edition}Polychrome{} to", - "a random {C:attention}Joker{} when", - "{C:attention}Boss Blind{} is defeated", - }, - }, - j_cry_lightupthenight = { - name = "Light Up the Night", - text = { - "Each played {C:attention}7{} or {C:attention}2{}", - "gives {X:mult,C:white}X#1#{} Mult when scored", - }, - }, - j_cry_longboi = { - name = "Monster", - text = { - "Give future copies of", - "this Joker {X:mult,C:white}X#1#{} Mult", - "at end of round", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", - }, - }, - j_cry_loopy = { - name = "Loopy", - text = { - "{C:attention}Retrigger{} all Jokers", - "once for each {C:attention}Jolly{}", - "{C:attention}Joker{} sold this round", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", - "{C:inactive,s:0.8}There wasn't enough room...{}", - }, - }, - j_cry_lucky_joker = { - name = "Lucky Joker", - text = { - "Earn {C:money}$#1#{} every time a", - "{C:attention}Lucky{} card {C:green}successfully{}", - "triggers", - }, - }, - j_cry_luigi = { - name = "Luigi", - text = { - "All Jokers give", - "{X:chips,C:white} X#1# {} Chips", - }, - }, - j_cry_m = { - name = "m", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "when {C:attention}Jolly Joker{} is sold", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_M = { - name = "M", - text = { - "Create a {C:dark_edition}Negative{}", - "{C:attention}Jolly Joker{} when", - "{C:attention}Blind{} is selected", - }, - }, - j_cry_macabre = { - name = "悚小丑", - text = { - "當{C:attention}盲注{}被選擇,", - "摧毀{C:legendary}M小丑{}和{C:attention}快樂小丑{}", - "以外的{C:attention}小丑{}和", - "生成被摧毀卡數量的{C:attention}快樂小丑{}", - --"When {C:attention}Blind{} is selected,", - --"destroys each {C:attention}Joker{} except", - --"{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", - --"and create 1 {C:attention}Jolly Joker{}", - --"for each destroyed card", - }, - }, - j_cry_magnet = { - name = "Fridge Magnet", - text = { - "Earn {C:money}$#1#{} at end of round", - "This earns {X:money,C:white} X#2# {} if there are", - "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", - }, - }, - j_cry_manic = { - name = "Manic Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_mario = { - name = "Mario", - text = { - "Retrigger all Jokers", - "{C:attention}#1#{} additional time(s)", - }, - }, - j_cry_maximized = { - name = "Maximized", - text = { - "All {C:attention}face{} cards", - "are considered {C:attention}Kings{},", - "all {C:attention}numbered{} cards", - "are considered {C:attention}10s{}", - }, - }, - j_cry_maze = { - name = "Labyrinth", - text = { - "All hands are considered the", - "{C:attention}first hand{} of each round,", - "all discards are considered the", - "{C:attention}first discard{} of each round", - }, - }, - j_cry_Megg = { - name = "Megg", - text = { - "Sell this card to create", - "{C:attention}#2#{} Jolly #3#, increase", - "by {C:attention}#1#{} at end of round", - }, - }, - j_cry_membershipcard = { - name = "Membership Card", - text = { - "{X:mult,C:white}X#1#{} Mult for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_membershipcardtwo = { - name = "Old Membership Card", --Could probably have a diff Name imo - text = { - "{C:chips}+#1#{} Chips for each member", - "in the {C:attention}Cryptid Discord{}", - "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", - "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", - }, - }, - j_cry_meteor = { - name = "Meteor Shower", - text = { - "{C:dark_edition}Foil{} cards each", - "give {C:chips}+#1#{} Chips", - }, - }, - j_cry_mneon = { - name = "Neon M", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by", - "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", - "or {C:legendary}M Joker{} at", - "end of round", - }, - }, - j_cry_mondrian = { - name = "Mondrian", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if no {C:attention}discards{} were", - "used this round", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_monkey_dagger = { - name = "Monkey Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and permanently add {C:attention}ten times{}", - "its sell value to this {C:chips}Chips{}", - "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", - }, - }, - j_cry_morse = { - name = "Morse Code", - text = { - "Earn {C:money}$#2#{} at end of round", - "Increase payout by {C:money}$#1#{} when", - "a card with an {C:attention}Edition{} is sold", - }, - }, - j_cry_mprime = { - name = "Tredecim", - text = { - "Create an {C:legendary}M Joker{} at end of round", - "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", - "gives {X:dark_edition,C:white}^#1#{} Mult", - "Increase amount by {X:dark_edition,C:white}^#2#{}", - "when a {C:attention}Jolly Joker{} is {C:attention}sold", - "{C:inactive,s:0.8}(Tredecim excluded)", - }, - }, - j_cry_mstack = { - name = "M Stack", - text = { - "Retrigger all cards played", - "once for every", - "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", - "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", - }, - }, - j_cry_multjoker = { - name = "Mult Joker", - text = { - "{C:green}#1# in #2#{} chance for each", - "played {C:attention}Mult{} card to create", - "a {C:spectral}Cryptid{} card when scored", - "{C:inactive}(Must have room)", - }, - }, - j_cry_negative = { - name = "Negative Joker", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - }, - }, - j_cry_nice = { - name = "Nice", - text = { - "{C:chips}+#1#{} Chips if played hand", - "contains a {C:attention}6{} and a {C:attention}9", - "{C:inactive,s:0.8}Nice.{}", - }, - }, - j_cry_night = { - name = "Night", - text = { - "{X:dark_edition,C:white}^#1#{} Mult on final", - "hand of round", - "{E:2,C:red}self destructs{} on", - "final hand of round", - }, - }, - j_cry_nosound = { - name = "No Sound, No Memory", - text = { - "Retrigger each played {C:attention}7{}", - "{C:attention:}#1#{} additional time(s)", - }, - }, - j_cry_notebook = { - name = "Notebook", - text = { - "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", - "slot per {C:attention}reroll{} in the shop", - "{C:green}Always triggers{} if there are", - "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", - "{C:red}Works once per round{}", - "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", - }, - }, - j_cry_number_blocks = { - name = "Number Blocks", - text = { - "Earn {C:money}$#1#{} at end of round", - "Increase payout by {C:money}$#2#{}", - "for each {C:attention}#3#{} held in hand,", - "rank changes every round", - }, - }, - j_cry_nuts = { - name = "The Nuts", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_nutty = { - name = "Nutty Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_oldblueprint = { - name = "Old Blueprint", - text = { - "Copies ability of", - "{C:attention}Joker{} to the right", - "{C:green}#1# in #2#{} chance this", - "card is destroyed", - "at end of round", - }, - }, - j_cry_oldcandy = { - name = "Nostalgic Candy", - text = { - "Sell this card to", - "permanently gain", - "{C:attention}+#1#{} hand size", - }, - }, - j_cry_oldinvisible = { - name = "Nostalgic Invisible Joker", - text = { - "{C:attention}Duplicate{} a random", - "{C:attention}Joker{} every {C:attention}4", - "Joker cards sold", - "{s:0.8}Nostalgic Invisible Joker Excluded{}", - "{C:inactive}(Currently #1#/4){}", - }, - }, - j_cry_panopticon = { - name = "Panopticon", - text = { - "All hands are considered the", - "{C:attention}last hand{} of each round", -- +$4 - }, - }, - j_cry_pickle = { - name = "Pickle", - text = { - "When {C:attention}Blind{} is skipped, create", - "{C:attention}#1#{} Tags, reduced by", - "{C:red}#2#{} when {C:attention}Blind{} is selected", - }, - }, - j_cry_pirate_dagger = { - name = "Pirate Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the right", - "and gain {C:attention}one-fourth{} of", - "its sell value as {X:chips,C:white} XChips {}", - "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", - }, - }, - j_cry_pot_of_jokes = { - name = "Pot of Jokes", - text = { - "{C:attention}#1#{} hand size,", - "increases by", - "{C:blue}#2#{} every round", - }, - }, - j_cry_primus = { - name = "Primus", - text = { - "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", - "if all cards in played hand are", - "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_python = { - name = "Python", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when a", - "{C:cry_code}Code{} card is used", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_queens_gambit = { - name = "Queen's Gambit", - text = { - "If {C:attention}poker hand{} is a", - "{C:attention}Royal Flush{}, destroy scored", - "{C:attention}Queen{} and create a", - "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", - }, - }, - j_cry_quintet = { - name = "The Quintet", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_redbloon = { - name = "Red Bloon", - text = { - "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", - "{C:red,E:2}self destructs{}", - }, - }, - j_cry_redeo = { - name = "Redeo", - text = { - "{C:attention}-#1#{} Ante when", - "{C:money}$#2#{} {C:inactive}($#3#){} spent", - "{s:0.8}Requirements increase", - "{C:attention,s:0.8}exponentially{s:0.8} per use", - "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", - }, - }, - j_cry_rescribere = { - name = 'Rescribere', - text = { - "When a {C:attention}Joker{} is sold,", - "add its effects to", - "every other Joker", - "{C:inactive,s:0.8}Does not affect other Rescribere{}" - } - }, - j_cry_reverse = { - name = "Reverse Card", - text = { - "Fill all empty Joker slots {C:inactive}(Max 100){}", - "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", - "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", - "{C:red,E:2}self destructs{}", - "{C:inactive,s:0.8}The ULTIMATE comeback{}", - }, - }, - j_cry_rnjoker = { - name = "RNJoker", - text = { - "Randomize abilities each {C:attention}Ante{}", - }, - }, - j_cry_sacrifice = { - name = "Sacrifice", - text = { - "Create an {C:green}Uncommon{} Joker", - "and 3 {C:attention}Jolly Jokers{} when", - "a {C:spectral}Spectral{} card is used", - "{C:red}Works once per round{}", - "{C:inactive}#1#{}", - }, - }, - j_cry_sapling = { - name = "Sapling", - text = { - "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", - "cards, sell this card to", - "create an {C:cry_epic}Epic{} {C:attention}Joker{}", - "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", - "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", - }, - }, - j_cry_savvy = { - name = "Savvy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_Scalae = { - name = "Scalae", - text = { - "Scaling {C:attention}Jokers{} scale", - "as a degree-{C:attention}#1#{} polynomial", - "raise degree by {C:attention}#2#{}", - "at end of round", - "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", - }, - }, - j_cry_scrabble = { - name = "Scrabble Tile", - text = { - "{C:green}#1# in #2#{} chance to create", - "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", - "when hand is played", - }, - }, - j_cry_seal_the_deal = { - name = "Seal the Deal", - text = { - "Add a {C:attention}random seal{} to each card", - "scored on {C:attention}final hand{} of round", - }, - }, - j_cry_shrewd = { - name = "Shrewd Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_silly = { - name = "Silly Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_smallestm = { - name = "Tiny", - text = { - "Create a {C:cry_jolly}Double M", - "tag if {C:attention}poker hand{}", - "is a {C:attention}#1#{}", - "{C:inactive,s:0.8}ok so basically i'm very smol", - }, - }, - j_cry_soccer = { - name = "One for All", --changed the name from latin because this isn't exotic - text = { - "{C:attention}+#1#{} Joker slot", - "{C:attention}+#1#{} Booster Pack slot", - "{C:attention}+#1#{} hand size", - "{C:attention}+#1#{} consumable slot", - "{C:attention}+#1#{} card in shop", - }, - }, - j_cry_spaceglobe = { - name = "Celestial Globe", - text = { - "This Joker gains {X:chips,C:white}X#2#{} Chips", - "if {C:attention}poker hand{} is a {C:attention}#3#{},", - "Hand changes after increase{}", - "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", - }, - }, - j_cry_speculo = { - name = "Speculo", - text = { - "Creates a {C:dark_edition}Negative{} copy", - "of a random {C:attention}Joker{}", - "at the end of the {C:attention}shop", - "{C:inactive,s:0.8}Does not copy other Speculo{}", - }, - }, - j_cry_stardust = { - name = "Stardust", - text = { - "{C:dark_edition}Polychrome{} cards", - "each give {X:mult,C:white}X#1#{} Mult", - }, - }, - j_cry_stella_mortis = { - name = "Stella Mortis", - text = { - "This Joker destroys a", - "random {C:planet}Planet{} card", - "and gains {X:dark_edition,C:white} ^#1# {} Mult", - "at the end of the {C:attention}shop{}", - "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", - }, - }, - j_cry_subtle = { - name = "Subtle Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_supercell = { - name = "Supercell", - text = { - "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", - "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", - "Earn {C:money}$#3#{} at", - "end of round", - }, - }, - j_cry_sus = { - name = "SUS", - text = { - "At end of round, create", - "a {C:attention}copy{} of a random", - "card {C:attention}held in hand{},", - "destroy all others", - "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", - }, - }, - j_cry_swarm = { - name = "The Swarm", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_sync_catalyst = { - name = "Sync Catalyst", - text = { - "Balances {C:chips}Chips{} and {C:mult}Mult{}", - "{C:inactive,s:0.8}Hey! I've seen this one before!", - }, - }, - j_cry_tenebris = { - name = "Tenebris", - text = { - "{C:dark_edition}+#1#{C:attention} Joker{} slots", - "Earn {C:money}$#2#{} at end of round", - }, - }, - j_cry_translucent = { - name = "Translucent Joker", - text = { - "Sell this card to create", - "a {C:attention}Banana Perishable{} copy", - "of a random {C:attention}Joker{}", - "{s:0.8,C:inactive}(Copy bypasses perish compat)", - }, - }, - j_cry_tricksy = { - name = "Tricksy Joker", - text = { - "{C:chips}+#1#{} Chips if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_triplet_rhythm = { - name = "Triplet Rhythm", - text = { - "{X:mult,C:white} X#1# {} Mult if scoring hand", - "contains {C:attention}exactly{} three {C:attention}3s", - }, - }, - j_cry_unity = { - name = "The Unity", - text = { - "{X:mult,C:white} X#1# {} Mult if played", - "hand contains", - "a {C:attention}#2#", - }, - }, - j_cry_universum = { - name = "Universum", - text = { - "{C:attention}Poker hands{} gain", - "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", - "when leveled up", - }, - }, - j_cry_unjust_dagger = { - name = "Unjust Dagger", - text = { - "When {C:attention}Blind{} is selected,", - "destroy Joker to the left", - "and gain {C:attention}one-fifth{} of", - "its sell value as {X:mult,C:white} XMult {}", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_verisimile = { - name = "Non Verisimile", - text = { - "When any probability", - "is {C:green}successfully{} triggered,", - "this Joker gains {X:red,C:white}XMult{}", - "equal to its listed {C:attention}odds", - "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", - }, - }, - j_cry_virgo = { - name = "Virgo", - text = { - "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", - "if {C:attention}poker hand{} contains a {C:attention}#2#{}", - "Sell this card to create a", - "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", - "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", - }, - }, - j_cry_wacky = { - name = "Wacky Joker", - text = { - "{C:red}+#1#{} Mult if played", - "hand contains", - "a {C:attention}#2#" - } - }, - j_cry_waluigi = { - name = "Waluigi", - text = { - "All Jokers give", - "{X:mult,C:white} X#1# {} Mult", - }, - }, - j_cry_wario = { - name = "Wario", - text = { - "All Jokers give", - "{C:money}$#1#{} when triggered", - }, - }, - j_cry_wee_fib = { - name = "Weebonacci", - text = { - "This Joker gains", - "{C:mult}+#2#{} Mult when each played", - "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", - "is scored", - "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", - }, - }, - j_cry_weegaming = { - name = "2D", - text = { - "Retrigger each played {C:attention}2{}", --wee gaming - "{C:attention:}#1#{} additional time(s)", --wee gaming? - "{C:inactive,s:0.8}Wee Gaming?{}", - }, - }, - j_cry_wheelhope = { - name = "Wheel of Hope", - text = { - "This Joker gains", - "{X:mult,C:white} X#1# {} Mult when failing", - "a {C:attention}Wheel of Fortune{}", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - j_cry_whip = { - name = "The WHIP", - text = { - "This Joker gains {X:mult,C:white} X#1# {} Mult", - "if {C:attention}played hand{} contains a", - "{C:attention}2{} and {C:attention}7{} of different suits", - "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", - }, - }, - }, - Planet = { - c_cry_Klubi = { - name = "Klubi", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Lapio = { - name = "Lapio", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_nstar = { - name = "Neutron Star", - text = { - "Upgrade a random", - "poker hand by", - "{C:attention}1{} level for each", - "{C:attention}Neutron Star{} used", - "in this run", - "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", - }, - }, - c_cry_planetlua = { - name = "Planet.lua", - text = { - "{C:green}#1# in #2#{} chance to", - "upgrade every", - "{C:legendary,E:1}poker hand{}", - "by {C:attention}1{} level", - }, - }, - c_cry_Sydan = { - name = "Sydan", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - c_cry_Timantti = { - name = "Timantti", - text = { - "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", - "Level up", - "{C:attention}#1#{},", - "{C:attention}#2#{},", - "and {C:attention}#3#{}", - }, - }, - }, - Sleeve = { - sleeve_cry_ccd_sleeve = { - name = "CCD Sleeve", - text = { - "Every card is also", - "a {C:attention}random{} consumable", - }, - }, - sleeve_cry_conveyor_sleeve = { - name = "Conveyor Sleeve", - text = { - "Jokers may {C:attention}not{} be moved", - "At start of round,", - "{C:attention}duplicate{} rightmost Joker", - "and {C:attention}destroy{} leftmost Joker", - }, - }, - sleeve_cry_critical_sleeve = { - name = "Critical Sleeve", - text = { - "After each hand played,", - "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", - "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", - }, - }, - sleeve_cry_encoded_sleeve = { - name = "Encoded Sleeve", - text = { - "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", - "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", - "Only {C:cry_code}Code Cards{} appear in shop", - }, - }, - sleeve_cry_equilibrium_sleeve = { - name = "Balanced Sleeve", - text = { - "All cards have the", - "{C:attention}same chance{} of", - "appearing in shops,", - "start run with", - "{C:attention,T:v_overstock_plus}+2 Shop Slots", - }, - }, - sleeve_cry_infinite_sleeve = { - name = "Unlimited Sleeve", - text = { - "You can select {C:attention}any", - "number of cards", - --someone do the hand size thing for me - }, - }, - sleeve_cry_misprint_sleeve = { - name = "Misprinted Sleeve", - text = { - "Values of cards", - "are {C:attention}randomized", - }, - }, - sleeve_cry_redeemed_sleeve = { - name = "Redeemed Sleeve", - text = { - "When a {C:attention}Voucher{} is purchased,", - "gain its {C:attention}extra tiers", - }, - }, - sleeve_cry_wormhole_sleeve = { - name = "Wormhole Sleeve", - text = { - "Start with an {C:cry_exotic}Exotic{C:attention} Joker", - "Jokers are {C:attention}20X{} more", - "likely to be {C:dark_edition}Negative", - "{C:attention}-2{} Joker slots", - }, - }, - }, - Spectral = { - c_cry_analog = { - name = "Analog", - text = { - "Create {C:attention}#1#{} copies of a", - "random {C:attention}Joker{}, destroy", - "all other Jokers, {C:attention}+#2#{} Ante", - }, - }, - c_cry_gateway = { - name = "Gateway", - text = { - "Create a random", - "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", - "all other Jokers", - }, - }, - c_cry_hammerspace = { - name = "Hammerspace", - text = { - "Apply random {C:attention}consumables{}", - "as if they were {C:dark_edition}Enhancements{}", - "to cards held in hand", - }, - }, - c_cry_lock = { - name = "Lock", - text = { - "Remove {C:red}all{} stickers", - "from {C:red}all{} Jokers,", - "then apply {C:purple,E:1}Eternal{}", - "to a random {C:attention}Joker{}", - }, - }, - c_cry_pointer = { - name = "POINTER://", - text = { - "Create a card", - "of {C:cry_code}your choice", - "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", - }, - }, - c_cry_replica = { - name = "Replica", - text = { - "Convert all cards", - "held in hand", - "to a {C:attention}random{}", - "card held in hand", - }, - }, - c_cry_source = { - name = "Source", - text = { - "Add a {C:cry_code}Green Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_summoning = { - name = "Summoning", - text = { - "Create a random", - "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", - "one random {C:joker}Joker{}", - }, - }, - c_cry_trade = { - name = "Trade", - text = { - "{C:attention}Lose{} a random Voucher,", - "gain {C:attention}2{} random Vouchers", - }, - }, - c_cry_typhoon = { - name = "Typhoon", - text = { - "Add an {C:cry_azure}Azure Seal{}", - "to {C:attention}#1#{} selected", - "card in your hand", - }, - }, - c_cry_vacuum = { - name = "Vacuum", - text = { - "Removes {C:red}all {C:green}modifications{}", - "from {C:red}all{} cards held in hand,", - "Earn {C:money}$#1#{} per {C:green}modification{} removed", - "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", - }, - }, - c_cry_white_hole = { - name = "White Hole", - text = { - "{C:attention}Remove{} all hand levels,", - "upgrade {C:legendary,E:1}most played{} poker hand", - "by {C:attention}3{} for each removed level", - }, - }, - }, - Stake = { - stake_cry_pink = { - name = "Pink Stake", - colour = "Pink", --this is used for auto-generated sticker localization - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_brown = { - name = "Brown Stake", - colour = "Brown", - text = { - "All {C:attention}stickers{} are compatible", - "with each other", - }, - }, - stake_cry_yellow = { - name = "Yellow Stake", - colour = "Yellow", - text = { - "{C:attention}Stickers{} can appear on", - "all purchasable items", - }, - }, - stake_cry_jade = { - name = "Jade Stake", - colour = "Jade", - text = { - "Cards can be drawn {C:attention}face down{}", - }, - }, - stake_cry_cyan = { - name = "Cyan Stake", - colour = "Cyan", - text = { - "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", - "less likely to appear", - }, - }, - stake_cry_gray = { - name = "Gray Stake", - colour = "Gray", - text = { - "Rerolls increase by {C:attention}$2{} each", - }, - }, - stake_cry_crimson = { - name = "Crimson Stake", - colour = "Crimson", - text = { - "Vouchers restock on {C:attention}even{} Antes", - }, - }, - stake_cry_diamond = { - name = "Diamond Stake", - colour = "Diamond", - text = { - "Must beat Ante {C:attention}10{} to win", - }, - }, - stake_cry_amber = { - name = "Amber Stake", - colour = "Amber", - text = { - "{C:attention}-1{} Booster Pack slot", - }, - }, - stake_cry_bronze = { - name = "Bronze Stake", - colour = "Bronze", - text = { - "Vouchers are {C:attention}50%{} more expensive", - }, - }, - stake_cry_quartz = { - name = "Quartz Stake", - colour = "Quartz", - text = { - "Jokers can be {C:attention}Pinned{}", - "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", - }, - }, - stake_cry_ruby = { - name = "Ruby Stake", - colour = "Ruby", - text = { - "{C:attention}Big{} Blinds can become", - "{C:attention}Boss{} Blinds", - }, - }, - stake_cry_glass = { - name = "Glass Stake", - colour = "Glass", - text = { - "Cards can {C:attention}shatter{} when scored", - }, - }, - stake_cry_sapphire = { - name = "Sapphire Stake", - colour = "Sapphire", - text = { - "Lose {C:attention}25%{} of current money", - "at end of Ante", - "{s:0.8,C:inactive}(Up to $10){}", - }, - }, - stake_cry_emerald = { - name = "Emerald Stake", - colour = "Emerald", - text = { - "Cards, packs, and vouchers", - "can be {C:attention}face down{}", - "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", - }, - }, - stake_cry_platinum = { - name = "Platinum Stake", - colour = "Platinum", - text = { - "Small Blinds are {C:attention}removed{}", - }, - }, - stake_cry_twilight = { - name = "Twilight Stake", - colour = "Twilight", - text = { - "Cards can be {C:attention}Banana{}", - "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", - }, - }, - stake_cry_verdant = { - name = "Verdant Stake", - colour = "Verdant", - text = { - "Required score scales", - "faster for each {C:attention}Ante", - }, - }, - stake_cry_ember = { - name = "Ember Stake", - colour = "Ember", - text = { - "All items give no money when sold", - }, - }, - stake_cry_dawn = { - name = "Dawn Stake", - colour = "Dawn", - text = { - "Tarots and Spectrals target {C:attention}1", - "fewer card", - "{s:0.8,C:inactive}(Minimum of 1){}", - }, - }, - stake_cry_horizon = { - name = "Horizon Stake", - colour = "Horizon", - text = { - "When blind selected, add a", - "{C:attention}random card{} to deck", - }, - }, - stake_cry_blossom = { - name = "Blossom Stake", - colour = "Blossom", - text = { - "{C:attention}Final{} Boss Blinds can appear", - "in {C:attention}any{} Ante", - }, - }, - stake_cry_azure = { - name = "Azure Stake", - colour = "Azure", - text = { - "Values on Jokers are reduced", - "by {C:attention}20%{}", - }, - }, - stake_cry_ascendant = { - name = "Ascendant Stake", - colour = "Ascendant", - text = { - "{C:attention}-1{} Shop slot", - }, - }, - }, - Tag = { - tag_cry_astral = { - name = "Astral Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Astral{}", - }, - }, - tag_cry_banana = { - name = "Banana Tag", - text = { - "Creates {C:attention}#1#", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_bettertop_up = { - name = "Better Top-up Tag", - text = { - "Creates up to {C:attention}#1#", - "{C:green}Uncommon{} Jokers", - "{C:inactive}(Must have room){}", - }, - }, - tag_cry_better_voucher = { - name = "Golden Voucher Tag", - text = { - "Adds one Tier {C:attention}#1#{} Voucher", - "to the next shop", - }, - }, - tag_cry_blur = { - name = "Blurred Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Blurred{}", - }, - }, - tag_cry_booster = { - name = "Booster Tag", - text = { - "Next {C:cry_code}Booster Pack{} has", - "{C:attention}double{} cards and", - "{C:attention}double{} choices", - }, - }, - tag_cry_bundle = { - name = "Bundle Tag", - text = { - "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", - "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", - }, - }, - tag_cry_cat = { - name = "Cat Tag", - text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, - }, - tag_cry_console = { - name = "Console Tag", - text = { - "Gives a free", - "{C:cry_code}Program Pack", - }, - }, - tag_cry_double_m = { - name = "Double M Tag", - text = { - "Shop has a", - "{C:dark_edition}Jolly {C:legendary}M Joker{}", - }, - }, - tag_cry_empowered = { - name = "Empowered Tag", - text = { - "Gives a free {C:spectral}Spectral Pack", - "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", - }, - }, - tag_cry_epic = { - name = "Epic Tag", - text = { - "Shop has a half-price", - "{C:cry_epic}Epic Joker", - }, - }, - tag_cry_gambler = { - name = "Gambler's Tag", - text = { - "{C:green}#1# in #2#{} chance to create", - "an {C:cry_exotic,E:1}Empowered Tag", - }, - }, - tag_cry_glass = { - name = "Fragile Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Fragile{}", - }, - }, - tag_cry_glitched = { - name = "Glitched Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Glitched{}", - }, - }, - tag_cry_gold = { - name = "Golden Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Golden{}", - }, - }, - tag_cry_gourmand = { - name = "Gourmand Tag", - text = { - "Shop has a free", - "{C:attention}Food Joker", - }, - }, - tag_cry_loss = { - name = "Loss", - text = { - "Gives a free", - "{C:cry_ascendant}Meme Pack", - }, - }, - tag_cry_m = { - name = "Jolly Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Jolly{}", - }, - }, - tag_cry_memory = { - name = "Memory Tag", - text = { - "Create {C:attention}#1#{} copies of", - "the last {C:attention}Tag{} used", - "during this run", - "{s:0.8,C:inactive}Copying Tags excluded", - "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", - }, - }, - tag_cry_mosaic = { - name = "Mosaic Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Mosaic{}", - }, - }, - tag_cry_oversat = { - name = "Oversaturated Tag", - text = { - "Next base edition shop", - "Joker is free and", - "becomes {C:dark_edition}Oversaturated{}", - }, - }, - tag_cry_quadruple = { - name = "Quadruple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_quintuple = { - name = "Quintuple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - tag_cry_rework = { - name = "Rework Tag", - text = { - "Shop has a(n)", - "{C:dark_edition}#1# {C:cry_code}#2#", - }, - }, - tag_cry_schematic = { - name = "Schematic Tag", - text = { - "Shop has a", - "{C:attention}Brainstorm", - }, - }, - tag_cry_scope = { - name = "Scope Tag", - text = { - "{C:attention}+#1# {C:blue}hands{} and", - "{C:red}discards{} next round", - }, - }, - tag_cry_triple = { - name = "Triple Tag", - text = { - "Gives {C:attention}#1#{} copies of the", - "next selected {C:attention}Tag", - "{s:0.8,C:inactive}Copying Tags excluded", - }, - }, - }, - Tarot = { - c_cry_automaton = { - name = "The Automaton", - text = { - "Creates up to {C:attention}#1#", - "random {C:cry_code}Code{} card", - "{C:inactive}(Must have room)", - }, - }, - c_cry_eclipse = { - name = "The Eclipse", - text = { - "Enhances {C:attention}#1#{} selected card", - "into an {C:attention}Echo Card", - }, - }, - c_cry_meld = { - name = "Meld", - text = { - "Select a {C:attention}Joker{} or", - "{C:attention}playing card{} to", - "become {C:dark_edition}Double-Sided", - }, - }, - c_cry_theblessing = { - name = "The Blessing", - text = { - "Creates {C:attention}1{}", - "random {C:attention}consumable{}", - "{C:inactive}(Must have room){}", - }, - }, - }, - Voucher = { - v_cry_asteroglyph = { - name = "Asteroglyph", - text = { - "Set Ante to {C:attention}#1#{}", - }, - }, - v_cry_blankcanvas = { - name = "Blank Canvas", - text = { - "{C:attention}+#1#{} hand size", - }, - }, - v_cry_clone_machine = { - name = "Clone Machine", - text = { - "Double Tags become", - "{C:attention}Quintuple Tags{} and", - "are {C:attention}4X{} as common", - }, - }, - v_cry_command_prompt = { - name = "Command Prompt", - text = { - "{C:cry_code}Code{} cards", - "can appear", - "in the {C:attention}shop{}", - }, - }, - v_cry_copies = { - name = "Copies", - text = { - "Double Tags become", - "{C:attention}Triple Tags{} and are", - "{C:attention}2X{} as common", - }, - }, - v_cry_curate = { - name = "Curate", - text = { - "All cards", - "appear with", - "an {C:dark_edition}Edition{}", - }, - }, - v_cry_dexterity = { - name = "Dexterity", - text = { - "Permanently", - "gain {C:blue}+#1#{} hand(s)", - "each round", - }, - }, - v_cry_double_down = { - name = "Double Down", - text = { - "After every round,", - "{X:dark_edition,C:white} X1.5 {} to all values", - "on the back of", - "{C:dark_edition}Double-Sided{} cards" - }, - }, - v_cry_double_slit = { - name = "Double Slit", - text = { - "{C:attention}Meld{} can appear", - "in the shop and", - "Arcana Packs", - }, - }, - v_cry_double_vision = { - name = "Double Vision", - text = { - "{C:dark_edition}Double-Sided{} cards appear", - "{C:attention}4X{} more frequently", - }, - }, - v_cry_fabric = { - name = "Universal Fabric", - text = { - "{C:dark_edition}+#1#{} Joker slot(s)", - }, - }, - v_cry_massproduct = { - name = "Mass Production", - text = { - "All cards and packs", - "in shop cost {C:attention}$1{}", - }, - }, - v_cry_moneybean = { - name = "Money Beanstalk", - text = { - "Raise the cap on", - "interest earned in", - "each round to {C:money}$#1#{}", - }, - }, - v_cry_overstock_multi = { - name = "Multistock", - text = { - "{C:attention}+#1#{} card slot(s) and", - "{C:attention}+#1#{} booster pack slot(s)", - "available in shop", - }, - }, - v_cry_pacclimator = { - name = "Planet Acclimator", - text = { - "{C:planet}Planet{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:planet}Planet{}", - "cards are {C:green}free{}", - }, - }, - v_cry_pairamount_plus = { - name = "Pairamount Plus", - text = { - "{C:attention}Retrigger{} all M Jokers", - "once for every Pair", - "{C:attention}contained{} in played hand", - }, - }, - v_cry_pairing = { - name = "Pairing", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand is a {C:attention}Pair", - }, - }, - v_cry_quantum_computing = { - name = "Quantum Computing", - text = { - "{C:cry_code}Code{} cards can spawn", - "with {C:dark_edition}Negative{} edition", - }, - }, - v_cry_repair_man = { - name = "Repair Man", - text = { - "{C:attention}Retrigger{} all M Jokers", - "if played hand contains a {C:attention}Pair", - }, - }, - v_cry_rerollexchange = { - name = "Reroll Exchange", - text = { - "All rerolls", - "cost {C:attention}$2{}", - }, - }, - v_cry_satellite_uplink = { - name = "Satellite Uplink", - text = { - "{C:cry_code}Code{} cards may", - "appear in any of", - "the {C:attention}Celestial Packs{}", - }, - }, - v_cry_scope = { - name = "Galactic Scope", - text = { - "Create the {C:planet}Planet", - "card for played", - "{C:attention}poker hand{}", - "{C:inactive}(Must have room){}", - }, - }, - v_cry_tacclimator = { - name = "Tarot Acclimator", - text = { - "{C:tarot}Tarot{} cards appear", - "{C:attention}X#1#{} more frequently", - "in the shop", - "All future {C:tarot}Tarot{}", - "cards are {C:green}free{}", - }, - }, - v_cry_tag_printer = { - name = "Tag Printer", - text = { - "Double Tags become", - "{C:attention}Quadruple Tags{} and", - "are {C:attention}3X{} as common", - }, - }, - v_cry_threers = { - name = "The 3 Rs", - text = { - "Permanently", - "gain {C:red}+#1#{} discard(s)", - "each round", - }, - }, - v_cry_stickyhand = { - name = "Sticky Hand", - text = { - "{C:attention}+#1#{} card", - "selection limit", - }, - }, - v_cry_grapplinghook = { - name = "Grappling Hook", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - v_cry_hyperspacetether = { - name = "Hyperspace Tether", - text = { - "{C:attention}+#1#{} card", - "selection limit", - "{C:inactive,s:0.7}NOTE: Will have extra{}", - "{C:inactive,s:0.7}functionality later{}", - }, - }, - }, - Other = { - banana = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "destroyed each round", - }, - }, - cry_rigged = { - name = "Rigged", - text = { - "All {C:cry_code}listed{} probabilities", - "are {C:cry_code}guaranteed", - }, - }, - cry_hooked = { - name = "Hooked", - text = { - "When this Joker is {C:cry_code}triggered{},", - "trigger {C:cry_code}#1#", - }, - }, - food_jokers = { - name = "Food Jokers", - text = { - "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", - "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", - "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", - "{s:0.8}Nostalgic Candy, Fast Food M, etc.", - }, - }, - cry_https_disabled = { - name = "M", - text = { - "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", - }, - }, - --i am so sorry for this - --actually some of this needs to be refactored at some point - cry_eternal_booster = { - name = "Eternal", - text = { - "All cards in pack", - "are {C:attention}Eternal{}", - }, - }, - cry_perishable_booster = { - name = "Perishable", - text = { - "All cards in pack", - "are {C:attention}Perishable{}", - }, - }, - cry_rental_booster = { - name = "Rental", - text = { - "All cards in pack", - "are {C:attention}Rental{}", - }, - }, - cry_pinned_booster = { - name = "Pinned", - text = { - "All cards in pack", - "are {C:attention}Pinned{}", - }, - }, - cry_banana_booster = { - name = "Banana", - text = { - "All cards in pack", - "are {C:attention}Banana{}", - }, - }, - cry_eternal_voucher = { - name = "Eternal", - text = { - "Can't be traded", - }, - }, - cry_perishable_voucher = { - name = "Perishable", - text = { - "Debuffed after", - "{C:attention}#1#{} rounds", - "{C:inactive}({C:attention}#2#{C:inactive} remaining)", - }, - }, - cry_rental_voucher = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at", - "end of round", - }, - }, - cry_pinned_voucher = { - name = "Pinned", - text = { - "Remains in shop", - "until redeemed", - }, - }, - cry_banana_voucher = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance of being", - "unredeemed each round", - }, - }, - cry_perishable_consumeable = { - name = "Perishable", - text = { - "Debuffed at", - "end of round", - }, - }, - cry_rental_consumeable = { - name = "Rental", - text = { - "Lose {C:money}$#1#{} at end of", - "round, and on use", - }, - }, - cry_pinned_consumeable = { - name = "Pinned", - text = { - "Can't use other", - "non-{C:attention}Pinned{} consumables", - }, - }, - cry_banana_consumeable = { - name = "Banana", - text = { - "{C:green}#1# in #2#{} chance to do", - "nothing on use", - }, - }, - p_cry_code_normal_1 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_normal_2 = { - name = "Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_jumbo_1 = { - name = "Jumbo Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_code_mega_1 = { - name = "Mega Program Pack", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:cry_code} Code{} cards", - }, - }, - p_cry_empowered = { - name = "Spectral Pack [Empowered Tag]", - text = { - "Choose {C:attention}#1#{} of up to", - "{C:attention}#2#{C:spectral} Spectral{} cards", - "{s:0.8,C:inactive}(Generated by Empowered Tag)", - }, - }, - p_cry_meme_1 = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_two = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - p_cry_meme_three = { - name = "Meme Pack", - text = { - "Choose {C:attention}#1#{} of", - "up to {C:attention}#2# Meme Jokers{}", - }, - }, - undiscovered_code = { - name = "Not Discovered", - text = { - "Purchase or use", - "this card in an", - "unseeded run to", - "learn what it does" - } - }, - cry_green_seal = { - name = "Green Seal", - text = { - "Creates a {C:cry_code}Code{} card", - "when played and unscoring", - "{C:inactive}(Must have room)", - }, - }, - cry_azure_seal = { - name = "Azure Seal", - text = { - "Create {C:attention}#1#{} {C:dark_edition}Negative{}", - "{C:planet}Planets{} for played", - "{C:attention}poker hand{}, then", - "{C:red}destroy{} this card", - }, - }, - }, - }, - misc = { - achievement_names = { - ach_cry_ace_in_crash = "Pocket ACE", - ach_cry_blurred_blurred_joker = "Legally Blind", - ach_cry_bullet_hell = "Bullet Hell", - ach_cry_break_infinity = "Break Infinity", - ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", - ach_cry_exodia = "Exodia", - ach_cry_freak_house = "Freak House", - ach_cry_googol_play_pass = "Googol Play Pass", - ach_cry_haxxor = "H4xx0r", - ach_cry_home_realtor = "Home Realtor", - ach_cry_jokes_on_you = "Joke's on You, Pal!", - ach_cry_niw_uoy = "!niW uoY", - ach_cry_now_the_fun_begins = "Now the Fun Begins", - ach_cry_patience_virtue = "Patience is a Virtue", - ach_cry_perfectly_balanced = "Perfectly Balanced", - ach_cry_pull_request = "Pull Request", - ach_cry_traffic_jam = "Traffic Jam", - ach_cry_ult_full_skip = "Ultimate Full Skip", - ach_cry_used_crash = "We Told You Not To", - ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", - }, - achievement_descriptions = { - ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', - ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", - ach_cry_bullet_hell = "Have 15 AP Jokers", - ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", - ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", - ach_cry_exodia = "Have 5 Exotic Jokers", - ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", - ach_cry_googol_play_pass = "Rig a Googol Play Card", - ach_cry_haxxor = "Use a cheat code", - ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", - ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", - ach_cry_niw_uoy = "Reach Ante -8", - ach_cry_now_the_fun_begins = "Obtain Canvas", - ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", - ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", - ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", - ach_cry_traffic_jam = "Beat all Rush Hour challenges", - ach_cry_ult_full_skip = "Win in 1 round", - ach_cry_used_crash = "Use ://CRASH", - ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", - }, - challenge_names = { - c_cry_ballin = "Ballin'", - c_cry_boss_rush = "Enter the Gungeon", - c_cry_dagger_war = "Dagger War", - c_cry_joker_poker = "Joker Poker", - c_cry_onlycard = "Solo Card", - c_cry_rng = "RNG", - c_cry_rush_hour = "Rush Hour I", - c_cry_rush_hour_ii = "Rush Hour II", - c_cry_rush_hour_iii = "Rush Hour III", - c_cry_sticker_sheet = "Sticker Sheet", - c_cry_sticker_sheet_plus = "Sticker Sheet+", - }, - dictionary = { - --Settings Menu - cry_set_features = "Features", - cry_set_music = "Music", - cry_set_enable_features = "Select features to enable (applies on game restart):", - cry_feat_achievements = "Achievements", - ["cry_feat_antimatter deck"] = "Antimatter Deck", - cry_feat_blinds = "Blinds", - cry_feat_challenges = "Challenges", - ["cry_feat_code cards"] = "Code Cards", - ["cry_feat_misc. decks"] = "Misc. Decks", - ["cry_feat_https module"] = "HTTPS Module", - ["cry_feat_timer mechanics"] = "Timer Mechanics", - ["cry_feat_enhanced decks"] = "Enhanced Decks", - ["cry_feat_epic jokers"] = "Epic Jokers", - ["cry_feat_exotic jokers"] = "Exotic Jokers", - ["cry_feat_m jokers"] = "M Jokers", - cry_feat_menu = "Custom Main Menu", - ["cry_feat_misc."] = "Misc.", - ["cry_feat_misc. jokers"] = "Misc. Jokers", - cry_feat_planets = "Planets", - cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", - cry_feat_tags = "Tags", - cry_feat_sleeves = "Sleeves", - cry_feat_spectrals = "Spectrals", - ["cry_feat_more stakes"] = "Stakes", - cry_feat_vouchers = "Vouchers", - cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", - cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", - cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", - cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", + }, + }, + e_cry_glass = { + name = "Fragile", + label = "Fragile", + text = { + "{C:white,X:mult} X#3# {} Mult", + "{C:green}#1# in #2#{} chance this", + "card isn't {C:red}destroyed", + "when triggered", + }, + }, + e_cry_glitched = { + name = "Glitched", + text = { + "All values on this card", + "are {C:dark_edition}randomized{}", + "between {C:attention}X0.1{} and {C:attention}X10{}", + "{C:inactive}(If possible){}", + }, + }, + e_cry_gold = { + name = "Golden", + label = "Golden", + text = { + "Earn {C:money}$#1#{} when used", + "or triggered", + }, + }, + e_cry_m = { + name = "Jolly", + text = { + "{C:mult}+#1#{} Mult", + "This card is feeling", + "rather {C:attention}jolly{}", + }, + }, + e_cry_mosaic = { + name = "Mosaic", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + e_cry_noisy = { + name = "Noisy", + text = { + "???", + }, + }, + e_cry_oversat = { + name = "Oversaturated", + text = { + "All values", + "on this card", + "are {C:attention}doubled{}", + "{C:inactive}(If possible)", + }, + }, + }, + Enhanced = { + m_cry_echo = { + name = "Echo Card", + text = { + "{C:green}#2# in #3#{} chance to", + "{C:attention}retrigger{} #1# additional", + "times when scored", + }, + }, + }, + Joker = { + j_cry_altgoogol = { + name = "Nostalgic Googol Play Card", + text = { + "Sell this card to create", + "{C:attention}2{} copies of the leftmost {C:attention}Joker{}", + "{C:inactive,s:0.8}Does not copy Nostalgic Googol Play Cards{}", + }, + }, + j_cry_antennastoheaven = { + name = "...Like Antennas to Heaven", + text = { + "This Joker gains", + "{X:chips,C:white} X#1# {} Chips when each", + "played {C:attention}7{} or {C:attention}4{} is scored", + "{C:inactive}(Currently {X:chips,C:white}X#2# {C:inactive} Chips)", + }, + }, + j_cry_apjoker = { + name = "AP Joker", + text = { "{X:mult,C:white} X#1# {} Mult against {C:attention}Boss Blinds{}" }, + }, + j_cry_big_cube = { + name = "Big Cube", + text = { + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_biggestm = { + name = "Huge", + text = { + "{X:mult,C:white} X#1# {} Mult until end", + "of round if {C:attention}poker hand{}", + "is a {C:attention}#2#{}", + "{C:inactive}(Currently {C:attention}#3#{}{C:inactive}){}", + "{C:inactive,s:0.8}not fat, just big boned.", + }, + }, + j_cry_blender = { + name = "Blender", + text = { + "Create a {C:attention}random{}", + "consumable when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_blurred = { + name = "Blurred Joker", + text = { + "Gain {C:blue}+#1#{} hand(s) when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_bonk = { + name = "Bonk", + text = { + "Each {C:attention}Joker{} gives {C:chips}+#1#{} Chips", + "Increase amount by {C:chips}+#2#{} if", + "{C:attention} poker hand{} is a {C:attention}#3#{}", + "{C:inactive,s:0.8}Jolly Jokers give{} {C:chips,s:0.8}+#4#{} {C:inactive,s:0.8}Chips instead{}", + }, + }, + j_cry_bonusjoker = { + name = "Bonus Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Bonus{} card to increase", + "{C:attention}Joker{} or {C:attention}Consumable slots", + "by {C:dark_edition}1{} when scored", + "{C:red}Works twice per round", + "{C:inactive,s:0.8}(Equal chance for each){}", + }, + }, + j_cry_booster = { + name = "Booster Joker", + text = { + "{C:attention}+#1#{} Booster Pack slot", + "available in shop", + }, + }, + j_cry_boredom = { + name = "Boredom", + text = { + "{C:green}#1# in #2#{} chance to", + "{C:attention}retrigger{} each {C:attention}Joker{}", + "or {C:attention}played card{}", + "{C:inactive,s:0.8}Does not affect other Boredom{}", + }, + }, + j_cry_bubblem = { + name = "Bubble M", + text = { + "Create a {C:dark_edition}Foil {C:attention}Jolly Joker{}", + "if played hand contains", + "a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_busdriver = { + name = "Bus Driver", + text = { + "{C:green}#1# in #3#{} chance", + "for {C:mult}+#2#{} Mult", + "{C:green}1 in 4{} chance", + "for {C:mult}-#2#{} Mult", + }, + }, + j_cry_canvas = { + name = "Canvas", + text = { + "{C:attention}Retrigger{} all {C:attention}Jokers{} to the left", + "once for {C:attention}every{} non-{C:blue}Common{C:attention} Joker{}", + "to the right of this Joker", + }, + }, + j_cry_caramel = { + name = "Caramel", + text = { + "Each played card gives", + "{X:mult,C:white}X#1#{} Mult when scored", + "for the next {C:attention}#2#{} rounds", + }, + }, + j_cry_chad = { + name = "Chad", + text = { + "Retrigger {C:attention}leftmost{} Joker", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_chili_pepper = { + name = "Chili Pepper", + text = { + "This Joker gains {X:mult,C:white} X#2# {} Mult", + "at end of round,", + "{C:red,E:2}self destructs{} after {C:attention}#3#{} rounds", + "{C:inactive}(Currently{} {X:mult,C:white} X#1# {} {C:inactive}Mult){}", + }, + }, + j_cry_circulus_pistoris = { + name = "Circulus Pistoris", + text = { + "{X:dark_edition,C:white}^#1#{} Chips and {X:dark_edition,C:white}^#1#{} Mult", + "if {C:attention}exactly{} #2#", + "hands remaining", + }, + }, + j_cry_circus = { + name = "Circus", + text = { + "{C:red}Rare{} Jokers each give {X:mult,C:white} X#1# {} Mult", + "{C:cry_epic}Epic{} Jokers each give {X:mult,C:white} X#2# {} Mult", + "{C:legendary}Legendary{} Jokers each give {X:mult,C:white} X#3# {} Mult", + "{C:cry_exotic}Exotic{} Jokers each give {X:mult,C:white} X#4# {} Mult", + }, + }, + j_cry_CodeJoker = { + name = "Code Joker", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:cry_code}Code Card{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_coin = { + name = "Crypto Coin", + text = { + "Earn between", + "{C:money}$#1#{} and {C:money}$#2#{} for", + "each Joker {C:attention}sold{}", + }, + }, + j_cry_compound_interest = { + name = "Compound Interest", + text = { + "Earn {C:money}#1#%{} of total money", + "at end of round,", + "increases by {C:money}#2#%{} per", + "consecutive payout", + }, + }, + j_cry_copypaste = { + name = "Copy/Paste", + text = { + "When a {C:cry_code}Code{} card is used,", + "{C:green}#1# in #2#{} chance to add a copy", + "to your consumable area", + "{C:inactive}(Must have room)", + }, + }, + j_cry_crustulum = { + name = "Crustulum", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "per {C:attention}reroll{} in the shop", + "{C:green}All rerolls are free{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} chips)", + }, + }, + j_cry_cryptidmoment = { + name = "M Chain", + text = { + "Sell this card to", + "add {C:money}$#1#{} of {C:attention}sell value{}", + "to every {C:attention}Joker{} card", + }, + }, + j_cry_cube = { + name = "Cube", + text = { + "{C:chips}+#1#{} Chips", + }, + }, + j_cry_curse_sob = { + name = "Sob", + text = { + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}run...{}", + "{C:edition,E:1}you cannot{} {C:cry_ascendant,E:1}hide...{}", + "{C:dark_edition,E:1}you cannot escape...{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_cursor = { + name = "Cursor", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "for each card {C:attention}purchased{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_cut = { + name = "Cut", + text = { + "This Joker destroys", + "a random {C:cry_code}Code{} card", + "and gains {X:mult,C:white} X#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_delirious = { + name = "Delirious Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_discreet = { + name = "Discreet Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_doodlem = { + name = "Doodle M", + text = { + "Create 2 {C:dark_edition}Negative{} {C:attention}consumables{}", + "when {C:attention}Blind{} is selected", + "Create 1 more {C:attention}consumable", + "for each {C:attention}Jolly Joker{}", + }, + }, + ["j_cry_Double Scale"] = { + name = "Double Scale", + text = { + "Scaling {C:attention}Jokers{}", + "scale {C:attention}quadratically", + "{C:inactive,s:0.8}(ex. +1, +3, +6, +10)", + "{C:inactive,s:0.8}(grows by +1, +2, +3)", + }, + }, + j_cry_dropshot = { + name = "Dropshot", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult for", + "each played, {C:attention}nonscoring{} {V:1}#2#{} card,", + "suit changes every round", + "{C:inactive}(Currently {X:mult,C:white} X#3# {C:inactive} Mult)", + }, + }, + j_cry_dubious = { + name = "Dubious Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duos = { + name = "The Duos", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_duplicare = { + name = "Duplicare", + text = { + "Every {C:attention}Joker{} gives", + "{X:dark_edition,C:white}^#1#{} Mult", + }, + }, + j_cry_effarcire = { + name = "Effarcire", + text = { + "Draw {C:green}full deck{} to hand", + "when {C:attention}Blind{} is selected", + "{C:inactive,s:0.8}\"If you can't handle me at my 1x,", + "{C:inactive,s:0.8}you don't deserve me at my 2x\"", + }, + }, + j_cry_energia = { + name = "Energia", + text = { + "When a {C:attention}Tag{} is acquired,", + "create {C:attention}#1#{} copies of it", + "and {C:attention}increase{} the number of", + "copies by {C:attention}#2#", + }, + }, + j_cry_equilib = { + name = "Ace Aequilibrium", + text = { + "Jokers appear using the", + "order from the {C:attention}Collection{}", + "Create {C:attention}#1#{} {C:dark_edition}Negative{} Joker(s)", + "when hand is played", + "{C:cry_exotic,s:0.8}Exotic {C:inactive,s:0.8}or better Jokers cannot appear", + "{s:0.8}Last Joker Generated: {C:attention,s:0.8}#2#", + }, + }, + j_cry_error = { + name = "{C:red}ERR{}{C:dark_edition}O{}{C:red}R{}", + text = { + "", + }, + }, + j_cry_eternalflame = { + name = "Eternal Flame", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "for each card {C:attention}sold{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_exoplanet = { + name = "Exoplanet", + text = { + "{C:dark_edition}Holographic{} cards", + "each give {C:mult}+#1#{} Mult", + }, + }, + j_cry_exponentia = { + name = "Exponentia", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "when {X:red,C:white} XMult {} is triggered", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_facile = { + name = "Facile", + text = { + "{X:dark_edition,C:white}^#1#{} Mult if", + "played cards are scored", + "{C:attention}#2#{} or fewer times", + }, + }, + j_cry_filler = { + name = "The Filler", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fractal = { + name = "Fractal Fingers", + text = { + "{C:attention}+#1#{} card selection limit", + }, + }, + j_cry_flip_side = { + name = "On the Flip Side", + text = { + "{C:dark_edition}Double-Sided{} Jokers use", + "their back side for effects", + "instead of the front side", + "{C:attention}Retrigger{} all {C:dark_edition}Double-Sided{} Jokers", + }, + }, + j_cry_foodm = { + name = "Fast Food M", + text = { + "{C:mult}+#1#{} Mult", + "{C:red,E:2}self destructs{} in {C:attention}#2#{} round(s)", + "Increases by {C:attention}#3#{} round when", + "{C:attention}Jolly Joker{} is {C:attention}sold{}", + "{C:inactive,s:0.8}2 McDoubles, 2 McChickens{}", + "{C:inactive,s:0.8}Large Fries, 20 Piece & Large Cake{}", + }, + }, + j_cry_foxy = { + name = "Foxy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_fspinner = { + name = "Fidget Spinner", + text = { + "This Joker gains {C:chips}+#2#{} Chips", + "if hand played is {C:attention}not{}", + "most played {C:attention}poker hand{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_gardenfork = { + name = "Garden of Forking Paths", + text = { + "Earn {C:money}$#1#{} if {C:attention}played hand{}", + "contains an {C:attention}Ace{} and a {C:attention}7{}", + }, + }, + j_cry_gemino = { + name = "Gemini", + text = { + "{C:attention}Double{} all values", + "of leftmost {C:attention}Joker", + "at end of round", + }, + }, + j_cry_giggly = { + name = "Absurd Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_goldjoker = { + name = "Gold Joker", + text = { + "Earn {C:money}#1#%{} of total", + "money at end of round", + "Payout increases by {C:money}#2#%{}", + "when each played {C:attention}Gold{}", + "card is scored", + }, + }, + j_cry_googol_play = { + name = "Googol Play Card", + text = { + "{C:green}#1# in #2#{} chance for", + "{X:red,C:white} X#3# {} Mult", + }, + }, + j_cry_happy = { + name = ":D", + text = { + "Create a random {C:attention}Joker{}", + "at end of round", + "Sell this card to", + "create a random {C:attention}Joker{}", + "{C:inactive}(Must have room){}", + }, + }, + j_cry_happyhouse = { + name = "Happy House", + text = { + "{X:dark_edition,C:white}^#1#{} Mult only after", + "playing {C:attention}114{} hands{}", + "{C:inactive}(Currently #2#/114){}", + "{C:inactive,s:0.8}There is no place like home!{}", + }, + }, + j_cry_home = { + name = "The Home", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_hunger = { + name = "Consume-able", + text = { + "Earn {C:money}$#1#{} when", + "using a {C:attention}consumable{}", + }, + }, + j_cry_iterum = { + name = "Iterum", + text = { + "Retrigger all cards played", + "{C:attention}#2#{} time(s),", + "each played card gives", + "{X:mult,C:white} X#1# {} Mult when scored", + }, + }, + j_cry_jimball = { + name = "Jimball", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "per {C:attention}consecutive{} hand played", + "while playing your", + "most played {C:attention}poker hand", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_jollysus = { + name = "Jolly Joker?", + text = { + "Create a {C:dark_edition}Jolly{} Joker", + "when a Joker is {C:attention}sold{}", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + "{C:inactive,s:0.8}Seems legit...{}", + }, + }, + j_cry_kidnap = { + name = "Kidnapping", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{}", + "when a {C:attention}Type Mult{} or", + "{C:attention}Type Chips{} Joker is sold", + }, + }, + j_cry_kooky = { + name = "Kooky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_krustytheclown = { + name = "Krusty the Clown", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when", + "each played {C:attention}card{} is scored", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_kscope = { + name = "Kaleidoscope", + text = { + "Add {C:dark_edition}Polychrome{} to", + "a random {C:attention}Joker{} when", + "{C:attention}Boss Blind{} is defeated", + }, + }, + j_cry_lightupthenight = { + name = "Light Up the Night", + text = { + "Each played {C:attention}7{} or {C:attention}2{}", + "gives {X:mult,C:white}X#1#{} Mult when scored", + }, + }, + j_cry_longboi = { + name = "Monster", + text = { + "Give future copies of", + "this Joker {X:mult,C:white}X#1#{} Mult", + "at end of round", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult){}", + }, + }, + j_cry_loopy = { + name = "Loopy", + text = { + "{C:attention}Retrigger{} all Jokers", + "once for each {C:attention}Jolly{}", + "{C:attention}Joker{} sold this round", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} Retrigger(s)){}", + "{C:inactive,s:0.8}There wasn't enough room...{}", + }, + }, + j_cry_lucky_joker = { + name = "Lucky Joker", + text = { + "Earn {C:money}$#1#{} every time a", + "{C:attention}Lucky{} card {C:green}successfully{}", + "triggers", + }, + }, + j_cry_luigi = { + name = "Luigi", + text = { + "All Jokers give", + "{X:chips,C:white} X#1# {} Chips", + }, + }, + j_cry_m = { + name = "m", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "when {C:attention}Jolly Joker{} is sold", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_M = { + name = "M", + text = { + "Create a {C:dark_edition}Negative{}", + "{C:attention}Jolly Joker{} when", + "{C:attention}Blind{} is selected", + }, + }, + j_cry_macabre = { + name = "Macabre Joker", + text = { + "When {C:attention}Blind{} is selected,", + "destroys each {C:attention}Joker{} except", + "{C:legendary}M Jokers{} and {C:attention}Jolly Jokers{}", + "and create 1 {C:attention}Jolly Joker{}", + "for each destroyed card", + }, + }, + j_cry_magnet = { + name = "Fridge Magnet", + text = { + "Earn {C:money}$#1#{} at end of round", + "This earns {X:money,C:white} X#2# {} if there are", + "{C:attention}#3#{} or fewer {C:attention}Joker{} cards", + }, + }, + j_cry_manic = { + name = "Manic Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_mario = { + name = "Mario", + text = { + "Retrigger all Jokers", + "{C:attention}#1#{} additional time(s)", + }, + }, + j_cry_maximized = { + name = "Maximized", + text = { + "All {C:attention}face{} cards", + "are considered {C:attention}Kings{},", + "all {C:attention}numbered{} cards", + "are considered {C:attention}10s{}", + }, + }, + j_cry_maze = { + name = "Labyrinth", + text = { + "All hands are considered the", + "{C:attention}first hand{} of each round,", + "all discards are considered the", + "{C:attention}first discard{} of each round", + }, + }, + j_cry_Megg = { + name = "Megg", + text = { + "Sell this card to create", + "{C:attention}#2#{} Jolly #3#, increase", + "by {C:attention}#1#{} at end of round", + }, + }, + j_cry_membershipcard = { + name = "Membership Card", + text = { + "{X:mult,C:white}X#1#{} Mult for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {X:mult,C:white}X#2#{C:inactive} Mult)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_membershipcardtwo = { + name = "Old Membership Card", --Could probably have a diff Name imo + text = { + "{C:chips}+#1#{} Chips for each member", + "in the {C:attention}Cryptid Discord{}", + "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)", + "{C:blue,s:0.7}https://discord.gg/eUf9Ur6RyB{}", + }, + }, + j_cry_meteor = { + name = "Meteor Shower", + text = { + "{C:dark_edition}Foil{} cards each", + "give {C:chips}+#1#{} Chips", + }, + }, + j_cry_mneon = { + name = "Neon M", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by", + "{C:money}$#1#{} for each {C:attention}Jolly Joker{}", + "or {C:legendary}M Joker{} at", + "end of round", + }, + }, + j_cry_mondrian = { + name = "Mondrian", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if no {C:attention}discards{} were", + "used this round", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_monkey_dagger = { + name = "Monkey Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and permanently add {C:attention}ten times{}", + "its sell value to this {C:chips}Chips{}", + "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)", + }, + }, + j_cry_morse = { + name = "Morse Code", + text = { + "Earn {C:money}$#2#{} at end of round", + "Increase payout by {C:money}$#1#{} when", + "a card with an {C:attention}Edition{} is sold", + }, + }, + j_cry_mprime = { + name = "Tredecim", + text = { + "Create an {C:legendary}M Joker{} at end of round", + "Each {C:attention}Jolly Joker{} or {C:legendary}M Joker", + "gives {X:dark_edition,C:white}^#1#{} Mult", + "Increase amount by {X:dark_edition,C:white}^#2#{}", + "when a {C:attention}Jolly Joker{} is {C:attention}sold", + "{C:inactive,s:0.8}(Tredecim excluded)", + }, + }, + j_cry_mstack = { + name = "M Stack", + text = { + "Retrigger all cards played", + "once for every", + "{C:attention}#2#{} {C:inactive}[#3#]{} {C:attention}Jolly Jokers{} sold", + "{C:inactive}(Currently{}{C:attention:} #1#{}{C:inactive} retriggers){}", + }, + }, + j_cry_multjoker = { + name = "Mult Joker", + text = { + "{C:green}#1# in #2#{} chance for each", + "played {C:attention}Mult{} card to create", + "a {C:spectral}Cryptid{} card when scored", + "{C:inactive}(Must have room)", + }, + }, + j_cry_negative = { + name = "Negative Joker", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + }, + }, + j_cry_nice = { + name = "Nice", + text = { + "{C:chips}+#1#{} Chips if played hand", + "contains a {C:attention}6{} and a {C:attention}9", + "{C:inactive,s:0.8}Nice.{}", + }, + }, + j_cry_night = { + name = "Night", + text = { + "{X:dark_edition,C:white}^#1#{} Mult on final", + "hand of round", + "{E:2,C:red}self destructs{} on", + "final hand of round", + }, + }, + j_cry_nosound = { + name = "No Sound, No Memory", + text = { + "Retrigger each played {C:attention}7{}", + "{C:attention:}#1#{} additional time(s)", + }, + }, + j_cry_notebook = { + name = "Notebook", + text = { + "{C:green} #1# in #2#{} chance to gain {C:dark_edition}+1{} Joker", + "slot per {C:attention}reroll{} in the shop", + "{C:green}Always triggers{} if there are", + "{C:attention}#5#{} or more {C:attention}Jolly Jokers{}", + "{C:red}Works once per round{}", + "{C:inactive}(Currently {C:dark_edition}+#3#{}{C:inactive} and #4#){}", + }, + }, + j_cry_number_blocks = { + name = "Number Blocks", + text = { + "Earn {C:money}$#1#{} at end of round", + "Increase payout by {C:money}$#2#{}", + "for each {C:attention}#3#{} held in hand,", + "rank changes every round", + }, + }, + j_cry_nuts = { + name = "The Nuts", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_nutty = { + name = "Nutty Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_oldblueprint = { + name = "Old Blueprint", + text = { + "Copies ability of", + "{C:attention}Joker{} to the right", + "{C:green}#1# in #2#{} chance this", + "card is destroyed", + "at end of round", + }, + }, + j_cry_oldcandy = { + name = "Nostalgic Candy", + text = { + "Sell this card to", + "permanently gain", + "{C:attention}+#1#{} hand size", + }, + }, + j_cry_oldinvisible = { + name = "Nostalgic Invisible Joker", + text = { + "{C:attention}Duplicate{} a random", + "{C:attention}Joker{} every {C:attention}4", + "Joker cards sold", + "{s:0.8}Nostalgic Invisible Joker Excluded{}", + "{C:inactive}(Currently #1#/4){}", + }, + }, + j_cry_panopticon = { + name = "Panopticon", + text = { + "All hands are considered the", + "{C:attention}last hand{} of each round", -- +$4 + }, + }, + j_cry_pickle = { + name = "Pickle", + text = { + "When {C:attention}Blind{} is skipped, create", + "{C:attention}#1#{} Tags, reduced by", + "{C:red}#2#{} when {C:attention}Blind{} is selected", + }, + }, + j_cry_pirate_dagger = { + name = "Pirate Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the right", + "and gain {C:attention}one-fourth{} of", + "its sell value as {X:chips,C:white} XChips {}", + "{C:inactive}(Currently {X:chips,C:white} X#1# {C:inactive} Chips)", + }, + }, + j_cry_pot_of_jokes = { + name = "Pot of Jokes", + text = { + "{C:attention}#1#{} hand size,", + "increases by", + "{C:blue}#2#{} every round", + }, + }, + j_cry_primus = { + name = "Primus", + text = { + "This Joker gains {X:dark_edition,C:white} ^#1# {} Mult", + "if all cards in played hand are", + "{C:attention}Aces{}, {C:attention}2s{}, {C:attention}3s{}, {C:attention}5s{}, or {C:attention}7s{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_python = { + name = "Python", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when a", + "{C:cry_code}Code{} card is used", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_queens_gambit = { + name = "Queen's Gambit", + text = { + "If {C:attention}poker hand{} is a", + "{C:attention}Royal Flush{}, destroy scored", + "{C:attention}Queen{} and create a", + "{C:dark_edition}Negative {}{C:red}Rare{}{C:attention} Joker{}", + }, + }, + j_cry_quintet = { + name = "The Quintet", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_redbloon = { + name = "Red Bloon", + text = { + "Earn {C:money}$#1#{} in {C:attention}#2#{} round(s)", + "{C:red,E:2}self destructs{}", + }, + }, + j_cry_redeo = { + name = "Redeo", + text = { + "{C:attention}-#1#{} Ante when", + "{C:money}$#2#{} {C:inactive}($#3#){} spent", + "{s:0.8}Requirements increase", + "{C:attention,s:0.8}exponentially{s:0.8} per use", + "{C:money,s:0.8}Next increase: {s:1,c:money}$#4#", + }, + }, + j_cry_rescribere = { + name = "Rescribere", + text = { + "When a {C:attention}Joker{} is sold,", + "add its effects to", + "every other Joker", + "{C:inactive,s:0.8}Does not affect other Rescribere{}", + }, + }, + j_cry_reverse = { + name = "Reverse Card", + text = { + "Fill all empty Joker slots {C:inactive}(Max 100){}", + "with {C:dark_edition}Holographic{} {C:attention}Jolly Jokers{} if", + "{C:attention}discarded poker hand{} is a {C:attention}#1#{}", + "{C:red,E:2}self destructs{}", + "{C:inactive,s:0.8}The ULTIMATE comeback{}", + }, + }, + j_cry_rnjoker = { + name = "RNJoker", + text = { + "Randomize abilities each {C:attention}Ante{}", + }, + }, + j_cry_sacrifice = { + name = "Sacrifice", + text = { + "Create an {C:green}Uncommon{} Joker", + "and 3 {C:attention}Jolly Jokers{} when", + "a {C:spectral}Spectral{} card is used", + "{C:red}Works once per round{}", + "{C:inactive}#1#{}", + }, + }, + j_cry_sapling = { + name = "Sapling", + text = { + "After scoring {C:attention}#2#{} {C:inactive}[#1#]{} Enhanced", + "cards, sell this card to", + "create an {C:cry_epic}Epic{} {C:attention}Joker{}", + "{C:inactive,s:0.8}Will create a {C:red,s:0.8}Rare{} {C:attention,s:0.8}Joker{}", + "{C:inactive,s:0.8}if {C:cry_epic,s:0.8}Epic{} {C:inactive,s:0.8}Jokers are disabled{}", + }, + }, + j_cry_savvy = { + name = "Savvy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_Scalae = { + name = "Scalae", + text = { + "Scaling {C:attention}Jokers{} scale", + "as a degree-{C:attention}#1#{} polynomial", + "raise degree by {C:attention}#2#{}", + "at end of round", + "{C:inactive,s:0.8}({C:attention,s:0.8}Scalae{C:inactive,s:0.8} excluded)", + }, + }, + j_cry_scrabble = { + name = "Scrabble Tile", + text = { + "{C:green}#1# in #2#{} chance to create", + "a {C:dark_edition}Jolly {C:green}Uncommon{} Joker", + "when hand is played", + }, + }, + j_cry_seal_the_deal = { + name = "Seal the Deal", + text = { + "Add a {C:attention}random seal{} to each card", + "scored on {C:attention}final hand{} of round", + }, + }, + j_cry_shrewd = { + name = "Shrewd Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_silly = { + name = "Silly Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_smallestm = { + name = "Tiny", + text = { + "Create a {C:cry_jolly}Double M", + "tag if {C:attention}poker hand{}", + "is a {C:attention}#1#{}", + "{C:inactive,s:0.8}ok so basically i'm very smol", + }, + }, + j_cry_soccer = { + name = "One for All", --changed the name from latin because this isn't exotic + text = { + "{C:attention}+#1#{} Joker slot", + "{C:attention}+#1#{} Booster Pack slot", + "{C:attention}+#1#{} hand size", + "{C:attention}+#1#{} consumable slot", + "{C:attention}+#1#{} card in shop", + }, + }, + j_cry_spaceglobe = { + name = "Celestial Globe", + text = { + "This Joker gains {X:chips,C:white}X#2#{} Chips", + "if {C:attention}poker hand{} is a {C:attention}#3#{},", + "Hand changes after increase{}", + "{C:inactive}(Currently{} {X:chips,C:white}X#1#{} {C:inactive}Chips){}", + }, + }, + j_cry_speculo = { + name = "Speculo", + text = { + "Creates a {C:dark_edition}Negative{} copy", + "of a random {C:attention}Joker{}", + "at the end of the {C:attention}shop", + "{C:inactive,s:0.8}Does not copy other Speculo{}", + }, + }, + j_cry_stardust = { + name = "Stardust", + text = { + "{C:dark_edition}Polychrome{} cards", + "each give {X:mult,C:white}X#1#{} Mult", + }, + }, + j_cry_stella_mortis = { + name = "Stella Mortis", + text = { + "This Joker destroys a", + "random {C:planet}Planet{} card", + "and gains {X:dark_edition,C:white} ^#1# {} Mult", + "at the end of the {C:attention}shop{}", + "{C:inactive}(Currently {X:dark_edition,C:white} ^#2# {C:inactive} Mult)", + }, + }, + j_cry_subtle = { + name = "Subtle Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_supercell = { + name = "Supercell", + text = { + "{C:chips}+#1#{} Chips, {C:mult}+#1#{} Mult,", + "{X:chips,C:white}X#2#{} Chips, {X:mult,C:white}X#2#{} Mult", + "Earn {C:money}$#3#{} at", + "end of round", + }, + }, + j_cry_sus = { + name = "SUS", + text = { + "At end of round, create", + "a {C:attention}copy{} of a random", + "card {C:attention}held in hand{},", + "destroy all others", + "{C:attention,s:0.8}Kings{s:0.8} of {C:hearts,s:0.8}Hearts{s:0.8} are prioritized", + }, + }, + j_cry_swarm = { + name = "The Swarm", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_sync_catalyst = { + name = "Sync Catalyst", + text = { + "Balances {C:chips}Chips{} and {C:mult}Mult{}", + "{C:inactive,s:0.8}Hey! I've seen this one before!", + }, + }, + j_cry_tenebris = { + name = "Tenebris", + text = { + "{C:dark_edition}+#1#{C:attention} Joker{} slots", + "Earn {C:money}$#2#{} at end of round", + }, + }, + j_cry_translucent = { + name = "Translucent Joker", + text = { + "Sell this card to create", + "a {C:attention}Banana Perishable{} copy", + "of a random {C:attention}Joker{}", + "{s:0.8,C:inactive}(Copy bypasses perish compat)", + }, + }, + j_cry_tricksy = { + name = "Tricksy Joker", + text = { + "{C:chips}+#1#{} Chips if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_triplet_rhythm = { + name = "Triplet Rhythm", + text = { + "{X:mult,C:white} X#1# {} Mult if scoring hand", + "contains {C:attention}exactly{} three {C:attention}3s", + }, + }, + j_cry_unity = { + name = "The Unity", + text = { + "{X:mult,C:white} X#1# {} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_universum = { + name = "Universum", + text = { + "{C:attention}Poker hands{} gain", + "{X:red,C:white} X#1# {} Mult and {X:blue,C:white} X#1# {} Chips", + "when leveled up", + }, + }, + j_cry_unjust_dagger = { + name = "Unjust Dagger", + text = { + "When {C:attention}Blind{} is selected,", + "destroy Joker to the left", + "and gain {C:attention}one-fifth{} of", + "its sell value as {X:mult,C:white} XMult {}", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_verisimile = { + name = "Non Verisimile", + text = { + "When any probability", + "is {C:green}successfully{} triggered,", + "this Joker gains {X:red,C:white}XMult{}", + "equal to its listed {C:attention}odds", + "{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive} Mult)", + }, + }, + j_cry_virgo = { + name = "Virgo", + text = { + "This Joker gains {C:money}$#1#{} of {C:attention}sell value{}", + "if {C:attention}poker hand{} contains a {C:attention}#2#{}", + "Sell this card to create a", + "{C:dark_edition}Polychrome{} {C:attention}Jolly Joker{} for", + "every {C:money}$4{} of {C:attention}sell value{} {C:inactive}(Min 1){}", + }, + }, + j_cry_wacky = { + name = "Wacky Joker", + text = { + "{C:red}+#1#{} Mult if played", + "hand contains", + "a {C:attention}#2#", + }, + }, + j_cry_waluigi = { + name = "Waluigi", + text = { + "All Jokers give", + "{X:mult,C:white} X#1# {} Mult", + }, + }, + j_cry_wario = { + name = "Wario", + text = { + "All Jokers give", + "{C:money}$#1#{} when triggered", + }, + }, + j_cry_wee_fib = { + name = "Weebonacci", + text = { + "This Joker gains", + "{C:mult}+#2#{} Mult when each played", + "{C:attention}Ace{}, {C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{}", + "is scored", + "{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)", + }, + }, + j_cry_weegaming = { + name = "2D", + text = { + "Retrigger each played {C:attention}2{}", --wee gaming + "{C:attention:}#1#{} additional time(s)", --wee gaming? + "{C:inactive,s:0.8}Wee Gaming?{}", + }, + }, + j_cry_wheelhope = { + name = "Wheel of Hope", + text = { + "This Joker gains", + "{X:mult,C:white} X#1# {} Mult when failing", + "a {C:attention}Wheel of Fortune{}", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + j_cry_whip = { + name = "The WHIP", + text = { + "This Joker gains {X:mult,C:white} X#1# {} Mult", + "if {C:attention}played hand{} contains a", + "{C:attention}2{} and {C:attention}7{} of different suits", + "{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)", + }, + }, + }, + Planet = { + c_cry_Klubi = { + name = "Klubi", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Lapio = { + name = "Lapio", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_nstar = { + name = "Neutron Star", + text = { + "Upgrade a random", + "poker hand by", + "{C:attention}1{} level for each", + "{C:attention}Neutron Star{} used", + "in this run", + "{C:inactive}(Currently{C:attention} #1#{C:inactive}){}", + }, + }, + c_cry_planetlua = { + name = "Planet.lua", + text = { + "{C:green}#1# in #2#{} chance to", + "upgrade every", + "{C:legendary,E:1}poker hand{}", + "by {C:attention}1{} level", + }, + }, + c_cry_Sydan = { + name = "Sydan", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + c_cry_Timantti = { + name = "Timantti", + text = { + "({V:1}lvl.#4#{})({V:2}lvl.#5#{})({V:3}lvl.#6#{})", + "Level up", + "{C:attention}#1#{},", + "{C:attention}#2#{},", + "and {C:attention}#3#{}", + }, + }, + }, + Sleeve = { + sleeve_cry_ccd_sleeve = { + name = "CCD Sleeve", + text = { + "Every card is also", + "a {C:attention}random{} consumable", + }, + }, + sleeve_cry_conveyor_sleeve = { + name = "Conveyor Sleeve", + text = { + "Jokers may {C:attention}not{} be moved", + "At start of round,", + "{C:attention}duplicate{} rightmost Joker", + "and {C:attention}destroy{} leftmost Joker", + }, + }, + sleeve_cry_critical_sleeve = { + name = "Critical Sleeve", + text = { + "After each hand played,", + "{C:green}1 in 4{} chance for {X:dark_edition,C:white} ^2 {} Mult", + "{C:green}1 in 8{} chance for {X:dark_edition,C:white} ^0.5 {} Mult", + }, + }, + sleeve_cry_encoded_sleeve = { + name = "Encoded Sleeve", + text = { + "Start with a {C:cry_code,T:j_cry_CodeJoker}Code Joker{}", + "and a {C:cry_code,T:j_cry_copypaste}Copy/Paste{}", + "Only {C:cry_code}Code Cards{} appear in shop", + }, + }, + sleeve_cry_equilibrium_sleeve = { + name = "Balanced Sleeve", + text = { + "All cards have the", + "{C:attention}same chance{} of", + "appearing in shops,", + "start run with", + "{C:attention,T:v_overstock_plus}+2 Shop Slots", + }, + }, + sleeve_cry_infinite_sleeve = { + name = "Unlimited Sleeve", + text = { + "You can select {C:attention}any", + "number of cards", + --someone do the hand size thing for me + }, + }, + sleeve_cry_misprint_sleeve = { + name = "Misprinted Sleeve", + text = { + "Values of cards", + "are {C:attention}randomized", + }, + }, + sleeve_cry_redeemed_sleeve = { + name = "Redeemed Sleeve", + text = { + "When a {C:attention}Voucher{} is purchased,", + "gain its {C:attention}extra tiers", + }, + }, + sleeve_cry_wormhole_sleeve = { + name = "Wormhole Sleeve", + text = { + "Start with an {C:cry_exotic}Exotic{C:attention} Joker", + "Jokers are {C:attention}20X{} more", + "likely to be {C:dark_edition}Negative", + "{C:attention}-2{} Joker slots", + }, + }, + }, + Spectral = { + c_cry_analog = { + name = "Analog", + text = { + "Create {C:attention}#1#{} copies of a", + "random {C:attention}Joker{}, destroy", + "all other Jokers, {C:attention}+#2#{} Ante", + }, + }, + c_cry_gateway = { + name = "Gateway", + text = { + "Create a random", + "{C:cry_exotic,E:1}Exotic{C:attention} Joker{}, destroy", + "all other Jokers", + }, + }, + c_cry_hammerspace = { + name = "Hammerspace", + text = { + "Apply random {C:attention}consumables{}", + "as if they were {C:dark_edition}Enhancements{}", + "to cards held in hand", + }, + }, + c_cry_lock = { + name = "Lock", + text = { + "Remove {C:red}all{} stickers", + "from {C:red}all{} Jokers,", + "then apply {C:purple,E:1}Eternal{}", + "to a random {C:attention}Joker{}", + }, + }, + c_cry_pointer = { + name = "POINTER://", + text = { + "Create a card", + "of {C:cry_code}your choice", + "{C:inactive,s:0.8}(Exotic Jokers #1#excluded)", + }, + }, + c_cry_replica = { + name = "Replica", + text = { + "Convert all cards", + "held in hand", + "to a {C:attention}random{}", + "card held in hand", + }, + }, + c_cry_source = { + name = "Source", + text = { + "Add a {C:cry_code}Green Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_summoning = { + name = "Summoning", + text = { + "Create a random", + "{C:cry_epic}Epic{} {C:joker}Joker{}, destroy", + "one random {C:joker}Joker{}", + }, + }, + c_cry_trade = { + name = "Trade", + text = { + "{C:attention}Lose{} a random Voucher,", + "gain {C:attention}2{} random Vouchers", + }, + }, + c_cry_typhoon = { + name = "Typhoon", + text = { + "Add an {C:cry_azure}Azure Seal{}", + "to {C:attention}#1#{} selected", + "card in your hand", + }, + }, + c_cry_vacuum = { + name = "Vacuum", + text = { + "Removes {C:red}all {C:green}modifications{}", + "from {C:red}all{} cards held in hand,", + "Earn {C:money}$#1#{} per {C:green}modification{} removed", + "{C:inactive,s:0.7}(ex. Enhancements, Seals, Editions)", + }, + }, + c_cry_white_hole = { + name = "White Hole", + text = { + "{C:attention}Remove{} all hand levels,", + "upgrade {C:legendary,E:1}most played{} poker hand", + "by {C:attention}3{} for each removed level", + }, + }, + }, + Stake = { + stake_cry_pink = { + name = "Pink Stake", + colour = "Pink", --this is used for auto-generated sticker localization + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_brown = { + name = "Brown Stake", + colour = "Brown", + text = { + "All {C:attention}stickers{} are compatible", + "with each other", + }, + }, + stake_cry_yellow = { + name = "Yellow Stake", + colour = "Yellow", + text = { + "{C:attention}Stickers{} can appear on", + "all purchasable items", + }, + }, + stake_cry_jade = { + name = "Jade Stake", + colour = "Jade", + text = { + "Cards can be drawn {C:attention}face down{}", + }, + }, + stake_cry_cyan = { + name = "Cyan Stake", + colour = "Cyan", + text = { + "{C:green}Uncommon{} and {C:red}Rare{} Jokers are", + "less likely to appear", + }, + }, + stake_cry_gray = { + name = "Gray Stake", + colour = "Gray", + text = { + "Rerolls increase by {C:attention}$2{} each", + }, + }, + stake_cry_crimson = { + name = "Crimson Stake", + colour = "Crimson", + text = { + "Vouchers restock on {C:attention}even{} Antes", + }, + }, + stake_cry_diamond = { + name = "Diamond Stake", + colour = "Diamond", + text = { + "Must beat Ante {C:attention}10{} to win", + }, + }, + stake_cry_amber = { + name = "Amber Stake", + colour = "Amber", + text = { + "{C:attention}-1{} Booster Pack slot", + }, + }, + stake_cry_bronze = { + name = "Bronze Stake", + colour = "Bronze", + text = { + "Vouchers are {C:attention}50%{} more expensive", + }, + }, + stake_cry_quartz = { + name = "Quartz Stake", + colour = "Quartz", + text = { + "Jokers can be {C:attention}Pinned{}", + "{s:0.8,C:inactive}(Stays pinned to the leftmost position){}", + }, + }, + stake_cry_ruby = { + name = "Ruby Stake", + colour = "Ruby", + text = { + "{C:attention}Big{} Blinds can become", + "{C:attention}Boss{} Blinds", + }, + }, + stake_cry_glass = { + name = "Glass Stake", + colour = "Glass", + text = { + "Cards can {C:attention}shatter{} when scored", + }, + }, + stake_cry_sapphire = { + name = "Sapphire Stake", + colour = "Sapphire", + text = { + "Lose {C:attention}25%{} of current money", + "at end of Ante", + "{s:0.8,C:inactive}(Up to $10){}", + }, + }, + stake_cry_emerald = { + name = "Emerald Stake", + colour = "Emerald", + text = { + "Cards, packs, and vouchers", + "can be {C:attention}face down{}", + "{s:0.8,C:inactive}(Unable to be viewed until purchased){}", + }, + }, + stake_cry_platinum = { + name = "Platinum Stake", + colour = "Platinum", + text = { + "Small Blinds are {C:attention}removed{}", + }, + }, + stake_cry_twilight = { + name = "Twilight Stake", + colour = "Twilight", + text = { + "Cards can be {C:attention}Banana{}", + "{s:0.8,C:inactive}(1 in 10 chance of being destroyed each round){}", + }, + }, + stake_cry_verdant = { + name = "Verdant Stake", + colour = "Verdant", + text = { + "Required score scales", + "faster for each {C:attention}Ante", + }, + }, + stake_cry_ember = { + name = "Ember Stake", + colour = "Ember", + text = { + "All items give no money when sold", + }, + }, + stake_cry_dawn = { + name = "Dawn Stake", + colour = "Dawn", + text = { + "Tarots and Spectrals target {C:attention}1", + "fewer card", + "{s:0.8,C:inactive}(Minimum of 1){}", + }, + }, + stake_cry_horizon = { + name = "Horizon Stake", + colour = "Horizon", + text = { + "When blind selected, add a", + "{C:attention}random card{} to deck", + }, + }, + stake_cry_blossom = { + name = "Blossom Stake", + colour = "Blossom", + text = { + "{C:attention}Final{} Boss Blinds can appear", + "in {C:attention}any{} Ante", + }, + }, + stake_cry_azure = { + name = "Azure Stake", + colour = "Azure", + text = { + "Values on Jokers are reduced", + "by {C:attention}20%{}", + }, + }, + stake_cry_ascendant = { + name = "Ascendant Stake", + colour = "Ascendant", + text = { + "{C:attention}-1{} Shop slot", + }, + }, + }, + Tag = { + tag_cry_astral = { + name = "Astral Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Astral{}", + }, + }, + tag_cry_banana = { + name = "Banana Tag", + text = { + "Creates {C:attention}#1#", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_bettertop_up = { + name = "Better Top-up Tag", + text = { + "Creates up to {C:attention}#1#", + "{C:green}Uncommon{} Jokers", + "{C:inactive}(Must have room){}", + }, + }, + tag_cry_better_voucher = { + name = "Golden Voucher Tag", + text = { + "Adds one Tier {C:attention}#1#{} Voucher", + "to the next shop", + }, + }, + tag_cry_blur = { + name = "Blurred Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Blurred{}", + }, + }, + tag_cry_booster = { + name = "Booster Tag", + text = { + "Next {C:cry_code}Booster Pack{} has", + "{C:attention}double{} cards and", + "{C:attention}double{} choices", + }, + }, + tag_cry_bundle = { + name = "Bundle Tag", + text = { + "Create a {C:attention}Standard Tag{}, {C:tarot}Charm Tag{},", + "{C:attention}Buffoon Tag{}, and {C:planet}Meteor Tag", + }, + }, + tag_cry_cat = { + name = "Cat Tag", + text = { "Meow.", "{C:inactive}Level {C:dark_edition}#1#" }, + }, + tag_cry_console = { + name = "Console Tag", + text = { + "Gives a free", + "{C:cry_code}Program Pack", + }, + }, + tag_cry_double_m = { + name = "Double M Tag", + text = { + "Shop has a", + "{C:dark_edition}Jolly {C:legendary}M Joker{}", + }, + }, + tag_cry_empowered = { + name = "Empowered Tag", + text = { + "Gives a free {C:spectral}Spectral Pack", + "with {C:legendary,E:1}The Soul{} and {C:cry_exotic,E:1}Gateway{}", + }, + }, + tag_cry_epic = { + name = "Epic Tag", + text = { + "Shop has a half-price", + "{C:cry_epic}Epic Joker", + }, + }, + tag_cry_gambler = { + name = "Gambler's Tag", + text = { + "{C:green}#1# in #2#{} chance to create", + "an {C:cry_exotic,E:1}Empowered Tag", + }, + }, + tag_cry_glass = { + name = "Fragile Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Fragile{}", + }, + }, + tag_cry_glitched = { + name = "Glitched Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Glitched{}", + }, + }, + tag_cry_gold = { + name = "Golden Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Golden{}", + }, + }, + tag_cry_gourmand = { + name = "Gourmand Tag", + text = { + "Shop has a free", + "{C:attention}Food Joker", + }, + }, + tag_cry_loss = { + name = "Loss", + text = { + "Gives a free", + "{C:cry_ascendant}Meme Pack", + }, + }, + tag_cry_m = { + name = "Jolly Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Jolly{}", + }, + }, + tag_cry_memory = { + name = "Memory Tag", + text = { + "Create {C:attention}#1#{} copies of", + "the last {C:attention}Tag{} used", + "during this run", + "{s:0.8,C:inactive}Copying Tags excluded", + "{s:0.8,C:inactive}Currently: {s:0.8,C:attention}#2#", + }, + }, + tag_cry_mosaic = { + name = "Mosaic Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Mosaic{}", + }, + }, + tag_cry_oversat = { + name = "Oversaturated Tag", + text = { + "Next base edition shop", + "Joker is free and", + "becomes {C:dark_edition}Oversaturated{}", + }, + }, + tag_cry_quadruple = { + name = "Quadruple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_quintuple = { + name = "Quintuple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + tag_cry_rework = { + name = "Rework Tag", + text = { + "Shop has a(n)", + "{C:dark_edition}#1# {C:cry_code}#2#", + }, + }, + tag_cry_schematic = { + name = "Schematic Tag", + text = { + "Shop has a", + "{C:attention}Brainstorm", + }, + }, + tag_cry_scope = { + name = "Scope Tag", + text = { + "{C:attention}+#1# {C:blue}hands{} and", + "{C:red}discards{} next round", + }, + }, + tag_cry_triple = { + name = "Triple Tag", + text = { + "Gives {C:attention}#1#{} copies of the", + "next selected {C:attention}Tag", + "{s:0.8,C:inactive}Copying Tags excluded", + }, + }, + }, + Tarot = { + c_cry_automaton = { + name = "The Automaton", + text = { + "Creates up to {C:attention}#1#", + "random {C:cry_code}Code{} card", + "{C:inactive}(Must have room)", + }, + }, + c_cry_eclipse = { + name = "The Eclipse", + text = { + "Enhances {C:attention}#1#{} selected card", + "into an {C:attention}Echo Card", + }, + }, + c_cry_meld = { + name = "Meld", + text = { + "Select a {C:attention}Joker{} or", + "{C:attention}playing card{} to", + "become {C:dark_edition}Double-Sided", + }, + }, + c_cry_theblessing = { + name = "The Blessing", + text = { + "Creates {C:attention}1{}", + "random {C:attention}consumable{}", + "{C:inactive}(Must have room){}", + }, + }, + }, + Voucher = { + v_cry_asteroglyph = { + name = "Asteroglyph", + text = { + "Set Ante to {C:attention}#1#{}", + }, + }, + v_cry_blankcanvas = { + name = "Blank Canvas", + text = { + "{C:attention}+#1#{} hand size", + }, + }, + v_cry_clone_machine = { + name = "Clone Machine", + text = { + "Double Tags become", + "{C:attention}Quintuple Tags{} and", + "are {C:attention}4X{} as common", + }, + }, + v_cry_command_prompt = { + name = "Command Prompt", + text = { + "{C:cry_code}Code{} cards", + "can appear", + "in the {C:attention}shop{}", + }, + }, + v_cry_copies = { + name = "Copies", + text = { + "Double Tags become", + "{C:attention}Triple Tags{} and are", + "{C:attention}2X{} as common", + }, + }, + v_cry_curate = { + name = "Curate", + text = { + "All cards", + "appear with", + "an {C:dark_edition}Edition{}", + }, + }, + v_cry_dexterity = { + name = "Dexterity", + text = { + "Permanently", + "gain {C:blue}+#1#{} hand(s)", + "each round", + }, + }, + v_cry_double_down = { + name = "Double Down", + text = { + "After every round,", + "{X:dark_edition,C:white} X1.5 {} to all values", + "on the back of", + "{C:dark_edition}Double-Sided{} cards", + }, + }, + v_cry_double_slit = { + name = "Double Slit", + text = { + "{C:attention}Meld{} can appear", + "in the shop and", + "Arcana Packs", + }, + }, + v_cry_double_vision = { + name = "Double Vision", + text = { + "{C:dark_edition}Double-Sided{} cards appear", + "{C:attention}4X{} more frequently", + }, + }, + v_cry_fabric = { + name = "Universal Fabric", + text = { + "{C:dark_edition}+#1#{} Joker slot(s)", + }, + }, + v_cry_massproduct = { + name = "Mass Production", + text = { + "All cards and packs", + "in shop cost {C:attention}$1{}", + }, + }, + v_cry_moneybean = { + name = "Money Beanstalk", + text = { + "Raise the cap on", + "interest earned in", + "each round to {C:money}$#1#{}", + }, + }, + v_cry_overstock_multi = { + name = "Multistock", + text = { + "{C:attention}+#1#{} card slot(s) and", + "{C:attention}+#1#{} booster pack slot(s)", + "available in shop", + }, + }, + v_cry_pacclimator = { + name = "Planet Acclimator", + text = { + "{C:planet}Planet{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:planet}Planet{}", + "cards are {C:green}free{}", + }, + }, + v_cry_pairamount_plus = { + name = "Pairamount Plus", + text = { + "{C:attention}Retrigger{} all M Jokers", + "once for every Pair", + "{C:attention}contained{} in played hand", + }, + }, + v_cry_pairing = { + name = "Pairing", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand is a {C:attention}Pair", + }, + }, + v_cry_quantum_computing = { + name = "Quantum Computing", + text = { + "{C:cry_code}Code{} cards can spawn", + "with {C:dark_edition}Negative{} edition", + }, + }, + v_cry_repair_man = { + name = "Repair Man", + text = { + "{C:attention}Retrigger{} all M Jokers", + "if played hand contains a {C:attention}Pair", + }, + }, + v_cry_rerollexchange = { + name = "Reroll Exchange", + text = { + "All rerolls", + "cost {C:attention}$2{}", + }, + }, + v_cry_satellite_uplink = { + name = "Satellite Uplink", + text = { + "{C:cry_code}Code{} cards may", + "appear in any of", + "the {C:attention}Celestial Packs{}", + }, + }, + v_cry_scope = { + name = "Galactic Scope", + text = { + "Create the {C:planet}Planet", + "card for played", + "{C:attention}poker hand{}", + "{C:inactive}(Must have room){}", + }, + }, + v_cry_tacclimator = { + name = "Tarot Acclimator", + text = { + "{C:tarot}Tarot{} cards appear", + "{C:attention}X#1#{} more frequently", + "in the shop", + "All future {C:tarot}Tarot{}", + "cards are {C:green}free{}", + }, + }, + v_cry_tag_printer = { + name = "Tag Printer", + text = { + "Double Tags become", + "{C:attention}Quadruple Tags{} and", + "are {C:attention}3X{} as common", + }, + }, + v_cry_threers = { + name = "The 3 Rs", + text = { + "Permanently", + "gain {C:red}+#1#{} discard(s)", + "each round", + }, + }, + v_cry_stickyhand = { + name = "Sticky Hand", + text = { + "{C:attention}+#1#{} card", + "selection limit", + }, + }, + v_cry_grapplinghook = { + name = "Grappling Hook", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + v_cry_hyperspacetether = { + name = "Hyperspace Tether", + text = { + "{C:attention}+#1#{} card", + "selection limit", + "{C:inactive,s:0.7}NOTE: Will have extra{}", + "{C:inactive,s:0.7}functionality later{}", + }, + }, + }, + Other = { + banana = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "destroyed each round", + }, + }, + cry_rigged = { + name = "Rigged", + text = { + "All {C:cry_code}listed{} probabilities", + "are {C:cry_code}guaranteed", + }, + }, + cry_hooked = { + name = "Hooked", + text = { + "When this Joker is {C:cry_code}triggered{},", + "trigger {C:cry_code}#1#", + }, + }, + food_jokers = { + name = "Food Jokers", + text = { + "{s:0.8}Gros Michel, Egg, Ice Cream, Cavendish,", + "{s:0.8}Turtle Bean, Diet Cola, Popcorn, Ramen,", + "{s:0.8}Seltzer, Pickle, Chili Pepper, Caramel,", + "{s:0.8}Nostalgic Candy, Fast Food M, etc.", + }, + }, + cry_https_disabled = { + name = "M", + text = { + "{C:attention,s:0.7}Updating{s:0.7} is disabled by default ({C:attention,s:0.7}HTTPS Module{s:0.7})", + }, + }, + --i am so sorry for this + --actually some of this needs to be refactored at some point + cry_eternal_booster = { + name = "Eternal", + text = { + "All cards in pack", + "are {C:attention}Eternal{}", + }, + }, + cry_perishable_booster = { + name = "Perishable", + text = { + "All cards in pack", + "are {C:attention}Perishable{}", + }, + }, + cry_rental_booster = { + name = "Rental", + text = { + "All cards in pack", + "are {C:attention}Rental{}", + }, + }, + cry_pinned_booster = { + name = "Pinned", + text = { + "All cards in pack", + "are {C:attention}Pinned{}", + }, + }, + cry_banana_booster = { + name = "Banana", + text = { + "All cards in pack", + "are {C:attention}Banana{}", + }, + }, + cry_eternal_voucher = { + name = "Eternal", + text = { + "Can't be traded", + }, + }, + cry_perishable_voucher = { + name = "Perishable", + text = { + "Debuffed after", + "{C:attention}#1#{} rounds", + "{C:inactive}({C:attention}#2#{C:inactive} remaining)", + }, + }, + cry_rental_voucher = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at", + "end of round", + }, + }, + cry_pinned_voucher = { + name = "Pinned", + text = { + "Remains in shop", + "until redeemed", + }, + }, + cry_banana_voucher = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance of being", + "unredeemed each round", + }, + }, + cry_perishable_consumeable = { + name = "Perishable", + text = { + "Debuffed at", + "end of round", + }, + }, + cry_rental_consumeable = { + name = "Rental", + text = { + "Lose {C:money}$#1#{} at end of", + "round, and on use", + }, + }, + cry_pinned_consumeable = { + name = "Pinned", + text = { + "Can't use other", + "non-{C:attention}Pinned{} consumables", + }, + }, + cry_banana_consumeable = { + name = "Banana", + text = { + "{C:green}#1# in #2#{} chance to do", + "nothing on use", + }, + }, + p_cry_code_normal_1 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_normal_2 = { + name = "Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_jumbo_1 = { + name = "Jumbo Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_code_mega_1 = { + name = "Mega Program Pack", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:cry_code} Code{} cards", + }, + }, + p_cry_empowered = { + name = "Spectral Pack [Empowered Tag]", + text = { + "Choose {C:attention}#1#{} of up to", + "{C:attention}#2#{C:spectral} Spectral{} cards", + "{s:0.8,C:inactive}(Generated by Empowered Tag)", + }, + }, + p_cry_meme_1 = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_two = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + p_cry_meme_three = { + name = "Meme Pack", + text = { + "Choose {C:attention}#1#{} of", + "up to {C:attention}#2# Meme Jokers{}", + }, + }, + undiscovered_code = { + name = "Not Discovered", + text = { + "Purchase or use", + "this card in an", + "unseeded run to", + "learn what it does", + }, + }, + cry_green_seal = { + name = "Green Seal", + text = { + "Creates a {C:cry_code}Code{} card", + "when played and unscoring", + "{C:inactive}(Must have room)", + }, + }, + cry_azure_seal = { + name = "Azure Seal", + text = { + "Create {C:attention}#1#{} {C:dark_edition}Negative{}", + "{C:planet}Planets{} for played", + "{C:attention}poker hand{}, then", + "{C:red}destroy{} this card", + }, + }, + }, + }, + misc = { + achievement_names = { + ach_cry_ace_in_crash = "Pocket ACE", + ach_cry_blurred_blurred_joker = "Legally Blind", + ach_cry_bullet_hell = "Bullet Hell", + ach_cry_break_infinity = "Break Infinity", + ach_cry_cryptid_the_cryptid = "Cryptid the Cryptid", + ach_cry_exodia = "Exodia", + ach_cry_freak_house = "Freak House", + ach_cry_googol_play_pass = "Googol Play Pass", + ach_cry_haxxor = "H4xx0r", + ach_cry_home_realtor = "Home Realtor", + ach_cry_jokes_on_you = "Joke's on You, Pal!", + ach_cry_niw_uoy = "!niW uoY", + ach_cry_now_the_fun_begins = "Now the Fun Begins", + ach_cry_patience_virtue = "Patience is a Virtue", + ach_cry_perfectly_balanced = "Perfectly Balanced", + ach_cry_pull_request = "Pull Request", + ach_cry_traffic_jam = "Traffic Jam", + ach_cry_ult_full_skip = "Ultimate Full Skip", + ach_cry_used_crash = "We Told You Not To", + ach_cry_what_have_you_done = "WHAT HAVE YOU DONE?!", + }, + achievement_descriptions = { + ach_cry_ace_in_crash = 'check_for_unlock({type = "ace_in_crash"})', + ach_cry_blurred_blurred_joker = "Obtain Blurred Blurred Joker", + ach_cry_bullet_hell = "Have 15 AP Jokers", + ach_cry_break_infinity = "Score 1.79e308 Chips in a single hand", + ach_cry_cryptid_the_cryptid = "Use Cryptid on Cryptid", + ach_cry_exodia = "Have 5 Exotic Jokers", + ach_cry_freak_house = "Play a Flush House consisting of 6s and 9s of Hearts whilst possessing Nice", + ach_cry_googol_play_pass = "Rig a Googol Play Card", + ach_cry_haxxor = "Use a cheat code", + ach_cry_home_realtor = "Activate Happy House before Ante 8 (without DoE/Antimatter)", + ach_cry_jokes_on_you = "Trigger The Joke's effect on Ante 1 and win the run", + ach_cry_niw_uoy = "Reach Ante -8", + ach_cry_now_the_fun_begins = "Obtain Canvas", + ach_cry_patience_virtue = "Wait out Lavender Loop for 2 minutes before playing first hand and beat the blind", + ach_cry_perfectly_balanced = "Beat Very Fair Deck on Ascendant Stake", + ach_cry_pull_request = "Have ://COMMIT spawn the same Joker that it destroyed", + ach_cry_traffic_jam = "Beat all Rush Hour challenges", + ach_cry_ult_full_skip = "Win in 1 round", + ach_cry_used_crash = "Use ://CRASH", + ach_cry_what_have_you_done = "Delete or Sacrifice an Exotic Joker", + }, + challenge_names = { + c_cry_ballin = "Ballin'", + c_cry_boss_rush = "Enter the Gungeon", + c_cry_dagger_war = "Dagger War", + c_cry_joker_poker = "Joker Poker", + c_cry_onlycard = "Solo Card", + c_cry_rng = "RNG", + c_cry_rush_hour = "Rush Hour I", + c_cry_rush_hour_ii = "Rush Hour II", + c_cry_rush_hour_iii = "Rush Hour III", + c_cry_sticker_sheet = "Sticker Sheet", + c_cry_sticker_sheet_plus = "Sticker Sheet+", + }, + dictionary = { + --Settings Menu + cry_set_features = "Features", + cry_set_music = "Music", + cry_set_enable_features = "Select features to enable (applies on game restart):", + cry_feat_achievements = "Achievements", + ["cry_feat_antimatter deck"] = "Antimatter Deck", + cry_feat_blinds = "Blinds", + cry_feat_challenges = "Challenges", + ["cry_feat_code cards"] = "Code Cards", + ["cry_feat_misc. decks"] = "Misc. Decks", + ["cry_feat_https module"] = "HTTPS Module", + ["cry_feat_timer mechanics"] = "Timer Mechanics", + ["cry_feat_enhanced decks"] = "Enhanced Decks", + ["cry_feat_epic jokers"] = "Epic Jokers", + ["cry_feat_exotic jokers"] = "Exotic Jokers", + ["cry_feat_m jokers"] = "M Jokers", + cry_feat_menu = "Custom Main Menu", + ["cry_feat_misc."] = "Misc.", + ["cry_feat_misc. jokers"] = "Misc. Jokers", + cry_feat_planets = "Planets", + cry_feat_jokerdisplay = "JokerDisplay (Does Nothing)", + cry_feat_tags = "Tags", + cry_feat_sleeves = "Sleeves", + cry_feat_spectrals = "Spectrals", + ["cry_feat_more stakes"] = "Stakes", + cry_feat_vouchers = "Vouchers", + cry_mus_jimball = "Jimball (Funkytown by Lipps Inc. - Copyrighted)", + cry_mus_code = "Code Cards (://LETS_BREAK_THE_GAME by HexaCryonic)", + cry_mus_exotic = "Exotic Jokers (Joker in Latin by AlexZGreat)", + cry_mus_high_score = "High Score (Final Boss [For Your Computer] by AlexZGreat)", - k_cry_program_pack = "Program Pack", - k_cry_meme_pack = "Meme Pack", + k_cry_program_pack = "Program Pack", + k_cry_meme_pack = "Meme Pack", - cry_critical_hit_ex = "Critical Hit!", - cry_critical_miss_ex = "Critical Miss!", + cry_critical_hit_ex = "Critical Hit!", + cry_critical_miss_ex = "Critical Miss!", - cry_debuff_oldhouse = "No Full Houses", - cry_debuff_oldarm = "Must play 4 or fewer cards", - cry_debuff_oldpillar = "No Straights", - cry_debuff_oldflint = "No Flushes", - cry_debuff_oldmark = "No hands containing a Pair", - cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", + cry_debuff_oldhouse = "No Full Houses", + cry_debuff_oldarm = "Must play 4 or fewer cards", + cry_debuff_oldpillar = "No Straights", + cry_debuff_oldflint = "No Flushes", + cry_debuff_oldmark = "No hands containing a Pair", + cry_debuff_obsidian_orb = "Applies abilities of all defeated bosses", - k_code = "Code", - b_code_cards = "Code Cards", - b_pull = "PULL", - cry_hooked_ex = "Hooked!", - k_end_blind = "End Blind", + k_code = "Code", + b_code_cards = "Code Cards", + b_pull = "PULL", + cry_hooked_ex = "Hooked!", + k_end_blind = "End Blind", - cry_code_rank = "ENTER RANK", - cry_code_enh = "ENTER ENHANCEMENT", - cry_code_hand = "ENTER POKER HAND", - cry_code_enter_card = "ENTER A CARD", - cry_code_apply = "APPLY", - cry_code_apply_previous = "APPLY PREVIOUS", - cry_code_exploit = "EXPLOIT", - cry_code_exploit_previous = "EXPLOIT PREVIOUS", - cry_code_create = "CREATE", - cry_code_create_previous = "CREATE PREVIOUS", - cry_code_execute = "EXECUTE", - cry_code_cancel = "CANCEL", + cry_code_rank = "ENTER RANK", + cry_code_enh = "ENTER ENHANCEMENT", + cry_code_hand = "ENTER POKER HAND", + cry_code_enter_card = "ENTER A CARD", + cry_code_apply = "APPLY", + cry_code_apply_previous = "APPLY PREVIOUS", + cry_code_exploit = "EXPLOIT", + cry_code_exploit_previous = "EXPLOIT PREVIOUS", + cry_code_create = "CREATE", + cry_code_create_previous = "CREATE PREVIOUS", + cry_code_execute = "EXECUTE", + cry_code_cancel = "CANCEL", - b_flip = "FLIP", - b_merge = "MERGE", + b_flip = "FLIP", + b_merge = "MERGE", - cry_again_q = "Again?", - cry_curse = "Curse", - cry_curse_ex = "Curse!", - cry_sobbing = "Help me...", - cry_gaming = "Gaming", - cry_gaming_ex = "Gaming!", - cry_sus_ex = "Impostor!", - cry_jolly_ex = "Jolly Up!", - cry_m_minus = "m", - cry_m = "M", - cry_m_ex = "M!", - cry_minus_round = "-1 Round", - cry_plus_cryptid = "+1 Cryptid", - cry_no_triggers = "No triggers left!", - cry_unredeemed = "Unredeemed...", - cry_active = "Active", - cry_inactive = "Inactive", + cry_again_q = "Again?", + cry_curse = "Curse", + cry_curse_ex = "Curse!", + cry_sobbing = "Help me...", + cry_gaming = "Gaming", + cry_gaming_ex = "Gaming!", + cry_sus_ex = "Impostor!", + cry_jolly_ex = "Jolly Up!", + cry_m_minus = "m", + cry_m = "M", + cry_m_ex = "M!", + cry_minus_round = "-1 Round", + cry_plus_cryptid = "+1 Cryptid", + cry_no_triggers = "No triggers left!", + cry_unredeemed = "Unredeemed...", + cry_active = "Active", + cry_inactive = "Inactive", - k_disable_music = "Disable Music", + k_disable_music = "Disable Music", - k_cry_epic = "Epic", - k_cry_epic = "Exotic", + k_cry_epic = "Epic", + k_cry_epic = "Exotic", - cry_notif_jimball_1 = "Jimball", - cry_notif_jimball_2 = "Copyright Notice", - cry_notif_jimball_d1 = "Jimball plays the song \"Funkytown\",", - cry_notif_jimball_d2 = "which is copyrighted and can't be", - cry_notif_jimball_d3 = "used for streams and videos.", - }, - labels = { - food_jokers = "Food Jokers", - banana = "Banana", - code = "Code", - cry_rigged = "Rigged", - cry_hooked = "Hooked", + cry_notif_jimball_1 = "Jimball", + cry_notif_jimball_2 = "Copyright Notice", + cry_notif_jimball_d1 = 'Jimball plays the song "Funkytown",', + cry_notif_jimball_d2 = "which is copyrighted and can't be", + cry_notif_jimball_d3 = "used for streams and videos.", + }, + labels = { + food_jokers = "Food Jokers", + banana = "Banana", + code = "Code", + cry_rigged = "Rigged", + cry_hooked = "Hooked", - cry_green_seal = "Green Seal", - cry_azure_seal = "Azure Seal", + cry_green_seal = "Green Seal", + cry_azure_seal = "Azure Seal", - cry_astral = "Astral", - cry_blur = "Blurred", - cry_double_sided = "Double-Sided", - cry_glass = "Fragile", - cry_glitched = "Glitched", - cry_gold = "Golden", - cry_m = "Jolly", - cry_mosaic = "Mosaic", - cry_noisy = "Noisy", - cry_oversat = "Oversaturated", + cry_astral = "Astral", + cry_blur = "Blurred", + cry_double_sided = "Double-Sided", + cry_glass = "Fragile", + cry_glitched = "Glitched", + cry_gold = "Golden", + cry_m = "Jolly", + cry_mosaic = "Mosaic", + cry_noisy = "Noisy", + cry_oversat = "Oversaturated", - k_cry_epic = "Epic", - k_cry_epic = "Exotic" - }, - rnj_loc_txts = { - stats = { - plus_mult = { "{C:red}+#2#{} Mult" }, - plus_chips = { "{C:blue}+#2#{} Chips" }, - x_mult = { "{X:red,C:white} X#2#{} Mult" }, - x_chips = { "{X:blue,C:white} X#2#{} Chips" }, - h_size = { "{C:attention}+#2#{} Hand Size" }, - money = { "{C:money}+$#2#{} at payout" }, - }, - stats_inactive = { - plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, - plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, - x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, - x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, - h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, - money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, - }, - actions = { - make_joker = { "Create {C:attention}#2# Joker{}" }, - make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, - make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, - make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, - add_dollars = { "Earn {C:money}$#2#{}" }, - }, - contexts = { - open_booster = { "when a {C:attention}Booster{} is opened" }, - buying_card = { "when a card is bought" }, - selling_self = { "when this card is sold" }, - selling_card = { "when a card is sold" }, - reroll_shop = { "on reroll" }, - ending_shop = { "at the end of the {C:attention}shop{}" }, - skip_blind = { "when a {C:attention}blind{} is skipped" }, - skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, - playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, - first_hand_drawn = { "when round begins" }, - setting_blind = { "when {C:attention}Blind{} is selected" }, - remove_playing_cards = { "when a card is destroyed" }, - using_consumeable = { "when a {C:attention}consumable{} card is used" }, - debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, - pre_discard = { "before each discard" }, - discard = { "for each discarded card" }, - end_of_round = { "at end of {C:attention}round{}" }, - individual_play = { "for each card scored" }, - individual_hand_score = { "for each card held in hand during scoring" }, - individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, - repetition_play = { "Retrigger played cards" }, - repetition_hand = { "Retrigger held in hand cards" }, - other_joker = { "per {C:attention}Joker{}" }, - before = { "before each {C:attention}hand{}" }, - after = { "after each {C:attention}hand{}" }, - joker_main = {}, - }, - conds = { - buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, - tarot = { "if card is a {C:tarot}Tarot{} card" }, - planet = { "if card is a {C:planet}Planet{} card" }, - spectral = { "if card is a {C:spectral}Spectral{} card" }, - joker = { "if card is a {C:attention}Joker{}" }, - suit = { "if card is a {V:1}#3#{}" }, - rank = { "if card is rank {C:attention}#3#{}" }, - face = { "if card is a {C:attention}face{} card" }, - boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, - non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, - small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, - big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, - first = { "if it's the {C:attention}first {C:attention}hand{}" }, - last = { "if it's the {C:attention}last {C:attention}hand{}" }, - common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, - uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, - rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, - poker_hand = { "if hand is a {C:attention}#3#{}" }, - or_more = { "if hand contains {C:attention}#3#{} or more cards" }, - or_less = { "if hand contains {C:attention}#3#{} or less cards" }, - hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, - discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, - first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, - last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, - odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, - }, - }, - v_dictionary = { - a_xchips = {"X#1# Chips"}, - a_powmult = {"^#1# Mult"}, - a_powchips = {"^#1# Chips"}, - a_powmultchips = {"^#1# Mult+Chips"}, - a_round = {"+#1# Round"}, - a_xchips_minus = {"-X#1# Chips"}, - a_powmult_minus = {"-^#1# Mult"}, - a_powchips_minus = {"-^#1# Chips"}, - a_powmultchips_minus = {"-^#1# Mult+Chips"}, - a_round_minus = {"-#1# Round"}, - - a_tag = {"#1# Tag"}, - a_tags = {"#1# Tags"}, + k_cry_epic = "Epic", + k_cry_epic = "Exotic", + }, + rnj_loc_txts = { + stats = { + plus_mult = { "{C:red}+#2#{} Mult" }, + plus_chips = { "{C:blue}+#2#{} Chips" }, + x_mult = { "{X:red,C:white} X#2#{} Mult" }, + x_chips = { "{X:blue,C:white} X#2#{} Chips" }, + h_size = { "{C:attention}+#2#{} Hand Size" }, + money = { "{C:money}+$#2#{} at payout" }, + }, + stats_inactive = { + plus_mult = { "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)" }, + plus_chips = { "{C:inactive}(Currently {C:blue}+#1#{C:inactive} Chips)" }, + x_mult = { "{C:inactive}(Currently {X:red,C:white} X#1# {C:inactive} Mult)" }, + x_chips = { "{C:inactive}(Currently {X:blue,C:white} X#1# {C:inactive} Chips)" }, + h_size = { "{C:inactive}(Currently {C:attention}+#1#{C:inactive} Hand Size)" }, + money = { "{C:inactive}(Currently {C:money}+$#1#{C:inactive})" }, + }, + actions = { + make_joker = { "Create {C:attention}#2# Joker{}" }, + make_tarot = { "Create {C:attention}#2#{C:tarot} Tarot{} card" }, + make_planet = { "Create {C:attention}#2#{C:planet} Planet{} card" }, + make_spectral = { "Create {C:attention}#2#{C:spectral} Spectral{} card" }, + add_dollars = { "Earn {C:money}$#2#{}" }, + }, + contexts = { + open_booster = { "when a {C:attention}Booster{} is opened" }, + buying_card = { "when a card is bought" }, + selling_self = { "when this card is sold" }, + selling_card = { "when a card is sold" }, + reroll_shop = { "on reroll" }, + ending_shop = { "at the end of the {C:attention}shop{}" }, + skip_blind = { "when a {C:attention}blind{} is skipped" }, + skipping_booster = { "when any {C:attention}Booster Pack{} is skipped" }, + playing_card_added = { "every time a {C:attention}playing card{} is added to your deck" }, + first_hand_drawn = { "when round begins" }, + setting_blind = { "when {C:attention}Blind{} is selected" }, + remove_playing_cards = { "when a card is destroyed" }, + using_consumeable = { "when a {C:attention}consumable{} card is used" }, + debuffed_hand = { "if played {C:attention}hand{} is not allowed" }, + pre_discard = { "before each discard" }, + discard = { "for each discarded card" }, + end_of_round = { "at end of {C:attention}round{}" }, + individual_play = { "for each card scored" }, + individual_hand_score = { "for each card held in hand during scoring" }, + individual_hand_end = { "for each card held in hand at end of {C:attention}round{}" }, + repetition_play = { "Retrigger played cards" }, + repetition_hand = { "Retrigger held in hand cards" }, + other_joker = { "per {C:attention}Joker{}" }, + before = { "before each {C:attention}hand{}" }, + after = { "after each {C:attention}hand{}" }, + joker_main = {}, + }, + conds = { + buy_common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + buy_uncommon = { "if it is a {C:green}Uncommon{} {C:attention}Joker{}" }, + tarot = { "if card is a {C:tarot}Tarot{} card" }, + planet = { "if card is a {C:planet}Planet{} card" }, + spectral = { "if card is a {C:spectral}Spectral{} card" }, + joker = { "if card is a {C:attention}Joker{}" }, + suit = { "if card is a {V:1}#3#{}" }, + rank = { "if card is rank {C:attention}#3#{}" }, + face = { "if card is a {C:attention}face{} card" }, + boss = { "if {C:attention}blind{} is a {C:attention}Boss {C:attention}Blind{}" }, + non_boss = { "if {C:attention}blind{} is a {C:attention}Non-Boss {C:attention}Blind{}" }, + small = { "if {C:attention}blind{} is a {C:attention}Small {C:attention}Blind{}" }, + big = { "if {C:attention}blind{} is a {C:attention}Big {C:attention}Blind{}" }, + first = { "if it's the {C:attention}first {C:attention}hand{}" }, + last = { "if it's the {C:attention}last {C:attention}hand{}" }, + common = { "if it is a {C:blue}Common{} {C:attention}Joker{}" }, + uncommon = { "if it is an {C:green}Uncommon{} {C:attention}Joker{}" }, + rare = { "if it is a {C:red}Rare{} {C:attention}Joker{}" }, + poker_hand = { "if hand is a {C:attention}#3#{}" }, + or_more = { "if hand contains {C:attention}#3#{} or more cards" }, + or_less = { "if hand contains {C:attention}#3#{} or less cards" }, + hands_left = { "if #3# {C:blue}hands{} remaining at end of round" }, + discards_left = { "if #3# {C:red}discards{} remaining at end of round" }, + first_discard = { "if it's the {C:attention}first {C:attention}discard{}" }, + last_discard = { "if it's the {C:attention}last {C:attention}discard{}" }, + odds = { "with a {C:green}#4# {C:green}in {C:green}#3#{} chance" }, + }, + }, + v_dictionary = { + a_xchips = { "X#1# Chips" }, + a_powmult = { "^#1# Mult" }, + a_powchips = { "^#1# Chips" }, + a_powmultchips = { "^#1# Mult+Chips" }, + a_round = { "+#1# Round" }, + a_xchips_minus = { "-X#1# Chips" }, + a_powmult_minus = { "-^#1# Mult" }, + a_powchips_minus = { "-^#1# Chips" }, + a_powmultchips_minus = { "-^#1# Mult+Chips" }, + a_round_minus = { "-#1# Round" }, - cry_sticker_name = {"#1# Sticker"}, - cry_sticker_desc = { - "Used this Joker", - "to win on #2##1#", - "#2#Stake#3# difficulty" - }, - }, - v_text = { - ch_c_cry_all_perishable = {"All Jokers are {C:eternal}Perishable{}"}, - ch_c_cry_all_rental = {"All Jokers are {C:eternal}Rental{}"}, - ch_c_cry_all_pinned = {"All Jokers are {C:eternal}Pinned{}"}, - ch_c_cry_all_banana = {"All Jokers are {C:eternal}Banana{}"}, - ch_c_all_rnj = {"All Jokers are {C:attention}RNJoker{}"}, - ch_c_cry_sticker_sheet_plus = {"All purchasable items have all stickers"}, - ch_c_cry_rush_hour = {"All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop"}, - ch_c_cry_rush_hour_ii = {"All Blinds are {C:attention}Boss Blinds{}"}, - ch_c_cry_rush_hour_iii = {"{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast"}, - ch_c_cry_no_tags = {"Skipping is {C:attention}disabled{}"}, - ch_c_cry_no_vouchers = {"{C:attention}Vouchers{} no longer appear in the shop"}, - ch_c_cry_no_boosters = {"{C:attention}Booster Packs{} no longer appear in the shop"}, - ch_c_cry_no_rerolls = {"Rerolling is {C:attention}disabled{}"}, - ch_c_cry_no_consumables = {"{C:attention}Consumables{} no longer appear"} - }, - -- Thanks to many members of the community for contributing to all of these quips! - -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 - -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 - very_fair_quips = { - { "L", "NO VOUCHERS", "FOR YOU" }, - { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, - { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, - { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, - { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, - { "OOPS!", "NO VOUCHERS", "" }, - { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, - { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, - { "$0", "BLANK VOUCHER", "(GET IT?)" }, - { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, - { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, - { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, - { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, - { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, - { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, - { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, - { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, - { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, - { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, - { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, - { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, - { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, - { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, - { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, - { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, - { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, - { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, - { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, - { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, - { "VOUCHERS", "!E", "VOUCHER POOL" }, - { "THERE", "IS NO", "VOUCHER" }, - { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, - { "", "VOUCHERN'T", "" }, - { "YOU", "JUST LOST", "THE GAME" }, - { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, - { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, - { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, - { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, - { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, - { "", "no vouchers?", "" }, - { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, - { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, - { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, - { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, - { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, - { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, - { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, - { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, - { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, - { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, - { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, - { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, - { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, - { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, - { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, - { - "... --- ...", - ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", - "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", - }, - { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, - { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, - { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, - { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, - { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, - { - "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", - "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", - "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", - }, - { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, - } - } + a_tag = { "#1# Tag" }, + a_tags = { "#1# Tags" }, + + cry_sticker_name = { "#1# Sticker" }, + cry_sticker_desc = { + "Used this Joker", + "to win on #2##1#", + "#2#Stake#3# difficulty", + }, + }, + v_text = { + ch_c_cry_all_perishable = { "All Jokers are {C:eternal}Perishable{}" }, + ch_c_cry_all_rental = { "All Jokers are {C:eternal}Rental{}" }, + ch_c_cry_all_pinned = { "All Jokers are {C:eternal}Pinned{}" }, + ch_c_cry_all_banana = { "All Jokers are {C:eternal}Banana{}" }, + ch_c_all_rnj = { "All Jokers are {C:attention}RNJoker{}" }, + ch_c_cry_sticker_sheet_plus = { "All purchasable items have all stickers" }, + ch_c_cry_rush_hour = { "All Boss Blinds are {C:attention}The Clock{} or {C:attention}Lavender Loop" }, + ch_c_cry_rush_hour_ii = { "All Blinds are {C:attention}Boss Blinds{}" }, + ch_c_cry_rush_hour_iii = { + "{C:attention}The Clock{} and {C:attention}Lavender Loop{} scale {C:attention}twice{} as fast", + }, + ch_c_cry_no_tags = { "Skipping is {C:attention}disabled{}" }, + ch_c_cry_no_vouchers = { "{C:attention}Vouchers{} no longer appear in the shop" }, + ch_c_cry_no_boosters = { "{C:attention}Booster Packs{} no longer appear in the shop" }, + ch_c_cry_no_rerolls = { "Rerolling is {C:attention}disabled{}" }, + ch_c_cry_no_consumables = { "{C:attention}Consumables{} no longer appear" }, + }, + -- Thanks to many members of the community for contributing to all of these quips! + -- There's too many to credit so just go here: https://discord.com/channels/1116389027176787968/1209506360987877408/1237971471146553406 + -- And here: https://discord.com/channels/1116389027176787968/1219749193204371456/1240468252325318667 + very_fair_quips = { + { "L", "NO VOUCHERS", "FOR YOU" }, + { "BOZO", "DID YOU THINK I WOULD", "GIVE YOU A VOUCHER?" }, + { "NOPE!", "NO VOUCHERS HERE!", "(SLUMPAGE EDITION)" }, + { "SKILL ISSUE", "IMAGINE BEING GOOD ENOUGH", "FOR A VOUCHER" }, + { "JIMBO", "FROM MANAGEMENT", "FORGOT TO RESTOCK" }, + { "OOPS!", "NO VOUCHERS", "" }, + { "YOU JOKER,", "WHY ARE YOU LOOKING", "OVER HERE? LOL" }, + { "THE VOUCHER", "IS IN", "ANOTHER CASTLE" }, + { "$0", "BLANK VOUCHER", "(GET IT?)" }, + { "ERROR", "CANNOT DO ARITHMETIC ON A NIL VALUE", "(tier4vouchers.lua)" }, + { "100% OFF", "ON ALL VOUCHERS", "(SOMEONE ALREADY BOUGHT THEM)" }, + { "TRY AGAIN LATER", "HINT: YOU WON'T HAVE", "ENOUGH MONEY ANYWAYS" }, + { "HUH?", '"VOUCHER"?', "THAT'S NOT EVEN A WORD..." }, + { 'HOLD "R"', "TO RESTOCK", "ALL VOUCHERS" }, + { "DID YOU KNOW?", "PRESSING ALT+F4", "GIVES FREE VOUCHERS!" }, + { "SORRY,", "THERE ARE NO VOUCHERS", "DUE TO BUDGET CUTS" }, + { "CALL 1-600-JIMBO", "TO RATE YOUR", "VOUCHER EXPERIENCE" }, + { "DEFEAT", "ANTE 39 BOSS BLIND", "TO RESTOCK" }, + { "MAGIC TRICK", "I MADE THIS VOUCHER", "DISAPPEAR" }, + { "WHY IS A", "VOUCHER LIKE", "A WRITING DESK?" }, + { "WE HAVE RETRACTED", "YOUR VOUCHERS, THEY WOULD BE", "BETTER USED IN OTHER RUNS" }, + { "WHY DO THEY CALL IT VOUCHER", "WHEN MULT OUT THE HOT", "IN COLD EAT EAT THE CHIP" }, + { "SORRY", "THE VOUCHERS ARE EXPERIENCING", "VOUCHIFIA ABORTUS" }, + { "UNFORTUNATELY", "THE VOUCHRX REWRITE UPDATE", "HAS BEEN CANCELLED" }, + { "DEFEAT", "BOSS BLIND", "TO CHANGE NOTHING" }, + { "BIRDS ARE SINGING", "FLOWERS ARE BLOOMING", "KIDS LIKE YOU..." }, + { "WE ARE SORRY TO SAY", "ALL VOUCHERS HAVE BEEN RECALLED", "DUE TO SALMONELLA EXPOSURE" }, + { "VOUCHERS COULDN'T ARRIVE", "DUE TO SHOP LAYOUT BEING", "200% OVERBUDGET" }, + { "YOU LIKE", "BUYING VOUCHERS, DON'T YOU", "YOU'RE A VOUCHERBUYER" }, + { "VOUCHERS", "!E", "VOUCHER POOL" }, + { "THERE", "IS NO", "VOUCHER" }, + { "THERE IS", "NO SANTA", "AND THERE ARE NO VOUCHERS" }, + { "", "VOUCHERN'T", "" }, + { "YOU", "JUST LOST", "THE GAME" }, + { "CAN I OFFER YOU", "A NICE EGG", "IN THESE TRYING TIMES?" }, + { "GO TOUCH GRASS", "INSTEAD OF USING", "THIS DECK" }, + { "YOU COULD BE", "PLAYING ON BLUE DECK", "RIGHT NOW" }, + { "FREE EXOTICS", "GET THEM BEFORE ITS", "TOO LATE (sold out)" }, + { "PROVE THEM WRONG", "BUY BUYING AN INVISIBLE", "VOUCHER FOR $10" }, + { "", "no vouchers?", "" }, + { "see this ad?", "if you are, then it's working", "and you could have it for your own" }, + { "YOU'RE MISSING OUT ON", "AT LEAST 5 VOUCHERS RIGHT NOW", "tonktonktonktonktonk" }, + { "10", "20 NO VOUCHER XD", "30 GOTO 10" }, + { "VOUCHERS", "ARE A PREMIUM FEATURE", "$199.99 JOLLARS TO UNLOCK" }, + { "TRUE VOUCHERLESS!?!?", "ASCENDANT STAKE ONLY", "VERY FAIR DECK" }, + { "ENJOYING YOUR", "VOUCHER EXPERIENCE? GIVE US A", "FIVE STAR RATING ON JESTELP" }, + { "FREE VOUCHERS", "HOT VOUCHERS NEAR YOU", "GET VOUCHERS QUICK WITH THIS ONE TRICK" }, + { "INTRODUCING", "THE VERY FIRST TIER 0 VOUCHER!", "(coming to Cryptid 1.0 soon)" }, + { "A VOUCHER!", "IT'S JUST IMAGINARY", "WE IMAGINED YOU WOULD WANT IT, THAT IS" }, + { "TURN OFF ADBLOCKER", "WITHOUT ADS, WE WOULDN'T", "BE ABLE TO SELL YOU VOUCHERS" }, + { "IF YOU HAVE", "A PROBLEM WITH THIS", "EMAIL IT TO US AT NORESPONSE@JMAIL.COM" }, + { "NOT ENOUGH MONEY", "TO BUY THIS VOUCHER", "SO WHY WOULD WE PUT IT HERE?" }, + { "WANT A VOUCHER?", "WELL SHUT UP", "YOU CAN'T HAVE ANY LOL" }, + { "^$%& NO", "VOUCHERS ^%&% %&$^% FOR", "$%&%%$ %&$&*%$^ YOU" }, + { "A VOUCHER (TRUST)", "|\\/|", "|/\\|" }, + { + "... --- ...", + ".--. .-.. .- -.-- . .-. -.. . -.-. --- -.. . -.. -- --- .-. ... .", + "-.-. --- -.. . - --- ..-. .. -. -.. .- ...- --- ..- -.-. .... . .-.", + }, + { "RUN > NEW", "STARE AT NOTHING", "FOR AN HOUR OR TWO" }, + { "WE'RE VERY SORRY", "THE LAST GUY PANIC BOUGHT", "ALL THE VOUCHERS" }, + { "HOW IT FEELS", "TO BUY NO", "VOUCHERS" }, + { "JIMBO GOT A NAT 1", "AND DUMPED ALL THE", "VOUCHERS IN A DITCH" }, + { "ATTEMPT TO INDEX", "FIELD 'VOUCHER'", "(A NIL VALUE)" }, + { + "OH YOU REALLY THOUGHT THAT READING ALL THESE LINES WOULD BRING YOUR VOUCHERS BACK?", + "SORRY TO TELL YOU, BUT THIS DECK DOESN'T CONTAIN THE VOUCHERS YOU SEEK.", + "THIS ABNORMALLY LONG TEXT IS HERE AND DESIGNED TO WASTE YOUR TIME AND EFFORT WHILE YOU READ IT.", + }, + { "GO TO", "https://youtu.be/p7YXXieghto", "FOR FREE VOUCHERS" }, + }, + }, } diff --git a/Cryptid/lovely.toml b/Cryptid/lovely.toml deleted file mode 100644 index aec7cd7..0000000 --- a/Cryptid/lovely.toml +++ /dev/null @@ -1,786 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Make the splash screen more jolly -# Requires "Custom Main Menu" config to be enabled -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "SC = Card(G.ROOM.T.w/2 - SC_scale*G.CARD_W/2, 10. + G.ROOM.T.h/2 - SC_scale*G.CARD_H/2, SC_scale*G.CARD_W, SC_scale*G.CARD_H, G.P_CARDS.empty, G.P_CENTERS['j_joker'])" -position = "after" -payload = ''' -if Cryptid.enabled["Menu"] then - if Cryptid.enabled["M Jokers"] then - local mcard = {} - for k, _ in pairs(Cryptid.M_jokers) do - if G.P_CENTERS[k] then - mcard[#mcard + 1] = k - end - end - local option = math.random(#mcard) - local chosenoption = mcard[option] - if chosenoption == "j_cry_biggestm" or chosenoption == "j_cry_reverse" then --These don't render properly; replace these with loopy instead - SC = Card(G.ROOM.T.w/2 - SC_scale*G.CARD_W/2, 10. + G.ROOM.T.h/2 - SC_scale*G.CARD_H/2, SC_scale*G.CARD_W, SC_scale*G.CARD_H, G.P_CARDS.empty, G.P_CENTERS['j_cry_loopy'],{bypass_discovery_center = true, bypass_discovery_ui = true}) - else - SC = Card(G.ROOM.T.w/2 - SC_scale*G.CARD_W/2, 10. + G.ROOM.T.h/2 - SC_scale*G.CARD_H/2, SC_scale*G.CARD_W, SC_scale*G.CARD_H, G.P_CARDS.empty, G.P_CENTERS[chosenoption],{bypass_discovery_center = true, bypass_discovery_ui = true}) - end - else - SC = Card(G.ROOM.T.w/2 - SC_scale*G.CARD_W/2, 10. + G.ROOM.T.h/2 - SC_scale*G.CARD_H/2, SC_scale*G.CARD_W, SC_scale*G.CARD_H, G.P_CARDS.empty, G.P_CENTERS['j_jolly'],{bypass_discovery_center = true, bypass_discovery_ui = true}) - end -end -''' -match_indent = true - -# Make cards in splash screen CCD cards -# Requires "Custom Main Menu" config to be enabled -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "if math.random() > 0.8 then card.sprite_facing = 'back'; card.facing = 'back' end" -position = "before" -payload = ''' -if Cryptid.enabled["Menu"] then card:set_ability(get_random_consumable('cry_splash',{"no_grc"},nil,nil,true), true, nil) end -''' -match_indent = true - -# Show Glitched Edition to confirm Cryptid is Active -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "replace_card.states.visible = false" -position = "before" -payload = "replace_card:set_edition(G.P_CENTERS.e_cry_glitched and 'e_cry_glitched' or 'e_negative',true,true)" -match_indent = true - -# Patch related crash -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if not initial then G.GAME.blind:debuff_card(self) end" -position = "at" -payload = "if not initial and G.GAME and G.GAME.blind then G.GAME.blind:debuff_card(self) end" -match_indent = true - -# Draw midground layer -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.config.center.soul_pos and (self.config.center.discovered or self.bypass_discovery_center) then" -position = "after" -payload = ''' -if self.config.center.soul_pos and self.config.center.soul_pos.extra and (self.config.center.discovered or self.bypass_discovery_center) then - local scale_mod = 0.07-- + 0.02*math.cos(1.8*G.TIMERS.REAL) + 0.00*math.cos((G.TIMERS.REAL - math.floor(G.TIMERS.REAL))*math.pi*14)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^3 - local rotate_mod = 0--0.05*math.cos(1.219*G.TIMERS.REAL) + 0.00*math.cos((G.TIMERS.REAL)*math.pi*5)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^2 - self.children.floating_sprite2:draw_shader('dissolve',0, nil, nil, self.children.center,scale_mod, rotate_mod,nil, 0.1--[[ + 0.03*math.cos(1.8*G.TIMERS.REAL)--]],nil, 0.6) - self.children.floating_sprite2:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod, rotate_mod) -end -''' -match_indent = true - - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if not v.custom_draw and k ~= 'focused_ui' and k ~= "front" and k ~= "back" and k ~= "soul_parts" and k ~= "center" and k ~= 'floating_sprite' and k~= "shadow" and k~= "use_button" and k ~= 'buy_button' and k ~= 'buy_and_use_button' and k~= "debuff" and k ~= 'price' and k~= 'particles' and k ~= 'h_popup' then v:draw() end''' -position = "at" -payload = '''if not v.custom_draw and k ~= 'focused_ui' and k ~= "front" and k ~= "back" and k ~= "soul_parts" and k ~= "center" and k ~= 'floating_sprite' and k ~= 'floating_sprite2' and k~= "shadow" and k~= "use_button" and k ~= 'buy_button' and k ~= 'buy_and_use_button' and k~= "debuff" and k ~= 'price' and k~= 'particles' and k ~= 'h_popup' then v:draw() end''' -match_indent = true - - -# Custom variables in info queue -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "function generate_card_ui(_c, full_UI_table, specific_vars, card_type, badges, hide_desc, main_start, main_end)" -position = "after" -payload = "if _c.specific_vars then specific_vars = _c.specific_vars end" -match_indent = true - -# Fix not all cards returning to hand on big hands -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "{card_limit = 500, type = 'discard'})" -position = "at" -payload = "{card_limit = 1e308, type = 'discard'})" -match_indent = true - -# When hand size exceeds deck size, space the cards as if the hand size was equal to the deck size -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "function CardArea:align_cards()" -position = "after" -payload = ''' - if self.config.type == 'hand' then - self.config.temp_limit = math.min(self.config.card_limit, #G.playing_cards) - end -''' -match_indent = true - -# Crash fix -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if not G.SAVED_GAME.VERSION or G.SAVED_GAME.VERSION < '0.9.2' then" -position = "at" -payload = "if not G.SAVED_GAME or not G.SAVED_GAME.VERSION or G.SAVED_GAME.VERSION < '0.9.2' then" -match_indent = true - -# Register banned bosses for rush hour -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "set_profile_progress()" -position = "before" -payload = ''' -for i = 1, #G.CHALLENGES do - if (G.CHALLENGES[i].id == 'c_cry_rush_hour' or G.CHALLENGES[i].id == 'c_cry_rush_hour_ii' or G.CHALLENGES[i].id == 'c_cry_rush_hour_iii') and #G.CHALLENGES[i].restrictions.banned_other == 0 then - for k, v in pairs(G.P_BLINDS) do - if k ~= "bl_cry_clock" and k ~= "bl_cry_lavender_loop" and v.boss then - G.CHALLENGES[i].restrictions.banned_other[#G.CHALLENGES[i].restrictions.banned_other+1] = {id = k, type = 'blind'} - end - end - end -end -''' -match_indent = true - -# Apply booster pack edition and stickers to contents - by Jen Walter -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "card.T.x = self.T.x" -position = "before" -payload = ''' -local edi = self.edition or {} -if edi.type and not self.ability.name:find('Standard') then - if card.ability.name ~= "cry-meteor" - and card.ability.name ~= "cry-exoplanet" - and card.ability.name ~= "cry-stardust" then - card:set_edition({[edi.type] = true}) - end -end -if self.ability.eternal then - card.ability.eternal = self.ability.eternal -end -if self.ability.perishable then - card.ability.perishable = self.ability.perishable -end -if self.ability.rental then - card.ability.rental = self.ability.rental -end -if self.pinned then - card.pinned = self.pinned -end -if self.ability.banana then - card.ability.banana = self.ability.banana -end -''' -match_indent = true - -# catch edition code in standard pack to avoid reapplying edition (HORRIBLE) -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''local edition \= poll_edition\('standard_edition'\.\.G.GAME\.round_resets\.ante, edition_rate, true\)\n\s+card\:set_edition\(edition\)''' -position = "at" -payload = ''' -local edi = self.edition or {} -if edi.type and not (G.GAME.modifiers.cry_force_edition and G.GAME.modifiers.cry_force_edition ~= 'random') then - card:set_edition({[edi.type] = true}) -elseif not G.GAME.modifiers.cry_force_random_edition then - local edition = poll_edition('standard_edition'..G.GAME.round_resets.ante, edition_rate, true) - card:set_edition(edition) -end -''' - -# Edition + sticker forcing on vouchers (editions are just funny cost increases) -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "G.shop_vouchers:emplace(card)" -position = "before" -payload = ''' -if G.GAME.current_round.cry_voucher_edition then - card:set_edition(G.GAME.current_round.cry_voucher_edition, true, true) -end -if G.GAME.current_round.cry_voucher_stickers then - if G.GAME.current_round.cry_voucher_stickers.eternal == true then -- this is dumb but i'm not sure how to call functions from a string - card:set_eternal(true) - card.ability.eternal = true - end - if G.GAME.current_round.cry_voucher_stickers.perishable == true then - card.ability.perishable = true - end - if G.GAME.current_round.cry_voucher_stickers.rental == true then - card:set_rental(true) - card.ability.rental = true - end - if G.GAME.current_round.cry_voucher_stickers.pinned == true then - card.pinned = true - end - if G.GAME.current_round.cry_voucher_stickers.banana == true then - card.ability.banana = true - end -end -''' -match_indent = true - -# don't forget voucher tags -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = "G.shop_vouchers:emplace(card)" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then - card:set_edition(nil, true) -elseif G.GAME.modifiers.cry_force_random_edition then - local edition = cry_poll_random_edition() - card:set_edition(edition, true) -end - -if G.GAME.modifiers.cry_force_sticker == 'eternal' or G.GAME.modifiers.cry_sticker_sheet_plus then - card:set_eternal(true) - card.ability.eternal = true -end -if G.GAME.modifiers.cry_force_sticker == 'perishable' or G.GAME.modifiers.cry_sticker_sheet_plus then - card:set_perishable(true) - card.ability.perishable = true -end -if G.GAME.modifiers.cry_force_sticker == 'rental' or G.GAME.modifiers.cry_sticker_sheet_plus then - card:set_rental(true) - card.ability.rental = true -end -if G.GAME.modifiers.cry_force_sticker == 'pinned' or G.GAME.modifiers.cry_sticker_sheet_plus then - card.pinned = true -end -if G.GAME.modifiers.cry_force_sticker == 'banana' or G.GAME.modifiers.cry_sticker_sheet_plus then - card.ability.banana = true -end -if G.GAME.modifiers.cry_sticker_sheet_plus then - for k, v in pairs(SMODS.Stickers) do - if v.apply and not v.no_sticker_sheet then v:apply(card, true) end - end -end -''' -match_indent = true - -# show owned vouchers -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if G.GAME.used_vouchers[v.key] then" -position = "after" -payload = ''' - if not G.GAME.cry_owned_vouchers[v.key] then - G.GAME.cry_owned_vouchers[v.key] = G.GAME.used_vouchers[v.key] - end -end -if G.GAME.cry_owned_vouchers[v.key] then -''' -match_indent = true - -# show in voucher menu -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "voucher_areas[#voucher_areas]:emplace(card)" -position = "before" -payload = ''' -if not G.GAME.voucher_edition_index then G.GAME.voucher_edition_index = {} end -if G.GAME.voucher_edition_index[card.ability.name] then -- i just made it a function so i can look at it less - local edition = cry_edition_to_table(G.GAME.voucher_edition_index[card.ability.name]) - if edition then - card:set_edition(edition, true, true) - end -end - -if G.GAME.voucher_sticker_index.eternal[card.ability.name] then - card:set_eternal(true) - card.ability.eternal = true -end -if G.GAME.voucher_sticker_index.perishable[card.ability.name] then - card:set_perishable(true) - card.ability.perish_tally = G.GAME.voucher_sticker_index.perishable[card.ability.name] - card.ability.perishable = true - if G.GAME.voucher_sticker_index.perishable[card.ability.name] == 0 then - card.debuff = true - end -end -if G.GAME.voucher_sticker_index.rental[card.ability.name] then - card:set_rental(true) - card.ability.rental = true -end -if G.GAME.voucher_sticker_index.pinned[card.ability.name] then - card.pinned = true -end -if G.GAME.voucher_sticker_index.banana[card.ability.name] then - card.ability.banana = true -end -card.ability.extra = G.GAME.cry_voucher_centers[card.config.center_key].config.extra -if card.ability.extra_disp then card.ability.extra_disp = G.GAME.cry_voucher_centers[card.config.center_key].config.extra_disp end -''' -match_indent = true - -# sticker tagging -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if center_table.name == 'Overstock' or center_table.name == 'Overstock Plus' then" -position = "before" -payload = ''' -if not G.GAME.voucher_edition_index then G.GAME.voucher_edition_index = {} end -if self and self.edition then - G.GAME.voucher_edition_index[center_table.name] = self.edition.type -end -if not G.GAME.voucher_sticker_index then G.GAME.voucher_sticker_index = {eternal = {}, perishable = {}, rental = {}, pinned = {}, banana = {}} end -if self and self.ability and self.ability.eternal and self.ability.eternal == true then - G.GAME.voucher_sticker_index.eternal[center_table.name] = true -end -if self and self.ability and self.ability.perishable and self.ability.perishable == true then - G.GAME.voucher_sticker_index.perishable[center_table.name] = G.GAME.cry_voucher_perishable_rounds -end -if self and self.ability and self.ability.rental and self.ability.rental == true then - G.GAME.voucher_sticker_index.rental[center_table.name] = true -end -if self and self.pinned and self.pinned == true then - G.GAME.voucher_sticker_index.pinned[center_table.name] = true -end -if self and self.ability and self.ability.banana and self.ability.banana == true then - G.GAME.voucher_sticker_index.banana[center_table.name] = true -end -''' -match_indent = true - -# apply end of round stuff -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.GAME.round_resets.ante == G.GAME.win_ante and G.GAME.blind:get_type() == 'Boss' then" -position = "before" -payload = ''' -if G.GAME.voucher_sticker_index then - if G.GAME.voucher_sticker_index.perishable then - for k, v in pairs(G.GAME.voucher_sticker_index.perishable) do - if v > 1 then - G.GAME.voucher_sticker_index.perishable[k] = v - 1 - end - if v == 1 then - G.GAME.voucher_sticker_index.perishable[k] = v - 1 - for kk, vv in pairs(G.P_CENTERS) do - if k == vv.name then - cry_debuff_voucher(kk) - G.GAME.used_vouchers.vv = nil - G.GAME.used_vouchers[kk] = nil - break - end - end - end - end - end - if G.GAME.voucher_sticker_index.rental then - local cumulative_rental = 0 - for k, v in pairs(G.GAME.voucher_sticker_index.rental) do - cumulative_rental = cumulative_rental + G.GAME.cry_voucher_rental_rate - end - if cumulative_rental > 0 then - G.E_MANAGER:add_event(Event({ - trigger = 'immediate', - blocking = false, - blockable = false, - func = (function() - ease_dollars(-cumulative_rental) - return true - end)})) - end - end - if G.GAME.voucher_sticker_index.banana then -- i'm pretty sure unredeem breaks if spectrals are disabled? unsure though - local voucher_queue = {} - local current_round_voucher=G.GAME.current_round.voucher - for k, v in pairs(G.GAME.voucher_sticker_index.banana) do - if (pseudorandom('byebyevoucher') < G.GAME.probabilities.normal/G.GAME.cry_voucher_banana_odds) then - area = G.play - local unredeemed_voucher = '' - for kk, vv in pairs(G.P_CENTERS) do - if k == vv.name then - unredeemed_voucher = kk - break - end - end - local card = create_card('Voucher', area, nil, nil, nil, nil, unredeemed_voucher) - if G.GAME.voucher_edition_index[card.ability.name] then -- i made this bullshit a function - local edition = cry_edition_to_table(G.GAME.voucher_edition_index[card.ability.name]) - if edition then - card:set_edition(edition, true, true) - end - end - if G.GAME.voucher_sticker_index.eternal[card.ability.name] then - card:set_eternal(true) - card.ability.eternal = true - end - if G.GAME.voucher_sticker_index.perishable[card.ability.name] then - card:set_perishable(true) - card.ability.perish_tally = G.GAME.voucher_sticker_index.perishable[card.ability.name] - card.ability.perishable = true - if G.GAME.voucher_sticker_index.perishable[card.ability.name] == 0 then - card.debuff = true - end - end - if G.GAME.voucher_sticker_index.rental[card.ability.name] then - card:set_rental(true) - card.ability.rental = true - end - if G.GAME.voucher_sticker_index.pinned[card.ability.name] then - card.pinned = true - end - if G.GAME.voucher_sticker_index.banana[card.ability.name] then - card.ability.banana = true - end - card:start_materialize() - area:emplace(card) - card.cost=0 - card.shop_voucher=false - voucher_queue[#voucher_queue+1] = card - end - end - for k, v in pairs(voucher_queue) do - v:unredeem() - G.E_MANAGER:add_event(Event({ - trigger = 'after', - delay = 0, - func = function() - v:start_dissolve() - return true - end})) - end - G.GAME.current_round.voucher=current_round_voucher - end -end -''' -match_indent = true - -# Affect booster packs -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "G.shop_booster:emplace(card)" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then - card:set_edition(nil, true, true) -elseif G.GAME.modifiers.cry_force_random_edition then - local edition = cry_poll_random_edition() - card:set_edition(edition, true, true) -end - -local eternal_perishable_poll = pseudorandom('cry_bpet'..(key_append or '')..G.GAME.round_resets.ante) -if (G.GAME.modifiers.cry_force_sticker == 'eternal') or (G.GAME.modifiers.cry_sticker_sheet_plus) or (G.GAME.modifiers.cry_any_stickers and (G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.8)) then - card:set_eternal(true) - card.ability.eternal = true -end -if G.GAME.modifiers.enable_perishables_in_shop and G.GAME.modifiers.cry_any_stickers then -- i don't feel like messing with this, whatever - if not G.GAME.modifiers.cry_eternal_perishable_compat and ((eternal_perishable_poll > 0.6) and (eternal_perishable_poll <= 0.8)) then - card:set_perishable(true) - card.ability.perishable = true - end - if G.GAME.modifiers.cry_eternal_perishable_compat and pseudorandom('cry_bpper'..(key_append or '')..G.GAME.round_resets.ante) > 0.8 then - card:set_perishable(true) - card.ability.perishable = true - end -end -if (G.GAME.modifiers.cry_force_sticker == 'perishable') or (G.GAME.modifiers.cry_sticker_sheet_plus) then - card:set_perishable(true) - card.ability.perishable = true -end -if (G.GAME.modifiers.cry_force_sticker == 'rental') or (G.GAME.modifiers.cry_sticker_sheet_plus) or (G.GAME.modifiers.cry_any_stickers and (G.GAME.modifiers.enable_rentals_in_shop and pseudorandom('cry_bpssjr'..(key_append or '')..G.GAME.round_resets.ante) > 0.8)) then -- i should really just make this a function? so messy - card.ability.rental = true -- do not set_rental here to prevent cost from decreasing -end -if (G.GAME.modifiers.cry_force_sticker == 'pinned') or (G.GAME.modifiers.cry_sticker_sheet_plus) or (G.GAME.modifiers.cry_any_stickers and (G.GAME.modifiers.cry_enable_pinned_in_shop and pseudorandom('cry_bppin'..(key_append or '')..G.GAME.round_resets.ante) > 0.8)) then - card.pinned = true -end -if G.GAME.modifiers.cry_force_sticker == 'banana' or G.GAME.modifiers.cry_sticker_sheet_plus then - card.ability.banana = true -end -if not G.GAME.modifiers.cry_eternal_perishable_compat and G.GAME.modifiers.enable_banana and G.GAME.modifiers.cry_any_stickers and (pseudorandom('cry_bpbanana'..(key_append or '')..G.GAME.round_resets.ante) > 0.8) and (eternal_perishable_poll <= 0.8) then - card.ability.banana = true -end -if G.GAME.modifiers.cry_eternal_perishable_compat and G.GAME.modifiers.enable_banana and G.GAME.modifiers.cry_any_stickers and (pseudorandom('cry_bpbanana'..(key_append or '')..G.GAME.round_resets.ante) > 0.8) then - card.ability.banana = true -end -if G.GAME.modifiers.cry_sticker_sheet_plus then - for k, v in pairs(SMODS.Stickers) do - if v.apply and not v.no_sticker_sheet then v:apply(card, true) end - end -end -''' -match_indent = true - -# world's first actually good multi-patch -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = "card:start_materialize()" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then - card:set_edition(nil, true, true) -elseif G.GAME.modifiers.cry_force_random_edition then - local edition = cry_poll_random_edition() - card:set_edition(edition, true, true) -end -''' -match_indent = true - -# Prevent Jokers from spitting empty messages -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "text = extra.message or text" -position = "after" -payload = "if not text or text == '' then return end" -match_indent = true - -# Add default pool value for Consumeables -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = 'else _pool[#_pool + 1] = "j_joker"' -position = "before" -payload = '''elseif _type == 'Consumeables' then _pool[#_pool + 1] = "c_ceres"''' -match_indent = true - -# make the cat tag meow (can probably do this without injecting?) -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''play_sound('tarot2', math.random()*0.1 + 0.55, 0.09)''' -position = "before" -payload = '''if self.key == 'tag_cry_cat' then -local rand = math.random(4) -play_sound('cry_meow'..rand, 1.26, 0.25) -end -''' -match_indent = true - -# hi it's me toneblock and i'm being stupid again! (Game:update inject) -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''if G.FILE_HANDLER and G.FILE_HANDLER and G.FILE_HANDLER.update_queued and (''' -position = "before" -payload = ''' -if not GLOBAL_cry_member_count_delay then GLOBAL_cry_member_count_delay = 0 end -if (GLOBAL_cry_member_count_delay > 5) or not GLOBAL_cry_member_count then -- it doesn't need to update this frequently? but it also doesn't need to be higher tbh... - if update_cry_member_count then update_cry_member_count() end -- i honestly hate nil checks like this, wish there was a shorthand - GLOBAL_cry_member_count_delay = 0 -else - GLOBAL_cry_member_count_delay = GLOBAL_cry_member_count_delay + dt -end -''' -match_indent = true - -# call update_cry_member_count() whenever the collection is opened to ensure it updates properly on title collection if it can (better than running it on loc_vars) -# it's not computationally intense at all, so whatever -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = '''G.FUNCS.your_collection = function(e)''' -position = "after" -payload = ''' -if update_cry_member_count then update_cry_member_count() end -''' -match_indent = true - -# notice if https is disabled (by default) -# also does some other things since this is patching in the same spot -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if _c.set == 'Other' then" -position = "before" -payload = ''' -if _c.name == 'cry-membershipcard' or _c.name == 'cry-membershipcardtwo' then - if not Cryptid.enabled["HTTPS Module"] then - if G.localization.descriptions.Other.cry_https_disabled then - main_end = {} - localize{type = 'other', key = 'cry_https_disabled', nodes = main_end, vars = {}} - main_end = main_end[1] - end - end -end -if _c.name == 'cry-translucent Joker' then - if G.jokers and G.jokers.cards then - for k, v in ipairs(G.jokers.cards) do - if (v.edition and v.edition.negative) and (G.localization.descriptions.Other.remove_negative)then - main_end = {} - localize{type = 'other', key = 'remove_negative', nodes = main_end, vars = {}} - main_end = main_end[1] - break - end - end - end -end -if _c.name == 'cry-blurred Joker' then - if (SMODS.Mods["sdm0sstuff"] or {}).can_load then - if G.localization.descriptions.Other.blurred_sdm0 then - main_end = {} - localize{type = 'other', key = 'blurred_sdm0', nodes = main_end, vars = {}} - main_end = main_end[1] - end - end -end -''' -match_indent = true - -# hand size forgiveness if playing negative or antimatter deck (someone please fix) -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "function Game:update_draw_to_hand(dt)" -position = "after" -payload = ''' -if G.GAME.selected_back and (G.GAME.selected_back.name == 'cry--Negative Deck' or G.GAME.selected_back.name == 'cry-Antimatter') and G.hand.config.card_limit <= 0 then -- 'cry--Negative Deck'... sure - G.hand.config.card_limit = 1 -end -''' -match_indent = true - -# don't draw old perishable texture -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if self.ability.perishable then''' -position = "at" -payload = '''if self.ability.perishable and not layer then''' -match_indent = true - -# init Cryptid global through lovely -# so other mods can add things to memepack pool -# and define some stub functions so that the game does not immediately crash when talisman isn't loaded -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = '''function love.load()''' -position = "before" -payload = ''' -Cryptid = {} -Cryptid.enabled = {} -Cryptid.memepack = {} -Cryptid.aliases = {} -Cryptid.food = {} -Cryptid.M_jokers = {} -Cryptid.Megavouchers = {} -function cry_format(...) - return ... -end -''' -match_indent = true - -# Adds cry_creating_card event -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = ''' - check_for_unlock({type = 'have_edition'}) -end -''' -position = "after" -payload = ''' -for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({cry_creating_card = true, card = card}) -end -''' -match_indent = true - -# Adds cry_debuff_immune card modifier -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'if self.ability and self.ability.perma_debuff then self.debuff = true end' -position = "after" -payload = ''' -if self.cry_debuff_immune then - self.debuff = false -end -''' -match_indent = true - -# Removes cry_debuff_immune at the end of the round -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = 'for i = 1, #G.jokers.cards do' -position = "before" -payload = ''' -for i = 1, #G.playing_cards do - local CARD = G.playing_cards[i] - CARD.cry_debuff_immune = false -end -''' -match_indent = true - -# Joker Sell List -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'self:calculate_joker{selling_self = true}' -position = "before" -payload = ''' -if self.config.center.set == 'Joker' then - if G.GAME.jokers_sold then - local contained = false - for i = 1, #G.GAME.jokers_sold do - if self.config.center.key == G.GAME.jokers_sold[i] then contained = true end - end - if not contained then table.insert(G.GAME.jokers_sold, self.config.center.key) end - else - G.GAME.jokers_sold = {self.config.center.key} - end -end -''' -match_indent = true - -# fix crashing from the source -# well, not from the real source, but close enough -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {''' -position = "before" -payload = ''' -if (not self.ability.orbital_hand) or (not G.GAME.hands[self.ability.orbital_hand]) then - local _poker_hands = {} - for k, v in pairs(G.GAME.hands) do - if v.visible then _poker_hands[#_poker_hands+1] = k end - end - - self.ability.orbital_hand = pseudorandom_element(_poker_hands, pseudoseed('orbital')) -end -''' -match_indent = true - -# add check for unlock with winning hand -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''check_for_unlock({type = 'win'})''' -position = "after" -payload = ''' -check_for_unlock({type = 'cry_win_with_hand', hand = G.GAME.last_hand_played}) -''' -match_indent = true - -# (scuffed) remove filler from rare tag pool -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''if v.yes_pool_flag and not G.GAME.pool_flags[v.yes_pool_flag] then add = nil end''' -position = "after" -payload = ''' -if v.key == 'j_cry_filler' and _append == 'rta' then add = nil end -''' -match_indent = true diff --git a/Cryptid/lovely/Achievements.toml b/Cryptid/lovely/Achievements.toml deleted file mode 100644 index 6309e69..0000000 --- a/Cryptid/lovely/Achievements.toml +++ /dev/null @@ -1,38 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -## Cryptid Achievements - -# Check to earn some achievements on startup -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''check_for_unlock({type = 'blind_discoveries'})''' -position = "after" -payload = ''' -if change_context ~= "splash" then - if not (G.ACHIEVEMENTS and G.ACHIEVEMENTS['ach_cry_used_crash'] and G.ACHIEVEMENTS['ach_cry_used_crash'].earned) then check_for_unlock({type = 'ach_cry_used_crash'}) end - if not (G.ACHIEVEMENTS and G.ACHIEVEMENTS['ach_cry_traffic_jam'] and G.ACHIEVEMENTS['ach_cry_traffic_jam'].earned) then check_for_unlock({type = 'win_challenge_startup'}) end - if not (G.ACHIEVEMENTS and G.ACHIEVEMENTS['ach_cry_perfectly_balanced'] and G.ACHIEVEMENTS['ach_cry_perfectly_balanced'].earned) then check_for_unlock({type = 'win_stake_startup'}) end -end''' -match_indent = true - -# Cryptid the Cryptid check -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''new_cards[#new_cards+1] = _card''' -position = "before" -payload = '''if _card.config.center.key == "c_cryptid" then check_for_unlock({type = "cryptid_the_cryptid"}) end''' -match_indent = true - -# WHAT HAVE YOU DONE check -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''local sliced_card = G.jokers.cards[my_pos+1]''' -position = "after" -payload = '''if sliced_card.config.center.rarity == "cry_exotic" then check_for_unlock({type = "what_have_you_done"}) end''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Ascended.toml b/Cryptid/lovely/Ascended.toml index d11b794..102af62 100644 --- a/Cryptid/lovely/Ascended.toml +++ b/Cryptid/lovely/Ascended.toml @@ -39,7 +39,9 @@ G.GAME.hands[text].played_this_round = G.GAME.hands[text].played_this_round + 1 ''' position = "before" payload = ''' -if G.GAME.current_round.current_hand.cry_asc_num > 0 then G.GAME.cry_asc_played = G.GAME.cry_asc_played and G.GAME.cry_asc_played+1 or 1 end +if G.GAME.current_round.current_hand.cry_asc_num > (G.GAME.cry_exploit_override and 1 or 0) then + G.GAME.cry_asc_played = G.GAME.cry_asc_played and G.GAME.cry_asc_played+1 or 1 +end ''' match_indent = true diff --git a/Cryptid/lovely/Blinds.toml b/Cryptid/lovely/Blinds.toml deleted file mode 100644 index e1cbd1d..0000000 --- a/Cryptid/lovely/Blinds.toml +++ /dev/null @@ -1,53 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# The Tax effect -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "func = (function() update_hand_text({delay = 0, immediate = true}, {mult = 0, chips = 0, chip_total = math.floor(hand_chips*mult), level = '', handname = ''});play_sound('button', 0.9, 0.6);return true end)" -position = "at" -payload = "func = (function() update_hand_text({delay = 0, immediate = true}, {mult = 0, chips = 0, chip_total = G.GAME.blind.cry_cap_score and G.GAME.blind:cry_cap_score(math.floor(hand_chips*mult)) or math.floor(hand_chips*mult), level = '', handname = ''});play_sound('button', 0.9, 0.6);return true end)" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "ease_to = G.GAME.chips + math.floor(hand_chips*mult)," -position = "at" -payload = "ease_to = G.GAME.chips + (G.GAME.blind.cry_cap_score and G.GAME.blind:cry_cap_score(math.floor(hand_chips*mult)) or math.floor(hand_chips*mult))," -match_indent = true - -# Bunco (Magenta Dagger) and Cryptid (The Tax) compat -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = "ease_to = G.GAME.chips + math.floor(hand_chips * mult) * (e and e.antiscore and -1 or 1)," -position = 'at' -match_indent = true -payload = '''ease_to = G.GAME.chips + (G.GAME.blind.cry_cap_score and G.GAME.blind:cry_cap_score(math.floor(hand_chips*mult)) or math.floor(hand_chips*mult)) * (e and e.antiscore and -1 or 1),''' - -# Fix a crash related to undebuffing Jokers at end of round -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if not G.P_CENTERS['e_'..(self.edition.type)].discovered then" -position = "at" -payload = "if self.edition.type and G.P_CENTERS['e_'..(self.edition.type)] and not G.P_CENTERS['e_'..(self.edition.type)].discovered then" -match_indent = true - -# Blocks hands with more than 5 cards with Psychic -[[patches]] -[patches.pattern] -target = "blind.lua" -pattern = "if self.debuff.h_size_ge and #cards < self.debuff.h_size_ge then" -position = "before" -payload = ''' - if self.name == "The Psychic" and #cards > 5 then - self.triggered = true - return true - end -''' -match_indent = true diff --git a/Cryptid/lovely/CCD.toml b/Cryptid/lovely/CCD.toml deleted file mode 100644 index 4839fe7..0000000 --- a/Cryptid/lovely/CCD.toml +++ /dev/null @@ -1,57 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# This is sacrilegious -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.GAME.starting_deck_size = #G.playing_cards" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_ccd then - for k, v in pairs(G.playing_cards) do - v:set_ability(get_random_consumable('cry_ccd',{"no_doe", "no_grc"}, nil, nil, true), true, nil) - end -end -''' -match_indent = true - -# Aura use conditions -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if G.hand and (#G.hand.highlighted == 1) and G.hand.highlighted[1] and (not G.hand.highlighted[1].edition) then return true end" -position = "at" -payload = ''' -if self.area ~= G.hand then - return G.hand and (#G.hand.highlighted == 1) and G.hand.highlighted[1] and (not G.hand.highlighted[1].edition) -else - local idx = 1 - if G.hand.highlighted[1] == self then - local idx = 2 - end - return (#G.hand.highlighted == 2) and (not G.hand.highlighted[idx].edition) -end -''' -match_indent = true - -# Prevent counting CCD consumables for pack uses -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if area == G.consumeables then" -position = "at" -payload = "if area == G.consumeables or area == G.hand then" -match_indent = true - -# Fix bugs from removing CCD -# This really shouldn't be in the card drawing code, but it doesn't really matter since that's where it crashes anyway lol -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if not self.config.center.discovered and (self.ability.consumeable or self.config.center.unlocked) and not self.config.center.demo and not self.bypass_discovery_center then" -position = "before" -payload = "if self.ability.set == 'Enhanced' then self.ability.consumeable = nil end" -match_indent = true diff --git a/Cryptid/lovely/CatMerge.toml b/Cryptid/lovely/CatMerge.toml deleted file mode 100644 index 118da20..0000000 --- a/Cryptid/lovely/CatMerge.toml +++ /dev/null @@ -1,108 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# what in ze fuck am i cooking -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''tag_sprite.states.collide.can = true''' -position = "after" -payload = ''' -if self.key == 'tag_cry_cat' then tag_sprite.states.click.can = true; tag_sprite.states.drag.can = true end -''' -match_indent = true - -# m -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''tag_sprite.stop_hover = function(_self) _self.hovering = false; Node.stop_hover(_self); _self.hover_tilt = 0 end''' -position = "after" -payload = ''' -tag_sprite.click = function(_self) - if self.key == 'tag_cry_cat' and self.HUD_tag then - for i = 1, #G.GAME.tags do - local other_cat = G.GAME.tags[i] - if other_cat.key == 'tag_cry_cat' then - if not self.ability.level then self.ability.level = 1 end - if not other_cat.ability.level then other_cat.ability.level = 1 end -- setting ability just doesn't seem to be working... so you get this - if (self.ability.level == other_cat.ability.level) and (other_cat ~= self) and not cry_too_fast_kitty then - cry_too_fast_kitty = true - local perc = (other_cat.ability.level + 1)/10 - if perc > 1 then perc = 1 end - G.E_MANAGER:add_event(Event({ - delay = 0.0, - trigger = 'immediate', - func = (function() - attention_text({ - text = ""..other_cat.ability.level, - colour = G.C.WHITE, - scale = 1, - hold = 0.3/G.SETTINGS.GAMESPEED, - cover = other_cat.HUD_tag, - cover_colour = G.C.DARK_EDITION, - align = 'cm', - }) - play_sound('generic1', 0.8 + perc/2, 0.6) - play_sound('multhit1', 0.9 + perc/2, 0.4) - return true - end) - })) - G.E_MANAGER:add_event(Event({ - delay = 0.0, - trigger = 'immediate', - func = (function() - attention_text({ - text = "-", - colour = G.C.WHITE, - scale = 1, - hold = 0.3/G.SETTINGS.GAMESPEED, - cover = self.HUD_tag, - cover_colour = G.C.RED, - align = 'cm', - }) - return true - end) - })) - G.E_MANAGER:add_event(Event({ - func = (function() - self.HUD_tag.states.visible = false - return true - end) - })) - G.E_MANAGER:add_event(Event({ -- i have no idea what this does but i'm not messing with it - func = func - })) - - other_cat.ability.level = other_cat.ability.level + 1 - - G.E_MANAGER:add_event(Event({ - trigger = 'after', - delay = 0.7, - func = (function() - self:remove() - cry_too_fast_kitty = nil - return true - end) - })) - break - end - end - end - end -end -''' -match_indent = true - -# copied from rework patch -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''elseif name_to_check == 'Economy Tag' then loc_vars = {self.config.max}''' -position = "after" -payload = ''' -elseif name_to_check == "cry-Cat Tag" then loc_vars = {self.ability.level or 1} -''' -match_indent = true diff --git a/Cryptid/lovely/Challenges.toml b/Cryptid/lovely/Challenges.toml deleted file mode 100644 index 4d6cfe8..0000000 --- a/Cryptid/lovely/Challenges.toml +++ /dev/null @@ -1,31 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Rush Hour - remove tags -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if type == 'Small' then" -position = "at" -payload = "if type == 'Small' and not G.GAME.modifiers.cry_no_tags then" -match_indent = true - -# Rush Hour - remove tags -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "elseif type == 'Big' then" -position = "at" -payload = "elseif type == 'Big' and not G.GAME.modifiers.cry_no_tags then" -match_indent = true - -# Rush Hour - remove tags -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "elseif not run_info then" -position = "at" -payload = "elseif type == 'Boss' and not run_info then" -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Code.toml b/Cryptid/lovely/Code.toml deleted file mode 100644 index 83f604a..0000000 --- a/Cryptid/lovely/Code.toml +++ /dev/null @@ -1,308 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Code UI disables hold R shortcut -[[patches]] -[patches.pattern] -target = "engine/controller.lua" -pattern = 'if key == "r" and not G.SETTINGS.paused then' -position = "at" -payload = 'if key == "r" and not G.SETTINGS.paused and not (G.GAME and G.GAME.USING_CODE) then' -match_indent = true - - -# Payload - cash out UI -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "elseif config.name == 'interest' then" -position = "before" -payload = ''' -elseif config.name == 'interest_payload' then -table.insert(left_text, {n=G.UIT.T, config={text = num_dollars, scale = 0.8*scale, colour = G.C.SECONDARY_SET.Code, shadow = true, juice = true}}) -table.insert(left_text,{n=G.UIT.O, config={object = DynaText({string = {" "..localize{type = 'variable', key = 'interest', vars = {G.GAME.interest_amount*config.payload, 5, G.GAME.interest_amount*config.payload*G.GAME.interest_cap/5}}}, colours = {G.C.SECONDARY_SET.Code}, shadow = true, pop_in = 0, scale = 0.4*scale, silent = true})}}) -''' -match_indent = true - -# Payload - cash out -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.GAME.dollars >= 5 and not G.GAME.modifiers.no_interest then" -position = "at" -payload = ''' -if G.GAME.dollars >= 5 and not G.GAME.modifiers.no_interest and G.GAME.cry_payload then - add_round_eval_row({bonus = true, payload = G.GAME.cry_payload, name='interest_payload', pitch = pitch, dollars = G.GAME.interest_amount*G.GAME.cry_payload*math.min(math.floor(G.GAME.dollars/5), G.GAME.interest_cap/5)}) - pitch = pitch + 0.06 - if not G.GAME.seeded and not G.GAME.challenge then - if G.GAME.interest_amount*math.min(math.floor(G.GAME.dollars/5), G.GAME.interest_cap/5) == G.GAME.interest_amount*G.GAME.interest_cap/5 then - G.PROFILES[G.SETTINGS.profile].career_stats.c_round_interest_cap_streak = G.PROFILES[G.SETTINGS.profile].career_stats.c_round_interest_cap_streak + 1 - else - G.PROFILES[G.SETTINGS.profile].career_stats.c_round_interest_cap_streak = 0 - end - end - check_for_unlock({type = 'interest_streak'}) - dollars = dollars + G.GAME.interest_amount*G.GAME.cry_payload*math.min(math.floor(G.GAME.dollars/5), G.GAME.interest_cap/5) - G.GAME.cry_payload = nil -elseif G.GAME.dollars >= 5 and not G.GAME.modifiers.no_interest then''' -match_indent = true - -# Revert - fix a crash -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if area and area.cards[1] then" -position = "at" -payload = "if area and area.cards and area.cards[1] then" -match_indent = true - -# Crash - use glitched shader -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "G.SHADERS['CRT']:send('glitch_intensity', 0)--0.1*G.SETTINGS.GRAPHICS.crt/100 + (G.screenwipe_amt) + 1)" -position = "at" -payload = "G.SHADERS['CRT']:send('glitch_intensity', glitched_intensity or 0)" -match_indent = true - -# Semicolon - don't lose -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''G.RESET_JIGGLES = true''' -position = 'after' -match_indent = true -payload = ''' -if G.GAME.current_round.semicolon then - game_over = false -end -''' - -# Semicolon - end screen text -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '''localize\('ph_mr_bones'\)..' '\}, colours = \{G.C.FILTER''' -position = 'at' -# match_indent = true -line_prepend = '' -payload = '''(G.GAME.current_round.semicolon and ";" or localize('ph_mr_bones'))..' '}, colours = {(G.GAME.current_round.semicolon and G.C.SET.Code or G.C.FILTER)''' - -# Semicolon - polished UI -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''{n=G.UIT.T, config={text = localize('b_cash_out')..": ", scale = 1, colour = G.C.UI.TEXT_LIGHT, shadow = true}},''' -position = "at" -payload = '''{n=G.UIT.T, config={text = G.GAME.current_round.semicolon and localize('k_end_blind') or (localize('b_cash_out')..": "), scale = 1, colour = G.C.UI.TEXT_LIGHT, shadow = true}},''' -match_indent = true - -# Semicolon - polished UI -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''{n=G.UIT.T, config={text = localize('$')..config.dollars, scale = 1.2*scale, colour = G.C.WHITE, shadow = true, juice = true}}''' -position = "at" -payload = '''{n=G.UIT.T, config={text = not G.GAME.current_round.semicolon and localize('$')..config.dollars or ';', scale = 1.2*scale, colour = G.C.WHITE, shadow = true, juice = true}}''' -match_indent = true - -# Semicolon - polished UI -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''{n=G.UIT.R, config={id = 'cash_out_button', align = "cm", padding = 0.1, minw = 7, r = 0.15, colour = G.C.ORANGE, shadow = true, hover = true, one_press = true, button = 'cash_out', focus_args = {snap_to = true}}, nodes={''' -position = "at" -payload = '''{n=G.UIT.R, config={id = 'cash_out_button', align = "cm", padding = 0.1, minw = 7, r = 0.15, colour = G.GAME.current_round.semicolon and G.C.SET.Code or G.C.ORANGE, shadow = true, hover = true, one_press = true, button = 'cash_out', focus_args = {snap_to = true}}, nodes={''' -match_indent = true - -# Semicolon - reset value at start of round -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "G.GAME.blind:set_blind(G.GAME.round_resets.blind)" -position = "after" -payload = ''' -G.GAME.current_round.semicolon = false -''' -match_indent = true - -# Delete - placeholder booster, in the case that all are deleted -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '''return center\nend\n\nfunction get_current_pool\(_type, _rarity, _legendary, _append\)''' -position = "before" -payload = '''if not center then center = G.P_CENTERS['p_buffoon_normal_1'] end ''' - -# Run - don't clear shop -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''if self.shop then self.shop:remove(); self.shop = nil end''' -position = "at" -payload = '''if self.shop and not G.GAME.USING_CODE then self.shop:remove(); self.shop = nil end''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''ease_background_colour_blind(G.STATES.SHOP)''' -position = "at" -payload = '''if not G.GAME.USING_RUN then ease_background_colour_blind(G.STATES.SHOP) end''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''if self.STATE == self.STATES.SELECTING_HAND then''' -position = "before" -payload = ''' -if G.GAME.USING_RUN then - if not (self.STATE == self.STATES.STANDARD_PACK or self.STATE == self.STATES.BUFFOON_PACK or self.STATE == self.STATES.PLANET_PACK or self.STATE == self.STATES.TAROT_PACK or self.STATE == self.STATES.SPECTRAL_PACK or self.STATE == self.STATES.SMODS_BOOSTER_OPENED) then -- do you are have stupid - self.STATE = self.STATES.SHOP - end - if G.GAME.blind then G.GAME.blind:change_colour() end -- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - if G.load_cry_runarea then - G.cry_runarea = CardArea( - G.discard.T.x, - G.discard.T.y, - G.discard.T.w, - G.discard.T.h, - { type = "discard", card_limit = 1e100 } - ) - G.cry_runarea:load(G.load_cry_runarea) - G.load_cry_runarea = nil - end -end -''' -match_indent = true - -# Run - handle packs (this is incredibly invasive) -# we can't do "draw from run to hand" because modded packs presumably don't get ovewritten like that -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''for i=1, hand_space do --draw cards from deckL''' -position = "before" -payload = '''if not G.GAME.USING_RUN then''' -match_indent = true - -# the inconsistency hurts -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = '''G.FUNCS.draw_from_hand_to_deck()''' -position = "at" -payload = '''if not G.GAME.USING_RUN then - G.FUNCS.draw_from_hand_to_deck() -else - G.FUNCS.draw_from_hand_to_run() -end''' -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''end\n\s+G\.FUNCS\.discard_cards_from_highlighted \= function\(e, hook\)''' -position = "before" -payload = ''' -else - for i = 1, #G.cry_runarea.cards do - draw_card(G.cry_runarea,G.hand, i*100/#G.cry_runarea.cards,'up', true) - end -end - -G.FUNCS.draw_from_hand_to_run = function(e) -- might as well just slap this here - local hand_count = #G.hand.cards - for i=1, hand_count do --draw cards from deck - draw_card(G.hand, G.cry_runarea, i*100/hand_count,'down', nil, nil, 0.08) - end -end -''' -match_indent = true - - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''G.shop.alignment.offset.y = -5.3''' -position = "at" -payload = '''if not G.shop then return true end -G.shop.alignment.offset.y = -5.3''' -match_indent = true - -# Increase highlight limit for consumables -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "{card_limit = self.GAME.starting_params.consumable_slots, type = 'joker', highlight_limit = 1})" -position = "at" -payload = "{card_limit = self.GAME.starting_params.consumable_slots, type = 'joker', highlight_limit = 1e100})" -match_indent = true - -# Increase highlight limit for jokers -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "{card_limit = self.GAME.starting_params.joker_slots, type = 'joker', highlight_limit = 1})" -position = "at" -payload = "{card_limit = self.GAME.starting_params.joker_slots, type = 'joker', highlight_limit = 1e100})" -match_indent = true - -# Satellite Uplink -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''card = create_card("Planet", G.pack_cards, nil, nil, true, true, nil, 'pl1')''' -position = "at" -payload = ''' -if G.GAME.used_vouchers.v_cry_satellite_uplink and pseudorandom('cry_satellite_uplink') > 0.8 then - card = create_card("Code", G.pack_cards, nil, nil, true, true, nil, 'pl2') -else - card = create_card("Planet", G.pack_cards, nil, nil, true, true, nil, 'pl1') -end -''' -match_indent = true - -# Exploit - reset variables -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''function end_round()''' -position = "after" -payload = ''' -G.GAME.cry_exploit_override = nil -''' -match_indent = true - -# Rework Tag - UI -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''elseif name_to_check == 'Economy Tag' then loc_vars = {self.config.max}''' -position = "after" -payload = ''' -elseif name_to_check == "cry-Rework Tag" then loc_vars = { - self.ability and self.ability.rework_edition and localize{type = "name_text", set = "Edition", key = self.ability.rework_edition} or "["..string.lower(localize("k_edition")).."]", - self.ability and self.ability.rework_key and localize{type = "name_text", set = "Joker", key = self.ability.rework_key} or "["..string.lower(localize("k_joker")).."]", - } -''' -match_indent = true - -# Double Tag makes exact copy of rework tag -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = 'add_tag(Tag(_context.tag.key))' -position = "at" -payload = ''' - 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) -''' -match_indent = true diff --git a/Cryptid/lovely/Conveyor.toml b/Cryptid/lovely/Conveyor.toml deleted file mode 100644 index c81f283..0000000 --- a/Cryptid/lovely/Conveyor.toml +++ /dev/null @@ -1,29 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Don't sort cards -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 - 100*(a.pinned and a.sort_id or 0) < b.T.x + b.T.w/2 - 100*(b.pinned and b.sort_id or 0) end)" -position = "at" -payload = "if not G.GAME.modifiers.cry_conveyor then table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 - 100*(a.pinned and a.sort_id or 0) < b.T.x + b.T.w/2 - 100*(b.pinned and b.sort_id or 0) end) end" -match_indent = true - -# Start of round effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "G.GAME.blind:set_blind(G.GAME.round_resets.blind)" -position = "after" -payload = ''' -if G.GAME.modifiers.cry_conveyor and #G.jokers.cards>0 then - local duplicated_joker = copy_card(G.jokers.cards[#G.jokers.cards]) - duplicated_joker:add_to_deck() - G.jokers:emplace(duplicated_joker) - G.jokers.cards[1]:start_dissolve() -end -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Cube.toml b/Cryptid/lovely/Cube.toml deleted file mode 100644 index 6f8162c..0000000 --- a/Cryptid/lovely/Cube.toml +++ /dev/null @@ -1,27 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Joker Lock -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "elseif v.enhancement_gate then" -position = "before" -payload = ''' -elseif v.source_gate then - if v.source_gate ~= _append then - add = nil - else - add = true - end -elseif v.joker_gate then - add = nil - for kk, vv in pairs(G.jokers.cards) do - if vv.ability.name == v.joker_gate then - add = true - end - end -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Enhanced.toml b/Cryptid/lovely/Enhanced.toml deleted file mode 100644 index 1af1299..0000000 --- a/Cryptid/lovely/Enhanced.toml +++ /dev/null @@ -1,74 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Show edition on Edition Decks -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.children.back:draw(overlay)" -position = "after" -payload = ''' -local currentBack = self.params.viewed_back and G.GAME.viewed_back or G.GAME.selected_back -if currentBack.effect.config.cry_force_edition and not currentBack.effect.config.cry_antimatter then - if currentBack.effect.config.cry_force_edition_shader then - self.children.back:draw_shader(currentBack.effect.config.cry_force_edition_shader , nil, self.ARGS.send_to_shader, true) - else - self.children.back:draw_shader(currentBack.effect.config.cry_force_edition , nil, self.ARGS.send_to_shader, true) - end -end -if currentBack.effect.config.cry_force_seal and not currentBack.effect.config.hide_seal and not currentBack.effect.config.cry_antimatter then - G.shared_seals[currentBack.effect.config.cry_force_seal]:draw_shader('dissolve', nil, nil, true, self.children.center) - if currentBack.effect.config.cry_force_seal == 'Gold' then G.shared_seals[currentBack.effect.config.cry_force_seal]:draw_shader('voucher', nil, self.ARGS.send_to_shader, true, self.children.center) end -end -if currentBack.effect.config.cry_force_sticker and not currentBack.effect.config.cry_antimatter then - for k, v in pairs(SMODS.Stickers) do - if currentBack.effect.config.cry_force_sticker == v.key then - if v and v.draw and type(v.draw) == 'function' then - v:draw(self) - else - G.shared_stickers[v.key].role.draw_major = self - G.shared_stickers[v.key]:draw_shader('dissolve', nil, nil, true, self.children.center) - G.shared_stickers[v.key]:draw_shader('voucher', nil, self.ARGS.send_to_shader, true, self.children.center) - end - end - end -end -if currentBack.effect.config.cry_antimatter or currentBack.effect.config.cry_force_edition == 'negative' then - self.children.back:draw_shader('negative', nil, self.ARGS.send_to_shader, true) - self.children.center:draw_shader('negative_shine', nil, self.ARGS.send_to_shader, true) -end -''' -match_indent = true - -# Antimatter Deck -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.children.back:draw_shader('dissolve')" -position = "at" -payload = ''' -local currentBack = self.params.viewed_back and G.GAME.viewed_back or G.GAME.selected_back -if currentBack and currentBack.effect.config.cry_antimatter or currentBack.effect.config.cry_force_edition == 'negative' then - self.children.back:draw_shader('negative', nil, self.ARGS.send_to_shader) - self.children.center:draw_shader('negative_shine', nil, self.ARGS.send_to_shader) -else - self.children.back:draw_shader('dissolve') -end -''' -match_indent = true - -# Created cards match suits of suit deck -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "card.playing_card = G.playing_card" -position = "after" -payload = ''' -if G.GAME.modifiers.cry_force_suit then card:change_suit(G.GAME.modifiers.cry_force_suit) end -if G.GAME.modifiers.cry_force_enhancement then card:set_ability(G.P_CENTERS[G.GAME.modifiers.cry_force_enhancement]) end -if G.GAME.modifiers.cry_force_edition then card:set_edition({[G.GAME.modifiers.cry_force_edition]=true},true,true) end -if G.GAME.modifiers.cry_force_seal then card:set_seal(G.GAME.modifiers.cry_force_seal) end -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Equilibrium.toml b/Cryptid/lovely/Equilibrium.toml deleted file mode 100644 index 65cef87..0000000 --- a/Cryptid/lovely/Equilibrium.toml +++ /dev/null @@ -1,30 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# non-pack scaling in pack slots -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "G.shop_booster.T.y, G.CARD_W*1.27, G.CARD_H*1.27, G.P_CARDS.empty, G.P_CENTERS[G.GAME.current_round.used_packs[i]], {bypass_discovery_center = true, bypass_discovery_ui = true})" -position = "at" -payload = "G.shop_booster.T.y, G.CARD_W*(G.P_CENTERS[G.GAME.current_round.used_packs[i]].set == 'Booster' and 1.27 or 1), G.CARD_H*(G.P_CENTERS[G.GAME.current_round.used_packs[i]].set == 'Booster' and 1.27 or 1), G.P_CARDS.empty, G.P_CENTERS[G.GAME.current_round.used_packs[i]], {bypass_discovery_center = true, bypass_discovery_ui = true})" -match_indent = true - -# scaling issues when reclaiming Overstock -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "G.GAME.shop.joker_max*1.02*G.CARD_W," -position = "at" -payload = "math.min(G.GAME.shop.joker_max,4)*1.02*G.CARD_W," -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.shop_jokers.T.w = G.GAME.shop.joker_max*1.01*G.CARD_W" -position = "at" -payload = "G.shop_jokers.T.w = math.min(G.GAME.shop.joker_max,4)*1.02*G.CARD_W" -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Error.toml b/Cryptid/lovely/Error.toml deleted file mode 100644 index 5cb354b..0000000 --- a/Cryptid/lovely/Error.toml +++ /dev/null @@ -1,26 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - - -# putting this here since lovely crashes with a file that has no uncommented patches -# note to self get rid of this file later -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "bbbbb" -position = "at" -payload = "aaaaa" -match_indent = true - -# Patch get_current_pool to predict for ERROR desc -# There's also a consumable rarity patch I should do but don't feel like overriding SMODS right now -## Note this breaks one of the regexs for SMODS.Rarity -# [[patches]] -# [patches.pattern] -# target = "functions/common_events.lua" -# pattern = "local rarity = _rarity or pseudorandom('rarity'..G.GAME.round_resets.ante..(_append or ''))" -# position = "at" -# payload = "local rarity = _rarity or pseudorandom(_G[gcparea == 'ERROR' and 'predict_pseudoseed' or 'pseudoseed']('rarity'..G.GAME.round_resets.ante..(_append or '')))" -# match_indent = true diff --git a/Cryptid/lovely/Exponentia.toml b/Cryptid/lovely/Exponentia.toml deleted file mode 100644 index 4767222..0000000 --- a/Cryptid/lovely/Exponentia.toml +++ /dev/null @@ -1,116 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Increment Exponentia on Joker XMult -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "card_eval_status_text(_card, 'jokers', nil, percent, nil, effects.jokers)" -position = "after" -payload = ''' -if effects.jokers.Xmult_mod and effects.jokers.Xmult_mod ~= 1 and next(find_joker("cry-Exponentia")) then - for _, v in pairs(find_joker("cry-Exponentia")) do - local old = v.ability.extra.Emult - v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_powmult',vars={number_format(to_big(v.ability.extra.Emult))}}}) - exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) - end -end -''' -match_indent = true - -# Increment Exponentia on Joker-on-Joker XMult -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if extras.mult or extras.hand_chips then card_eval_status_text(v, 'jokers', nil, percent, nil, effect) end" -position = "after" -payload = ''' -if effect.Xmult_mod and effect.Xmult_mod ~= 1 and next(find_joker("cry-Exponentia")) then - for _, v in pairs(find_joker("cry-Exponentia")) do - local old = v.ability.extra.Emult - v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_powmult',vars={number_format(to_big(v.ability.extra.Emult))}}}) - exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) - end -end -''' -match_indent = true - - -# Increment Exponentia on Misc XMult -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if extras.mult or extras.hand_chips then card_eval_status_text(v, 'jokers', nil, percent, nil, effect) end" -position = "after" -payload = ''' -if effects.Xmult_mod and next(find_joker("cry-Exponentia")) then - for _, v in pairs(find_joker("cry-Exponentia")) do - local old = v.ability.extra.Emult - v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_powmult',vars={number_format(to_big(v.ability.extra.Emult))}}}) - exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) - end -end -''' -match_indent = true - - -# Increment Exponentia on Enhancement XMult -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "card_eval_status_text(scoring_hand[i], 'x_mult', effects[ii].x_mult, percent)" -position = "after" -payload = ''' -if next(find_joker("cry-Exponentia")) then - for _, v in pairs(find_joker("cry-Exponentia")) do - local old = v.ability.extra.Emult - v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_powmult',vars={number_format(to_big(v.ability.extra.Emult))}}}) - exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) - end -end -''' -match_indent = true - - -# Increment Exponentia on Held-in-Hand XMult -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "card_eval_status_text(G.hand.cards[i], 'x_mult', effects[ii].x_mult, percent)" -position = "after" -payload = ''' -if next(find_joker("cry-Exponentia")) then - for _, v in pairs(find_joker("cry-Exponentia")) do - local old = v.ability.extra.Emult - v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_powmult',vars={number_format(to_big(v.ability.extra.Emult))}}}) - exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) - end -end -''' -match_indent = true - - -# Increment Exponentia on Edition XMult -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "edition = true})" -position = "after" -payload = ''' -if (effects and effects[ii] and effects[ii].edition and effects[ii].edition.x_mult_mod or edition_effects and edition_effects.jokers and edition_effects.jokers.x_mult_mod) and next(find_joker("cry-Exponentia")) then - for _, v in pairs(find_joker("cry-Exponentia")) do - local old = v.ability.extra.Emult - v.ability.extra.Emult = v.ability.extra.Emult + v.ability.extra.Emult_mod - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize{type='variable',key='a_powmult',vars={number_format(to_big(v.ability.extra.Emult))}}}) - exponentia_scale_mod(v, v.ability.extra.Emult_mod, old, v.ability.extra.Emult) - end -end -''' -match_indent = true diff --git a/Cryptid/lovely/Gateway.toml b/Cryptid/lovely/Gateway.toml deleted file mode 100644 index 64d302c..0000000 --- a/Cryptid/lovely/Gateway.toml +++ /dev/null @@ -1,28 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# 3-layer drawing for Gateway -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.config.center.soul_pos and (self.config.center.discovered or self.bypass_discovery_center) then" -position = "before" -payload = ''' -if self.ability.name == 'cry-Gateway' and (self.config.center.discovered or self.bypass_discovery_center) then - local scale_mod2 = 0.07-- + 0.02*math.cos(1.8*G.TIMERS.REAL) + 0.00*math.cos((G.TIMERS.REAL - math.floor(G.TIMERS.REAL))*math.pi*14)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^3 - local rotate_mod2 = 0--0.05*math.cos(1.219*G.TIMERS.REAL) + 0.00*math.cos((G.TIMERS.REAL)*math.pi*5)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^2 - self.children.floating_sprite2:draw_shader('dissolve',0, nil, nil, self.children.center,scale_mod2, rotate_mod2,nil, 0.1--[[ + 0.03*math.cos(1.8*G.TIMERS.REAL)--]],nil, 0.6) - self.children.floating_sprite2:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod2, rotate_mod2) - - local scale_mod = 0.05 + 0.05*math.sin(1.8*G.TIMERS.REAL) + 0.07*math.sin((G.TIMERS.REAL - math.floor(G.TIMERS.REAL))*math.pi*14)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^3 - local rotate_mod = 0.1*math.sin(1.219*G.TIMERS.REAL) + 0.07*math.sin((G.TIMERS.REAL)*math.pi*5)*(1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL)))^2 - - self.children.floating_sprite.role.draw_major = self - self.children.floating_sprite:draw_shader('dissolve',0, nil, nil, self.children.center,scale_mod, rotate_mod,nil, 0.1 + 0.03*math.sin(1.8*G.TIMERS.REAL),nil, 0.6) - self.children.floating_sprite:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod, rotate_mod) - -end -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Misc.toml b/Cryptid/lovely/Misc.toml deleted file mode 100644 index df7864c..0000000 --- a/Cryptid/lovely/Misc.toml +++ /dev/null @@ -1,462 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Shine on Oversaturated to make it more noticable -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "if (self.edition and self.edition.negative) or (self.ability.name == 'Antimatter' and (self.config.center.discovered or self.bypass_discovery_center)) then" -position = 'at' -match_indent = true -payload = "if (self.edition and (self.edition.negative or self.edition.cry_oversat)) or (self.ability.name == 'Antimatter' and (self.config.center.discovered or self.bypass_discovery_center)) then" - -# Detect if edition comes from copy_card -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = '''new_card:set_edition(other.edition or {}, nil, true)''' -position = 'before' -payload = ''' -new_card.from_copy = true -''' -match_indent = true - -# Used to check for Monster from copy_card and update values -# more or less the same patch above but this also applies if strip_edition is true -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if not strip_edition then" -position = 'before' -payload = ''' -new_card.checkmonster = true -''' -match_indent = true - -# Joker BigNum value support -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Campfire' and G.GAME.blind.boss and not (G.GAME.blind.config and G.GAME.blind.config.bonus) and self.ability.x_mult > 1 then" -position = "at" -payload = ''' -if self.ability.name == 'Campfire' and G.GAME.blind.boss and not (G.GAME.blind.config and G.GAME.blind.config.bonus) and to_big(self.ability.x_mult) > to_big(1) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Hit the Road' and self.ability.x_mult > 1 then" -position = "at" -payload = ''' -if self.ability.name == 'Hit the Road' and to_big(self.ability.x_mult) > to_big(1) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.x_mult > 1 then" -position = "at" -payload = ''' -if to_big(self.ability.x_mult) > to_big(1) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name ~= 'Seeing Double' and self.ability.x_mult > 1 and (self.ability.type == '' or next(context.poker_hands[self.ability.type])) then" -position = "at" -payload = ''' -if self.ability.name ~= 'Seeing Double' and to_big(self.ability.x_mult) > to_big(1) and (self.ability.type == '' or next(context.poker_hands[self.ability.type])) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Caino' and self.ability.caino_xmult > 1 then" -position = "at" -payload = ''' -if self.ability.name == 'Caino' and to_big(self.ability.caino_xmult) > to_big(1) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.t_mult > 0 and next(context.poker_hands[self.ability.type]) then" -position = "at" -payload = ''' -if to_big(self.ability.t_mult) > to_big(0) and next(context.poker_hands[self.ability.type]) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.t_chips > 0 and next(context.poker_hands[self.ability.type]) then" -position = "at" -payload = ''' -if to_big(self.ability.t_chips) > to_big(0) and next(context.poker_hands[self.ability.type]) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Ceremonial Dagger' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Ceremonial Dagger' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Castle' and (self.ability.extra.chips > 0) then" -position = "at" -payload = ''' -if self.ability.name == 'Castle' and (to_big(self.ability.extra.chips) > to_big(0)) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Swashbuckler' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Swashbuckler' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Spare Trousers' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Spare Trousers' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Ride the Bus' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Ride the Bus' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Flash Card' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Flash Card' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Popcorn' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Popcorn' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Green Joker' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Green Joker' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Red Card' and self.ability.mult > 0 then" -position = "at" -payload = ''' -if self.ability.name == 'Red Card' and to_big(self.ability.mult) > to_big(0) then -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "function localize(args, misc_cat)" -position = "after" -payload = ''' -if args and args.vars then - local reset = {} - for i, j in pairs(args.vars) do - if type(j) == 'table' then - if (j.new and type(j.new) == "function") and ((j.m and j.e) or (j.array and j.sign and (type(j.array) == "table"))) then - reset[i] = number_format(j) - end - end - end - for i, j in pairs(reset) do - args.vars[i] = j - end -end -''' -match_indent = true - -# Compat UI for Old Blueprint and Gemini - -# I deleted the patches --Jevonn (test) - -# calculate wheel fail (for Wheel of Hope) -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Ectoplasm' or self.ability.name == 'Hex' or pseudorandom('wheel_of_fortune') < G.GAME.probabilities.normal/self.ability.extra then" -position = "after" -payload = ''' -if self.ability.name == 'The Wheel of Fortune' then self.cry_wheel_success = true end -''' -match_indent = false - -# unscoring context (for Green Seal) -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "for i=1, #G.hand.cards do" -position = "before" -payload = ''' -if scoring_hand then - local unscoring_hand = {} - for i = 1, #G.play.cards do - local is_scoring = false - for j = 1, #scoring_hand do - if G.play.cards[i] == scoring_hand[j] then - is_scoring = true - end - end - if not is_scoring then - unscoring_hand[#unscoring_hand+1] = G.play.cards[i] - end - end - for i = 1, #unscoring_hand do - unscoring_hand[i]:calculate_seal{unscoring = true} - end -end -''' -match_indent = true - -# no "Again!" text if a card will shatter -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''if reps[j] ~= 1 then''' -position = "at" -payload = '''if reps[j] ~= 1 and (not scoring_hand or not scoring_hand[i] or not scoring_hand[i].will_shatter) then''' -match_indent = true - -# properly remove destroyed playing cards from deck -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''if destroyed then''' -position = "before" -payload = '''if scoring_hand[i].will_shatter then destroyed = true end''' -match_indent = true - -# sfx fixes with destroyed playing cards from fragile edition -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''if cards_destroyed[i].ability.name == 'Glass Card' then''' -position = "before" -payload = '''if cards_destroyed[i].will_shatter then return true end''' -match_indent = true - -# fix random crashes -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''local edition_effects = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, edition = true})''' -position = "after" -payload = '''if not edition_effects then edition_effects = {} end''' -match_indent = true - -# m -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if self.ability.consumeable or self.ability.set == 'Joker' or (self.area and self.area == G.pack_cards) then''' -position = "at" -payload = '''if true then''' -match_indent = true - -# Energia - detect blind skips from tag -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = '''add_tag(_tag.config.ref_table)''' -position = "at" -payload = '''add_tag(_tag.config.ref_table, true)''' -match_indent = true - -# Energia - don't add tags from save load -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''add_tag(_tag)''' -position = "at" -payload = '''add_tag(_tag, nil, true)''' -match_indent = true - -# Beta Deck - merge slots -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''self.consumeables = CardArea(''' -position = "before" -payload = '''if not G.GAME.modifiers.cry_beta then''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''self.discard = CardArea(''' -position = "before" -payload = '''else -self.jokers = CardArea( - 0, 0, - CAI.joker_W+CAI.consumeable_W, - CAI.joker_H, - {card_limit = self.GAME.starting_params.joker_slots+self.GAME.starting_params.consumable_slots-1, type = 'joker', highlight_limit = 1e100}) -self.consumeables = self.jokers -end''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''G.consumeables.T.y = 0''' -position = "after" -payload = '''G.jokers.T.x = G.hand.T.x - 0.1 -G.jokers.T.y = 0''' -match_indent = true - -# Make Perkeo only copy consumables -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if G.consumeables.cards[1] then''' -position = "at" -payload = '''local eligibleJokers = {} -for i = 1, #G.consumeables.cards do - if G.consumeables.cards[i].ability.consumeable then - eligibleJokers[#eligibleJokers + 1] = G.consumeables.cards[i] - end -end -if #eligibleJokers > 0 then''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''local card = copy_card(pseudorandom_element(G.consumeables.cards, pseudoseed('perkeo')), nil)''' -position = "at" -payload = '''local card = copy_card(pseudorandom_element(eligibleJokers, pseudoseed('perkeo')), nil)''' -match_indent = true - -# More Beta Deck fixes -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''for i=1, #G.jokers.cards + #G.consumeables.cards do''' -position = "at" -payload = ''' -local numcards = #G.jokers.cards + #G.consumeables.cards -if G.GAME.modifiers.cry_beta then numcards = #G.jokers.cards end -for i=1, numcards do''' -match_indent = true - -# Poker Hand display can have enhancements -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''local card = Card(0,0, 0.5*G.CARD_W, 0.5*G.CARD_H, G.P_CARDS[v[1]], G.P_CENTERS.c_base)''' -position = "at" -payload = '''local card = Card(0,0, 0.5*G.CARD_W, 0.5*G.CARD_H, G.P_CARDS[v[1]], G.P_CENTERS[v[3] or 'c_base'])''' -match_indent = true - -# Adds G.GAME.modifiers.cry_forced_draw_amount -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = 'local hand_space = e or math.min(#G.deck.cards, G.hand.config.card_limit - #G.hand.cards)' -position = "after" -payload = ''' -if G.GAME.modifiers.cry_forced_draw_amount and (G.GAME.current_round.hands_played > 0 or G.GAME.current_round.discards_used > 0) then - hand_space = math.min(#G.deck.cards, G.GAME.modifiers.cry_forced_draw_amount) -end -''' -match_indent = true - -# adds oldbp blueprint corruption -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = 'if _pool_size == 0 then' -position = "before" -payload = ''' -if G.GAME.oldbpfactor and G.GAME.oldbpfactor >= 2 then - if _type == 'Joker' and (_rarity == nil or type(_rarity) ~= "string") and not _legendary and not (G.GAME.used_jokers["j_blueprint"] and not next(find_joker("Showman"))) then - for i = 1, math.floor(G.GAME.oldbpfactor - 1) do - _pool[#_pool + 1] = "j_blueprint" - end - end -end -''' -match_indent = true - -# end of shop decrement -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = 'G.SHOP_SIGN.alignment.offset.y = -15' -position = "after" -payload = ''' -if G.GAME.oldbpfactor then G.GAME.oldbpfactor = math.max(G.GAME.oldbpfactor - G.GAME.oldbpfactor/8, 1) end -''' -match_indent = true - -# Make Loopy reset here so it retriggers everything before resetting regardless of position -# Makes Old Blueprint self-destruct after triggering other end of round effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''if G.GAME.round_resets.temp_reroll_cost then G.GAME.round_resets.temp_reroll_cost = nil; calculate_reroll_cost(true) end''' -position = "after" -payload = ''' -for _, v in pairs(find_joker("cry-loopy")) do - if v.ability.extra.retrigger ~= 0 then - v.ability.extra.retrigger = 0 - card_eval_status_text(v, 'extra', nil, nil, nil, {message = localize("k_reset"), colour = G.C.GREEN}) - end -end -for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker({end_of_round2 = true}) -end -''' -match_indent = true diff --git a/Cryptid/lovely/Misprint.toml b/Cryptid/lovely/Misprint.toml deleted file mode 100644 index 6203237..0000000 --- a/Cryptid/lovely/Misprint.toml +++ /dev/null @@ -1,519 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Randomize poker hands after RNG is set up -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.GAME.pseudorandom.hashed_seed = pseudohash(self.GAME.pseudorandom.seed)" -position = "after" -payload = ''' -if G.GAME.modifiers.cry_misprint_min and not args.savetext then - for k, v in pairs(G.GAME.hands) do - v.chips = to_big(cry_format(v.chips * cry_log_random(pseudoseed('cry_misprint'),G.GAME.modifiers.cry_misprint_min,G.GAME.modifiers.cry_misprint_max),"%.2g")) - v.mult = to_big(cry_format(v.mult * cry_log_random(pseudoseed('cry_misprint'),G.GAME.modifiers.cry_misprint_min,G.GAME.modifiers.cry_misprint_max),"%.2g")) - v.l_chips = cry_format(v.l_chips * cry_log_random(pseudoseed('cry_misprint'),G.GAME.modifiers.cry_misprint_min,G.GAME.modifiers.cry_misprint_max),"%.2g") - v.l_mult = cry_format(v.l_mult * cry_log_random(pseudoseed('cry_misprint'),G.GAME.modifiers.cry_misprint_min,G.GAME.modifiers.cry_misprint_max),"%.2g") - v.s_chips = v.chips - v.s_mult = v.mult - end -end -''' -match_indent = true - -# Packs -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "create_shop_card_ui(card, 'Booster', G.shop_booster)" -position = "before" -payload = ''' -cry_misprintize(card) -''' -match_indent = true - -# Prevent pack softlocks -# Off by One Error effect -# Booster Tag effect -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "G.GAME.pack_choices = self.config.center.config.choose or 1" -position = "after" -payload = ''' -G.GAME.pack_choices = ((self.ability.choose and self.ability.extra) and math.min(math.floor(self.ability.extra), self.ability.choose)) or 1 -if G.GAME.modifiers.cry_misprint_min then - G.GAME.pack_size = self.ability.extra - if G.GAME.pack_size < 1 then G.GAME.pack_size = 1 end - self.ability.extra = G.GAME.pack_size - G.GAME.pack_choices = math.min(math.floor(G.GAME.pack_size), self.ability.choose) - --G.GAME.pack_choices = math.min(math.floor(G.GAME.pack_size),cry_format(G.GAME.pack_choices * cry_log_random(pseudoseed('cry_misprint_p'..G.GAME.round_resets.ante),G.GAME.modifiers.cry_misprint_min,G.GAME.modifiers.cry_misprint_max),"%.2f")) -end -if G.GAME.cry_oboe then - self.ability.extra = self.ability.extra + G.GAME.cry_oboe - G.GAME.pack_choices = G.GAME.pack_choices + G.GAME.cry_oboe - G.GAME.cry_oboe = nil - G.GAME.pack_size = self.ability.extra -end -if G.GAME.boostertag then - self.ability.extra = self.ability.extra * 2 - G.GAME.pack_choices = G.GAME.pack_choices * 2 - G.GAME.boostertag = nil - G.GAME.pack_size = self.ability.extra -end -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name:find('Arcana') then" -position = "before" -payload = ''' -if self.ability.extra < 1 then self.ability.extra = 1 end -''' -match_indent = true - -# Vouchers -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "create_shop_card_ui(card, 'Voucher', G.shop_vouchers)" -position = "before" -payload = ''' -cry_misprintize(card) -if G.GAME.events.ev_cry_choco2 then - card.misprint_cost_fac = (card.misprint_cost_fac or 1) * 2 - card:set_cost() -end -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = "create_shop_card_ui(card, 'Voucher', G.shop_vouchers)" -position = "before" -payload = ''' -cry_misprintize(card) -if G.GAME.events.ev_cry_choco2 then - card.misprint_cost_fac = (card.misprint_cost_fac or 1) * 2 - card:set_cost() -end -''' -match_indent = true - -# Fractional Ante Bugs -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.GAME.round_resets.ante = G.GAME.round_resets.ante + mod" -position = "after" -payload = "G.GAME.round_resets.ante = Big and (to_number(math.floor(to_big(G.GAME.round_resets.ante)))) or math.floor(G.GAME.round_resets.ante)" -match_indent = true - -# UI Bugs -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "_size*G.CARD_W," -position = "at" -payload = "math.max(1,math.min(_size,5))*G.CARD_W," -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "_size*G.CARD_W*1.1," -position = "at" -payload = "math.max(1,math.min(_size,5))*G.CARD_W*1.1," -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "_size*G.CARD_W*1.1 + 0.5," -position = "at" -payload = "math.max(1,math.min(_size,5))*G.CARD_W*1.1 + 0.5," -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "{card_limit = _size, type = 'consumeable', highlight_limit = 1}" -position = "at" -payload = "{card_limit = math.max(1,_size), type = 'consumeable', highlight_limit = 1}" -match_indent = true - -# Death and a CCD Patch -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.consumeable.mod_num >= #G.hand.highlighted and #G.hand.highlighted >= (self.ability.consumeable.min_highlighted or 1) then" -position = "at" -payload = "if (self.ability.consumeable.mod_num - ((G.GAME.modifiers.cry_consumable_reduce and (self.ability.name ~= 'Death')) and (self.ability.consumeable.mod_num > 1) and 1 or 0)) >= #G.hand.highlighted + (self.area == G.hand and -1 or 0) and #G.hand.highlighted + (self.area == G.hand and -1 or 0) >= 1 then" -match_indent = true - -# mod_num has no limit -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.ability.consumeable.mod_num = math.min(5, self.ability.consumeable.max_highlighted)" -position = "at" -payload = "self.ability.consumeable.mod_num = self.ability.consumeable.max_highlighted" -match_indent = true - -# Infinite Deck -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "self.config.highlighted_limit = config.highlight_limit or 5" -position = "at" -payload = "self.config.highlighted_limit = config.highlight_limit or G.GAME.modifiers.cry_highlight_limit or 5" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > 5 then" -position = "at" -payload = "if #G.hand.highlighted <= (G.GAME.blind and G.GAME.blind.name == 'cry-Sapphire Stamp' and not G.GAME.blind.disabled and 1 or 0) or G.GAME.blind.block_play then" -match_indent = true - -# Hieroglyph -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "ease_ante(-center_table.extra)" -position = "at" -payload = "ease_ante(math.floor(-center_table.extra))" -match_indent = true - -# Get Cryptid to display and work with card selections -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "elseif _c.name == 'Cryptid' then loc_vars = {_c.config.extra}" -position = "at" -payload = '''elseif _c.name == 'Cryptid' then loc_vars = {_c.config.extra, _c.config.max_highlighted} -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'local _card = copy_card(G.hand.highlighted[1], nil, nil, G.playing_card)' -position = "at" -payload = ''' -for q = 1, #G.hand.highlighted do -local _card = copy_card(G.hand.highlighted[q], nil, nil, G.playing_card) -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "new_cards[#new_cards+1] = _card" -position = "after" -payload = "end" -match_indent = true - -# Get seal spectrals to display and work with card selections -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = ''' -(?[\t ]*)elseif _c\.set == 'Spectral' then ''' -position = 'after' -# match_indent = true -line_prepend = '$indent ' -payload = ''' - -if _c.name == 'Talisman' or _c.name == 'Medium' or _c.name == 'Trance' or _c.name == 'Deja Vu' then - loc_vars = {_c.config.max_highlighted} -end -''' - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'local conv_card = G.hand.highlighted[1]' -position = "at" -payload = ''' -for q = 1, #G.hand.highlighted do -local conv_card = G.hand.highlighted[q] -G.E_MANAGER:add_event(Event({func = function() - play_sound('tarot1') - used_tarot:juice_up(0.3, 0.5) - return true end })) - -G.E_MANAGER:add_event(Event({trigger = 'after',delay = 0.1,func = function() - conv_card:set_seal(self.ability.extra, nil, true) - return true end })) -end -delay(0.5) -G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2,func = function() G.hand:unhighlight_all(); return true end })) -end--[[ -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Aura' then" -position = "before" -payload = "--]]" -match_indent = true - -# Fractional pricing -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.cost = math.max(1, math.floor((self.base_cost + self.extra_cost + 0.5)*(100-G.GAME.discount_percent)/100))" -position = "after" -payload = ''' - if self.ability.set == 'Joker' then - self.cost = cry_format(self.cost * G.GAME.cry_shop_joker_price_modifier,'%.2f') end - if self.misprint_cost_fac then - self.cost = cry_format(self.cost * self.misprint_cost_fac,'%.2f') - if not G.GAME.modifiers.cry_misprint_min then self.cost = math.floor(self.cost) end end -''' -match_indent = true - -# welcome to hell, enjoy your stay (initialise center copy) -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.GAME.selected_back_key = selected_back" -position = "after" -payload = ''' -G.GAME.cry_voucher_centers = {} -for k, v in pairs(G.P_CENTERS) do - if v.set == 'Voucher' then - G.GAME.cry_voucher_centers[k] = {config = {}} - G.GAME.cry_voucher_centers[k].config = copy_table(v.config) - end -end -''' -match_indent = true - -# when voucher is redeemed, save ability to center copy -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.shop_voucher then G.GAME.current_round.voucher = nil end" -position = "after" -payload = ''' -G.GAME.cry_voucher_centers[self.config.center_key].config.extra = self.ability.extra -if self.ability.extra_disp then G.GAME.cry_voucher_centers[self.config.center_key].config.extra_disp = self.ability.extra_disp end -''' -match_indent = true - -# extra override -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "extra = center and center.config.extra or self and self.ability.extra" -position = "at" -payload = ''' -extra = self and G.GAME.cry_voucher_centers[self.config.center_key].config.extra or center and center.config.extra -''' -match_indent = true - -# the d in disp stands for disparity (match internal values to display values) -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if center_table.name == 'Overstock' or center_table.name == 'Overstock Plus' then" -position = "before" -payload = ''' -if not center_table.extra then center_table.extra = center and center.config.extra end -- catch -if self and self.ability and self.ability.extra_disp then - local up = false - if center_table.name == 'Tarot Tycoon' or center_table.name == 'Planet Tycoon' then - up = true - end - local og_extra = 9.6/4 - local og_disp = 2 - if up == true then - og_extra = 32/4 - og_disp = 4 - end - local misprint_diff = self.ability.extra_disp / og_disp - G.GAME.cry_voucher_centers[self.config.center_key].config.extra = og_extra*misprint_diff - center_table.extra = og_extra*misprint_diff -end -''' -match_indent = true - -# I LOVE HARDCODING -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "G.hand:change_size(1)" -position = "at" -payload = ''' -G.hand:change_size(center_table.extra) -''' -match_indent = true - -# YOU LOVE HARDCODING -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "change_shop_size(1)" -position = "at" -payload = ''' -change_shop_size(center_table.extra) -''' -match_indent = true - -# WE ALL LOVE HARDCODING -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''if center_table\.name \=\= 'Antimatter' then\n\s+G\.E_MANAGER\:add_event\(Event\(\{func = function\(\)\n\s+if G\.jokers then \n\s+G\.jokers\.config\.card_limit \= G\.jokers\.config\.card_limit \+ 1\n\s+end\n\s+return true end \}\)\)\n\s+end''' -position = "at" -payload = ''' - if center_table.name == 'Antimatter' then - G.E_MANAGER:add_event(Event({func = function() - if G.jokers then - G.jokers.config.card_limit = G.jokers.config.card_limit + center_table.extra - end - return true end })) - end -''' - -# AAAA -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''if center_table\.name \=\= 'Crystal Ball' then\n\s+G\.E_MANAGER:add_event\(Event\(\{func \= function\(\)\n\s+G\.consumeables\.config\.card_limit \= G.consumeables\.config\.card_limit \+ 1\n\s+return true end }\)\)\n\s+end''' -position = "at" -payload = ''' - if center_table.name == 'Crystal Ball' then - G.E_MANAGER:add_event(Event({func = function() - G.consumeables.config.card_limit = G.consumeables.config.card_limit + center_table.extra - return true end })) - end -''' - -# anyway how's your day going? -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''elseif _c.name == "Clearance Sale" or _c.name == "Liquidation" then loc_vars = {_c.config.extra}''' -position = "after" -payload = ''' -elseif _c.name == "Crystal Ball" or _c.name == "Omen Globe" then loc_vars = {_c.config.extra} -''' -match_indent = true - -# doing pretty good myself -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''if _c.name == "Overstock" or _c.name == 'Overstock Plus' then''' -position = "at" -payload = ''' -if _c.name == "Overstock" or _c.name == "Overstock Plus" then loc_vars = {_c.config.extra} -''' -match_indent = true - -# spent the whole day reviving misprinted vouchers -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''elseif _c.name == "Blank" or _c.name == "Antimatter" then''' -position = "at" -payload = ''' -elseif _c.name == "Blank" or _c.name == "Antimatter" then loc_vars = {_c.config.extra} -''' -match_indent = true - -# tbf, more like half -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''message = localize\{type = 'variable', key = 'a_xmult', vars = \{G.P_CENTERS.v_observatory.config.extra}},\n\s+Xmult_mod = G.P_CENTERS.v_observatory.config.extra''' -position = "at" -payload = ''' - message = localize{type = 'variable', key = 'a_xmult', vars = {G.GAME.cry_voucher_centers['v_observatory'].config.extra}}, - Xmult_mod = G.GAME.cry_voucher_centers['v_observatory'].config.extra -''' - -# but whatever, not like i was doing anything anyway -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''UIBox_button({label = {localize('b_reroll_boss'), localize('$')..'10'}, button = "reroll_boss", func = 'reroll_boss_button'}) or nil''' -position = "at" -payload = ''' -UIBox_button({label = {localize('b_reroll_boss'), localize('$')..cry_cheapest_boss_reroll()}, button = "reroll_boss", func = 'reroll_boss_button'}) or nil -''' -match_indent = true - -# worth it in the end ig, it was bugging me -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = '''if ((G.GAME.dollars-G.GAME.bankrupt_at) - 10 >= 0) and''' -position = "at" -payload = ''' -if ((to_big(G.GAME.dollars)-to_big(G.GAME.bankrupt_at)) - to_big(cry_cheapest_boss_reroll()) >= to_big(0)) and -''' -match_indent = true - -# see you around -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = '''if not G.from_boss_tag then ease_dollars(-10) end''' -position = "at" -payload = ''' -if not G.from_boss_tag then ease_dollars(-cry_cheapest_boss_reroll()) end -''' -match_indent = true - -# hi i'm back and i'm fixing this thing that breaks sometimes for no reason (it really shouldn't) -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''v_overstock_norm = {order = 1, discovered = false, unlocked = true , available = true, cost = 10, name = "Overstock", pos = {x=0,y=0}, set = "Voucher", config = {}},''' -position = "at" -payload = ''' -v_overstock_norm = {order = 1, discovered = false, unlocked = true , available = true, cost = 10, name = "Overstock", pos = {x=0,y=0}, set = "Voucher", config = {extra = 1}}, -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''v_crystal_ball= {order = 9, discovered = false, unlocked = true , available = true, cost = 10, name = "Crystal Ball", pos = {x=2,y=2}, set = "Voucher", config = {extra = 3}},''' -position = "at" -payload = ''' -v_crystal_ball= {order = 9, discovered = false, unlocked = true , available = true, cost = 10, name = "Crystal Ball", pos = {x=2,y=2}, set = "Voucher", config = {extra = 1}}, -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''v_overstock_plus= {order = 2, discovered = false, unlocked = false, available = true, cost = 10, name = "Overstock Plus", pos = {x=0,y=1}, set = "Voucher", config = {}, requires = {'v_overstock_norm'},unlock_condition = {type = 'c_shop_dollars_spent', extra = 2500}},''' -position = "at" -payload = ''' -v_overstock_plus= {order = 2, discovered = false, unlocked = false, available = true, cost = 10, name = "Overstock Plus", pos = {x=0,y=1}, set = "Voucher", config = {extra = 1}, requires = {'v_overstock_norm'},unlock_condition = {type = 'c_shop_dollars_spent', extra = 2500}}, -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''v_antimatter= {order = 24, discovered = false, unlocked = false, available = true, cost = 10, name = "Antimatter", pos = {x=7,y=1}, set = "Voucher", config = {extra = 15}, requires = {'v_blank'},unlock_condition = {type = 'blank_redeems', extra = 10}},''' -position = "at" -payload = ''' -v_antimatter= {order = 24, discovered = false, unlocked = false, available = true, cost = 10, name = "Antimatter", pos = {x=7,y=1}, set = "Voucher", config = {extra = 1}, requires = {'v_blank'},unlock_condition = {type = 'blank_redeems', extra = 10}}, -''' -match_indent = true diff --git a/Cryptid/lovely/Planets.toml b/Cryptid/lovely/Planets.toml deleted file mode 100644 index 8b26260..0000000 --- a/Cryptid/lovely/Planets.toml +++ /dev/null @@ -1,27 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Lapio softlock mechanic -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if (not v.config.softlock or G.GAME.hands[v.config.hand_type].played > 0) then" -position = "at" -payload = ''' -local softlocked = true -if not v.config.softlock then - softlocked = false -elseif v.config.hand_type then - softlocked = G.GAME.hands[v.config.hand_type].played == 0 -elseif v.config.hand_types then - for _, h in pairs(v.config.hand_types) do - if G.GAME.hands[h].played > 0 then - softlocked = false - end - end -end -if not softlocked then -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Probability.toml b/Cryptid/lovely/Probability.toml index 0f1220e..fc8c5c9 100644 --- a/Cryptid/lovely/Probability.toml +++ b/Cryptid/lovely/Probability.toml @@ -24,10 +24,10 @@ position = "before" payload = ''' function cry_prob(owned, den, rigged) prob = G.GAME and G.GAME.probabilities.normal or 1 - if rigged then + if rigged then return den else - return prob*owned + if owned then return prob*owned else return prob end end end ''' @@ -76,14 +76,26 @@ elseif _c.effect == 'Glass Card' then loc_vars = {cfg.Xmult, cfg.cry_prob and cr match_indent = true # wow this is a fat line +# Yellow Stake - Glass can't destroy Eternals +# Glass Stake - Any card can shatter [[patches]] [patches.pattern] target = "functions/state_events.lua" pattern = '''if SMODS.has_enhancement(scoring_hand[i], 'm_glass') and not scoring_hand[i].debuff and pseudorandom('glass') < G.GAME.probabilities.normal/(scoring_hand[i].ability.name == 'Glass Card' and scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra) then''' position = "at" payload = ''' -if SMODS.has_enhancement(scoring_hand[i], 'm_glass') and not scoring_hand[i].debuff and pseudorandom('glass') < cry_prob(scoring_hand[i].ability.cry_prob, scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra, scoring_hand[i].ability.cry_rigged)/(scoring_hand[i].ability.name == 'Glass Card' and scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra) then -''' +if (SMODS.has_enhancement(scoring_hand[i], 'm_glass') + and not scoring_hand[i].debuff + and pseudorandom('glass') < cry_prob( + scoring_hand[i].ability.cry_prob, + scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra, + scoring_hand[i].ability.cry_rigged + ) / (scoring_hand[i].ability.name == 'Glass Card' + and scoring_hand[i].ability.extra + or G.P_CENTERS.m_glass.config.extra) + or (G.GAME.modifiers.cry_shatter_rate + and pseudorandom('cry_shatter') < 1 / G.GAME.modifiers.cry_shatter_rate)) + and not scoring_hand[i].ability.eternal then''' match_indent = true # wheeeeeeeeeeel diff --git a/Cryptid/lovely/ResizedJokers.toml b/Cryptid/lovely/ResizedJokers.toml deleted file mode 100644 index f5cdb21..0000000 --- a/Cryptid/lovely/ResizedJokers.toml +++ /dev/null @@ -1,126 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Wee Fibonacci rendering -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'if center.name == "Wee Joker" and (center.discovered or self.bypass_discovery_center) then' -position = "before" -payload = ''' -if (center.name == "cry-Wee Fibonacci" or center.name == "cry-reverse") and (center.discovered or self.bypass_discovery_center) then - H = H*0.7 - W = W*0.7 - self.T.h = H - self.T.w = W -end -if center.name == "cry-biggestm" and (center.discovered or self.bypass_discovery_center) then - H = H*1.7 - W = W*1.7 - self.T.h = H - self.T.w = W -end -if center.name == "cry-Booster Joker" and (center.discovered or self.bypass_discovery_center) then - H = H*1.17 - W = W*1.17 - self.T.h = H - self.T.w = W -end -if center.name == "cry-Cube" and (center.discovered or self.bypass_discovery_center) then - H = H*0.1 - W = W*0.1 - self.T.h = H - self.T.w = W -end -if center.name == "cry-Potion" and (center.discovered or self.bypass_discovery_center) then - H = W - self.T.h = H - H = H*35/69 - W = W*35/69 - self.T.h = H - self.T.w = W -end -if center.name == "cry-Jimball" and (center.discovered or self.bypass_discovery_center) then - H = W - self.T.h = H - H = H*57/69 - W = W*57/69 - self.T.h = H - self.T.w = W -end -if center.name == "cry-magnet" and (center.discovered or self.bypass_discovery_center) then - H = W - self.T.h = H - H = H*35/71 - W = W*35/71 - self.T.h = H - self.T.w = W -end -''' -match_indent = true - - -# Wee Fibonacci rendering -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if _center.name == 'Photograph' and (_center.discovered or self.bypass_discovery_center) then" -position = "before" -payload = ''' -if _center.name == "cry-Cube" and (_center.discovered or self.bypass_discovery_center) then - self.children.center.scale.y = self.children.center.scale.y*0.1 - self.children.center.scale.x = self.children.center.scale.x*0.1 -end -if _center.name == 'cry-Jimball' and (_center.discovered or self.bypass_discovery_center) then - self.children.center.scale.y = self.children.center.scale.x - self.children.center.scale.y = self.children.center.scale.y*57/69 - self.children.center.scale.x = self.children.center.scale.x*57/69 -end -if _center.name == 'cry-Potion' and (_center.discovered or self.bypass_discovery_center) then - self.children.center.scale.y = self.children.center.scale.x - self.children.center.scale.y = self.children.center.scale.y*35/69 - self.children.center.scale.x = self.children.center.scale.x*35/69 -end -if _center.name == 'cry-magnet' and (_center.discovered or self.bypass_discovery_center) then - self.children.center.scale.y = self.children.center.scale.x - self.children.center.scale.y = self.children.center.scale.y*35/71 - self.children.center.scale.x = self.children.center.scale.x*35/71 -end -''' -match_indent = true - -# Cube rendering -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'elseif self.config.center.name == "Wee Joker" then' -position = "before" -payload = ''' -elseif self.config.center.name == "cry-Wee Fibonacci" or self.config.center.name == "cry-reverse" then - self.T.h = H*scale*0.7*scale - self.T.w = W*scale*0.7*scale -elseif self.config.center.name == "cry-biggestm" then - self.T.h = H*scale*1.7*scale - self.T.w = W*scale*1.7*scale -elseif self.config.center.name == "cry-Booster Joker" then - self.T.h = H*scale*1.17*scale - self.T.w = W*scale*1.17*scale -elseif self.config.center.name == "cry-Cube" then - self.T.h = H*scale*0.1*scale - self.T.w = W*scale*0.1*scale -elseif self.config.center.name == "cry-Jimball" then - H = W - self.T.h = H*scale*57/69*scale - self.T.w = W*scale*57/69*scale -elseif self.config.center.name == "cry-Potion" then - H = W - self.T.h = H*scale*35/69*scale - self.T.w = W*scale*35/69*scale -elseif self.config.center.name == "cry-magnet" then - H = W - self.T.h = H*scale*35/71*scale - self.T.w = W*scale*35/71*scale -''' -match_indent = true diff --git a/Cryptid/lovely/Seals.toml b/Cryptid/lovely/Seals.toml deleted file mode 100644 index eed6ca9..0000000 --- a/Cryptid/lovely/Seals.toml +++ /dev/null @@ -1,20 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 10 - - -# Call Card:calculate_seal() with destroying_card context -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '(?[\t ]*)if destroyed then \n' -position = 'before' -line_prepend = '$indent' -payload = ''' -if scoring_hand[i]:calculate_seal({destroying_card = scoring_hand[i], full_hand = G.play.cards}) and not scoring_hand[i].ability.eternal then - destroyed = true -end - -''' - diff --git a/Cryptid/lovely/Spooky.toml b/Cryptid/lovely/Spooky.toml deleted file mode 100644 index d29c547..0000000 --- a/Cryptid/lovely/Spooky.toml +++ /dev/null @@ -1,49 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = 10 - -# Haunted House - useless skips -[[patches]] -[patches.regex] -target = "functions/button_callbacks.lua" -pattern = 'if _tag then' -position = 'at' -line_prepend = '$indent' -payload = '''if _tag and not G.GAME.events.ev_cry_choco2 then''' - -# Please Take One jank -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''ease_background_colour_blind(G.STATES.ROUND_EVAL)''' -position = "after" -payload = '''if G.GAME.events.ev_cry_choco6 and G.round_eval then return true end''' -match_indent = true - -# Revered Antique - create legendary -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = '''if G.load_shop_booster then''' -position = "before" -payload = ''' -if G.GAME.events.ev_cry_choco10 then - local add = true - for k, v in pairs(G.shop_vouchers.cards) do -- G.load_shop_vouchers is already set to nil here, just do a normal check - if v.ability.cry_antique then add = false end - end - if add then - local card = create_card('Joker', G.jokers, true, nil, nil, nil, nil, 'cry_antique') - cry_misprintize(card) - card.misprint_cost_fac = 50/card.cost - card:set_cost() - create_shop_card_ui(card, 'Voucher', G.shop_vouchers) - card:start_materialize() - card.ability.cry_antique = true - G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1 - G.shop_vouchers:emplace(card) - end -end -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/Stakes.toml b/Cryptid/lovely/Stakes.toml deleted file mode 100644 index 6d31df7..0000000 --- a/Cryptid/lovely/Stakes.toml +++ /dev/null @@ -1,485 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - - -# Yellow Stake - perishable and rental effects on consumable -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.GAME.round_resets.ante == G.GAME.win_ante and G.GAME.blind:get_type() == 'Boss' then" -position = "before" -payload = ''' -local i = 1 -while i <= #G.jokers.cards do - local gone = G.jokers.cards[i]:calculate_banana() - if not gone then i = i + 1 end -end -i = 1 -while i <= #G.consumeables.cards do - G.consumeables.cards[i]:cry_calculate_consumeable_rental() - G.consumeables.cards[i]:cry_calculate_consumeable_perishable() - local gone = nil - if not gone then i = i + 1 end -end -''' -match_indent = true - -# Yellow Stake - perishable and rental effects on cards held in hand -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = {G.hand.cards[i]:get_end_of_round_effect()}" -position = "after" -payload = ''' -G.hand.cards[i]:calculate_rental() -G.hand.cards[i]:calculate_perishable() -''' -match_indent = true - -# Yellow Stake - perishable and rental effects on cards in deck and discard pile -# Double Down -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "G.FUNCS.draw_from_hand_to_discard()" -position = "before" -payload = ''' -local i = 1 -while i <= #G.hand.cards do - local gone = G.hand.cards[i]:calculate_banana() - if not gone then i = i + 1 end -end -for i = 1, #G.discard.cards do - G.discard.cards[i]:calculate_perishable() -end -i = 1 -while i <= #G.deck.cards do - G.deck.cards[i]:calculate_perishable() - local gone = G.deck.cards[i]:calculate_banana() - if not gone then i = i + 1 end -end -if G.GAME.used_vouchers.v_cry_double_down then - local function update_dbl(area) - for i = 1, #area.cards do - if area.cards[i].dbl_side then - --tweak to do deck effects with on the flip side - cry_misprintize(area.cards[i].dbl_side, {min = 1.5, max = 1.5}, nil, true) - card_eval_status_text(area.cards[i], "extra", nil, nil, nil, { message = localize("k_upgrade_ex") }) - end - end - end - update_dbl(G.jokers) - update_dbl(G.consumeables) - update_dbl(G.hand) - update_dbl(G.discard) - update_dbl(G.deck) -end -''' -match_indent = true - -# Yellow Stake - Hanged Man can't be used on Eternal cards, Death can't remove Eternal -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'The Hermit' or self.ability.consumeable.hand_type or self.ability.name == 'Temperance' or self.ability.name == 'Black Hole' then" -position = "before" -payload = ''' -if self.ability.name == "The Hanged Man" then - for i = 1, #G.hand.highlighted do - if G.hand.highlighted[i].ability.eternal then return false end - end -end -if self.ability.name == "Death" then - local rightmost = G.hand.highlighted[1] - for i=1, #G.hand.highlighted-1 do if G.hand.highlighted[i].T.x > rightmost.T.x then rightmost = G.hand.highlighted[i] end end - for i=1, #G.hand.highlighted do if G.hand.highlighted[i].ability.eternal and rightmost ~= G.hand.highlighted[i] then return false end end -end -''' -match_indent = true - - -# Yellow Stake - Immolate can't be used on Eternal cards -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "for k, v in ipairs(G.hand.cards) do temp_hand[#temp_hand+1] = v end" -position = "at" -payload = ''' -for k, v in ipairs(G.hand.cards) do - if not v.ability.eternal then - temp_hand[#temp_hand+1] = v - end -end -''' -match_indent = true - - -# Yellow Stake - Death can't modify Eternal cards (redundant, but may help if Death can be used on more cards) -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if G.hand.highlighted[i] ~= rightmost then" -position = "at" -payload = "if G.hand.highlighted[i] ~= rightmost and not G.hand.highlighted[i].ability.eternal then" -match_indent = true - - -# Yellow Stake - Trading Card can't destroy Eternals -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 then" -position = "at" -payload = "G.GAME.current_round.discards_used <= 0 and #context.full_hand == 1 and not context.other_card.ability.eternal then" -match_indent = true - - -# Yellow Stake - Sixth Sense can't destroy Eternals -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Sixth Sense' and #context.full_hand == 1 and context.full_hand[1]:get_id() == 6 and G.GAME.current_round.hands_played == 0 then" -position = "at" -payload = "if self.ability.name == 'Sixth Sense' and #context.full_hand == 1 and context.full_hand[1]:get_id() == 6 and not context.full_hand[1].ability.eternal and G.GAME.current_round.hands_played == 0 then" -match_indent = true - - -# Yellow Stake - Glass can't destroy Eternals -# Glass Stake - Any card can shatter -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if SMODS.has_enhancement(scoring_hand[i], 'm_glass') and not scoring_hand[i].debuff and pseudorandom('glass') < G.GAME.probabilities.normal/scoring_hand[i].ability.extra then" -position = "at" -payload = "if ((SMODS.has_enhancement(scoring_hand[i], 'm_glass') and not scoring_hand[i].debuff and pseudorandom('glass') < G.GAME.probabilities.normal/scoring_hand[i].ability.extra) or (G.GAME.modifiers.cry_shatter_rate and pseudorandom('cry_shatter') < 1/G.GAME.modifiers.cry_shatter_rate)) and not scoring_hand[i].ability.eternal then" -match_indent = true - - -# Yellow Stake - enhancement tarots don't remove stickers -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "perma_bonus = self.ability and self.ability.perma_bonus or 0," -position = "after" -payload = ''' -eternal = self.ability and self.ability.eternal, -perishable = self.ability and self.ability.perishable, -perish_tally = self.ability and self.ability.perish_tally, -rental = self.ability and self.ability.rental -''' -match_indent = true - - -# Amber Stake - edit number of booster packs -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "for i = 1, 2 do" -position = "at" -payload = "for i = 1, G.GAME.modifiers.cry_no_boosters and 0 or G.GAME.modifiers.cry_booster_packs or 2 do" -match_indent = true - - -# Quartz Stake - pinned effect applies in every type of slot -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 < b.T.x + b.T.w/2 end)" -position = "at" -payload = "table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 - 100*(a.pinned and a.sort_id or 0) < b.T.x + b.T.w/2 - 100*(b.pinned and b.sort_id or 0) end)" -match_indent = true - - -# Quartz Stake - render pinned sticker -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "elseif self.sprite_facing == 'back' then" -position = "before" -payload = ''' -if self.pinned then - G.shared_stickers['pinned'].role.draw_major = self - G.shared_stickers['pinned']:draw_shader('dissolve', nil, nil, nil, self.children.center) - G.shared_stickers['pinned']:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center) -end -''' -match_indent = true - - -# Ruby Stake - big blind bosses -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.GAME.round_resets.blind_choices.Boss = get_new_boss()" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_big_boss_rate and pseudorandom('cry_big_boss') < G.GAME.modifiers.cry_big_boss_rate then - self.GAME.round_resets.blind_choices.Big = get_new_boss() -elseif G.GAME.modifiers.cry_rush_hour_ii then - self.GAME.round_resets.blind_choices.Small = get_new_boss() - self.GAME.round_resets.blind_choices.Big = get_new_boss() -else - self.GAME.round_resets.blind_choices.Big = 'bl_big' -end -''' -match_indent = true - - -# Ruby Stake - big blind bosses -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.GAME.round_resets.blind_choices.Boss = get_new_boss()" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_big_boss_rate and pseudorandom('cry_big_boss') < G.GAME.modifiers.cry_big_boss_rate then - G.GAME.round_resets.blind_choices.Big = get_new_boss() -elseif G.GAME.modifiers.cry_rush_hour_ii then - G.GAME.round_resets.blind_choices.Small = get_new_boss() - G.GAME.round_resets.blind_choices.Big = get_new_boss() -else - G.GAME.round_resets.blind_choices.Big = 'bl_big' -end -''' -match_indent = true - - -# Ruby Stake - big blind doesn't increase ante -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.GAME.blind:get_type() == 'Boss' then" -position = "at" -payload = "if G.GAME.blind_on_deck == 'Boss' then" -match_indent = true - -# Ruby Stake - smaller showdown blinds don't win -# Win on any ante above win_ante -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.GAME.round_resets.ante == G.GAME.win_ante and G.GAME.blind:get_type() == 'Boss' then" -position = "at" -payload = "if G.GAME.round_resets.ante >= G.GAME.win_ante and G.GAME.blind_on_deck == 'Boss' then" -match_indent = true - - -# Rush Hour - mark small blind as defeated -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.GAME.round_resets.blind == G.P_BLINDS.bl_small then" -position = "at" -payload = "if G.GAME.blind_on_deck == 'Small' then" -match_indent = true - -# Ruby Stake - mark big blind as defeated -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "elseif G.GAME.round_resets.blind == G.P_BLINDS.bl_big then" -position = "at" -payload = "elseif G.GAME.blind_on_deck == 'Big' then" -match_indent = true - - -# Sapphire Stake - ante tax -# The Joke boss effect -# Save game state for Revert -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "delay(0.4); ease_ante(1); delay(0.4); check_for_unlock({type = 'ante_up', ante = G.GAME.round_resets.ante + 1})" -position = "at" -payload = "delay(0.4); ease_ante(G.GAME.blind and G.GAME.blind:cry_calc_ante_gain() or 1); cry_apply_ante_tax(); delay(0.4); check_for_unlock({type = 'ante_up', ante = G.GAME.round_resets.ante + 1})" -match_indent = true - - -# Emerald Stake - Permanently flipped cards -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "if card.facing == 'back' and self.config.type ~= 'discard' and self.config.type ~= 'deck' and not stay_flipped then" -position = "at" -payload = '''if card.cry_flipped then card.facing = 'back'; card.sprite_facing = 'back' end -if not (card.cry_flipped and (self == G.shop_jokers or self == G.shop_vouchers or self == G.shop_booster)) and card.facing == 'back' and self.config.type ~= 'discard' and self.config.type ~= 'deck' and not stay_flipped then''' -match_indent = true - - -# Emerald Stake - flipped packs -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "create_shop_card_ui(card, 'Booster', G.shop_booster)" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_enable_flipped_in_shop and pseudorandom('cry_flip_pack'..G.GAME.round_resets.ante) > 0.7 then - card.cry_flipped = true -end''' -match_indent = true - - -# Emerald Stake - flipped vouchers -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "create_shop_card_ui(card, 'Voucher', G.shop_vouchers)" -position = "before" -payload = ''' -if G.GAME.modifiers.cry_enable_flipped_in_shop and pseudorandom('cry_flip_vouch'..G.GAME.round_resets.ante) > 0.7 then - card.cry_flipped = true -end''' -match_indent = true - - -# Platinum Stake - start with big blind ready to be selected -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.GAME.blind_on_deck = 'Small'" -position = "at" -payload = "G.GAME.blind_on_deck = G.GAME.modifiers.cry_no_small_blind and 'Big' or 'Small'" -match_indent = true - - -# Platinum Stake - start with big blind ready to be selected -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "G.GAME.blind_on_deck = 'Small'" -position = "at" -payload = "G.GAME.blind_on_deck = G.GAME.modifiers.cry_no_small_blind and 'Big' or 'Small'" -match_indent = true - - -# Platinum Stake - hide Small Blind -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.GAME.round_resets.blind_states.Small = 'Upcoming'" -position = "at" -payload = "G.GAME.round_resets.blind_states.Small = G.GAME.modifiers.cry_no_small_blind and 'Hide' or 'Upcoming'" -match_indent = true - -# Ember Stake - grant no money on sell -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''elseif v.boss.showdown and (G.GAME.round_resets.ante)%G.GAME.win_ante == 0 and G.GAME.round_resets.ante >= 2 then''' -position = "at" -payload = '''elseif v.boss.showdown and (((G.GAME.round_resets.ante)%G.GAME.win_ante == 0 and G.GAME.round_resets.ante >= 2) or G.GAME.modifiers.cry_big_showdown ) then''' -match_indent = true - -# Ember Stake - give no money for selling -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''ease_dollars(self.sell_cost)''' -position = "at" -payload = '''if not G.GAME.modifiers.cry_no_sell_value then ease_dollars(self.sell_cost) end''' -match_indent = true - -# Ember Stake - don't play coin sound -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''play_sound('coin2')''' -position = "at" -payload = '''if not G.GAME.modifiers.cry_no_sell_value then play_sound('coin2') end''' -match_indent = true - -# Ember Stake - red dissolve for swag points -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''self:start_dissolve({G.C.GOLD})''' -position = "at" -payload = '''if G.GAME.modifiers.cry_no_sell_value then self:start_dissolve({G.C.RED}) else self:start_dissolve({G.C.GOLD}) end''' -match_indent = true - -# Ember Stake - remove sell price visually -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''self.sell_cost_label = self.facing == 'back' and '?' or self.sell_cost''' -position = "at" -payload = '''self.sell_cost_label = (self.facing == 'back' and '?') or (G.GAME.modifiers.cry_no_sell_value and 0) or self.sell_cost''' -match_indent = true - -# Dawn Stake - change maximum allowed highlights (i have no idea what this code is meant to be doing?? whatever it is, it doesn't seem to be working -toneblock) -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''local cfg = (card and card.ability) or _c['config']''' -position = "after" -payload = '''if cfg and G.GAME.modifiers.cry_consumable_reduce and cfg.max_highlighted and (cfg.max_highlighted > 1) then - local new_table = {} - for i0, j0 in pairs(cfg) do - new_table[i0] = j0 - end - new_table.max_highlighted = new_table.max_highlighted - 1 - cfg = new_table -end''' -match_indent = true - -# Horizon Stake - create random card at start of blind -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = '''G.GAME.blind:set_blind(G.GAME.round_resets.blind)''' -position = "after" -payload = '''if G.GAME.modifiers.cry_card_each_round then - G.E_MANAGER:add_event(Event({ - func = function() - local front = pseudorandom_element(G.P_CARDS, pseudoseed('cry_horizon')) - G.playing_card = (G.playing_card and G.playing_card + 1) or 1 - local edition = G.P_CENTERS.c_base - local card = Card(G.play.T.x + G.play.T.w/2, G.play.T.y, G.CARD_W, G.CARD_H, front, G.P_CENTERS.c_base, {playing_card = G.playing_card}) - card:start_materialize() - if G.GAME.selected_back.effect.config.cry_force_edition and G.GAME.selected_back.effect.config.cry_force_edition ~= "random" then - local edition = {} - edition[G.GAME.selected_back.effect.config.cry_force_edition] = true - card:set_edition(edition, true, true); - end - G.play:emplace(card) - table.insert(G.playing_cards, card) - playing_card_joker_effects({true}) - return true - end})) - G.E_MANAGER:add_event(Event({ - func = function() - G.deck.config.card_limit = G.deck.config.card_limit + 1 - return true - end})) - draw_card(G.play,G.deck, 90,'up', nil) -end''' -match_indent = true - -# Blossom Stake - showdown blinds before the winning ante -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''elseif v.boss.showdown and (G.GAME.round_resets.ante)%G.GAME.win_ante == 0 and G.GAME.round_resets.ante >= 2 then''' -position = "at" -payload = '''elseif v.boss.showdown and (((G.GAME.round_resets.ante)%G.GAME.win_ante == 0 and G.GAME.round_resets.ante >= 2) or G.GAME.modifiers.cry_big_showdown ) then''' -match_indent = true - -# inject into vanilla calculate_perishable to prevent nil index bug (i don't know where it fails so i'm just patching every part of it...) -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if self.ability.perishable and self.ability.perish_tally > 0 then''' -position = "before" -payload = '''if self.ability.perishable and not self.ability.perish_tally then self.ability.perish_tally = G.GAME.perishable_rounds end''' -match_indent = true - -# again in set_debuff -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if self.ability.perishable and self.ability.perish_tally <= 0 then''' -position = "before" -payload = '''if self.ability.perishable and not self.ability.perish_tally then self.ability.perish_tally = G.GAME.perishable_rounds end''' -match_indent = true diff --git a/Cryptid/lovely/Sticker.toml b/Cryptid/lovely/Sticker.toml deleted file mode 100644 index 30764db..0000000 --- a/Cryptid/lovely/Sticker.toml +++ /dev/null @@ -1,323 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# ok it seems i still have to use the dumb fix for pinned, smods please overwrite -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''if self\.pinned then badges\[\#badges \+ 1\] \= 'pinned_left' end''' -position = "at" -payload = ''' -if self.pinned then - if self.ability.set == 'Booster' then - badges[#badges + 1] = 'cry_pinned_booster' - elseif self.ability.set == 'Voucher' then - badges[#badges + 1] = 'cry_pinned_voucher' - elseif self.ability.consumeable then - badges[#badges + 1] = 'cry_pinned_consumeable' - else - badges[#badges + 1] = 'pinned_left' - end -end -''' - -# sigh -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if AUT.badges then" -position = "before" -payload = ''' -local function is_bad_badge(string) - local bad_badges = {'cry_pinned_booster', 'cry_pinned_voucher', 'cry_pinned_consumeable'} - for i = 1, #bad_badges do - if string == bad_badges[i] then return true end - end - return false -end -''' -match_indent = true - -# lmao wtf is this shit -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''badges[#badges + 1] = create_badge(localize(v, "labels"), get_badge_colour(v))''' -position = "at" -payload = ''' -if not is_bad_badge(v) then badges[#badges + 1] = create_badge(localize(v, "labels"), get_badge_colour(v)) end -''' -match_indent = true - -# this no longer just moves mod badges... it DUPES them, so now it's commented out (fml...) -# pinned badges should now no longer exist for non-jokers due to whatever the fuck is happening here -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''if AUT.info then''' -position = "before" -payload = ''' --- if AUT.badges then --- for k, v in ipairs(AUT.badges) do --- local replaced = false --- if v == 'cry_pinned_booster' or v == 'cry_pinned_voucher' or v == 'cry_pinned_consumeable' then replaced = true; v = 'pinned_left' end --- if replaced == true then badges[#badges + 1] = create_badge(localize(v, "labels"), get_badge_colour(v)) end --- end ---end -''' -match_indent = true - -# fucking hell -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if v == 'negative_consumable' then info_queue[#info_queue+1] = {key = 'e_negative_consumable', set = 'Edition', config = {extra = 1}} end" -position = "after" -payload = ''' -if v == 'cry_pinned_booster' then info_queue[#info_queue+1] = {key = 'cry_pinned_booster', set = 'Other'} end -if v == 'cry_pinned_voucher' then info_queue[#info_queue+1] = {key = 'cry_pinned_voucher', set = 'Other'} end -if v == 'cry_pinned_consumeable' then info_queue[#info_queue+1] = {key = 'cry_pinned_consumeable', set = 'Other'} end -''' -match_indent = true - -# initiate variables -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "rental_rate = 3," -position = "after" -payload = ''' -cry_voucher_perishable_rounds = 8, -cry_voucher_rental_rate = 2, -cry_consumeable_rental_rate = 2, -cry_voucher_banana_odds = 12, -cry_consumeable_banana_odds = 4, -cry_pinned_consumeables = 0, -cry_shop_joker_price_modifier = 1, -''' -match_indent = true - -# do more than just get voucher key -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.GAME.current_round.voucher = G.SETTINGS.tutorial_progress and G.SETTINGS.tutorial_progress.forced_voucher or get_next_voucher_key()" -position = "after" -payload = ''' -self.GAME.current_round.cry_voucher_edition = cry_get_next_voucher_edition() -self.GAME.current_round.cry_voucher_stickers = cry_get_next_voucher_stickers() -''' -match_indent = true - -# again, also check for pinned -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "G.GAME.current_round.voucher = get_next_voucher_key()" -position = "at" -payload = ''' -if G.GAME.current_round.cry_voucher_stickers.pinned == false then - G.GAME.current_round.voucher = get_next_voucher_key() - G.GAME.current_round.cry_voucher_edition = cry_get_next_voucher_edition() - G.GAME.current_round.cry_voucher_stickers = cry_get_next_voucher_stickers() -end -''' -match_indent = true - -# remove stickers if voucher is redeemed -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self:apply_to_run()" -position = "before" -payload = ''' -G.GAME.current_round.cry_voucher_edition = nil -G.GAME.current_round.cry_voucher_stickers = {eternal = false, perishable = false, rental = false, pinned = false, banana = false} -''' -match_indent = true - -# this is dumb but it saves overwrites + mod compat -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if not G.GAME.used_vouchers[v.key] then" -position = "at" -payload = ''' -if not G.GAME.cry_owned_vouchers[v.key] then -''' -match_indent = true - -# again -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if not G.GAME.used_vouchers[vv] then" -position = "at" -payload = ''' -if not G.GAME.cry_owned_vouchers[vv] then -''' -match_indent = true - -# add on redeem -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "G.GAME.used_vouchers[self.config.center_key] = true" -position = "before" -payload = ''' -G.GAME.cry_owned_vouchers[self.config.center_key] = true -''' -match_indent = true - -# initialise -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "used_vouchers = {}," -position = "after" -payload = ''' -cry_owned_vouchers = {}, -''' -match_indent = true - -# for challenge starting vouchers -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "G.GAME.used_vouchers[v.id] = true" -position = "after" -payload = ''' -G.GAME.cry_owned_vouchers[v.id] = true -''' -match_indent = true - -# for deck starting vouchers (no idea why there's a space here?) -[[patches]] -[patches.pattern] -target = "back.lua" -pattern = "G.GAME.used_vouchers[v ] = true" -position = "after" -payload = ''' -G.GAME.cry_owned_vouchers[v ] = true -''' -match_indent = true - -# for deck starting vouchers pt.2 apparently (is this part of the code even used? seems redundant) -[[patches]] -[patches.pattern] -target = "back.lua" -pattern = "G.GAME.used_vouchers[self.effect.config.voucher] = true" -position = "after" -payload = ''' -G.GAME.cry_owned_vouchers[self.effect.config.voucher] = true -''' -match_indent = true - -# consumeable sticker checking -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "local used_tarot = copier or self" -position = "after" -payload = ''' -if self.ability.rental then - G.E_MANAGER:add_event(Event({ - trigger = 'immediate', - blocking = false, - blockable = false, - func = (function() - ease_dollars(-G.GAME.cry_consumeable_rental_rate) - return true - end)})) -end -local gone = false -if self.ability.banana then - if not self.ability.extinct then - if (pseudorandom('oops_it_banana') < G.GAME.probabilities.normal/G.GAME.cry_consumeable_banana_odds) then - local gone = true - self.ability.extinct = true - G.E_MANAGER:add_event(Event({ - func = function() - play_sound('tarot1') - self.T.r = -0.2 - self:juice_up(0.3, 0.4) - self.states.drag.is = true - self.children.center.pinch.x = true - G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.3, blockable = false, - func = function() - if self.area then self.area:remove_card(self) end - self:remove() - self = nil - return true; end})) - return true - end - })) - card_eval_status_text(self, 'jokers', nil, nil, nil, {message = localize('k_extinct_ex'), delay = 0.1}) - return true - end - end -end -if gone == false then -''' -match_indent = true - -# end the wrap -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "function Card:can_use_consumeable(any_state, skip_check)" -position = "before" -payload = ''' -end -''' -match_indent = true - -# check for pinned -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if G.STATE ~= G.STATES.HAND_PLAYED and G.STATE ~= G.STATES.DRAW_TO_HAND and G.STATE ~= G.STATES.PLAY_TAROT or any_state then" -position = "before" -payload = ''' -if G.GAME.cry_pinned_consumeables > 0 and not self.pinned then - return false -end -''' -match_indent = true - -# pinned consumeable remove, counterpart is in cryptid's create_card -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.queue_negative_removal then" -position = "before" -payload = ''' -if self.ability.consumeable and self.pinned and (G.GAME.cry_pinned_consumeables > 0) then - G.GAME.cry_pinned_consumeables = G.GAME.cry_pinned_consumeables - 1 -end -''' -match_indent = true - -# rental jank -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.rental then self.cost = 1 end" -position = "at" -payload = ''' -if self.ability.rental and (not (self.ability.set == "Planet" and #find_joker('Astronomer') > 0) and self.ability.set ~= "Booster") then self.cost = 1 end -''' -match_indent = true - -# hmm -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.eternal then badges[#badges + 1] = 'eternal' end" -position = "at" -payload = ''' -if self.ability.eternal and not self.ability.cry_absolute then badges[#badges + 1] = 'eternal' end -''' -match_indent = true diff --git a/Cryptid/lovely/Universum.toml b/Cryptid/lovely/Universum.toml deleted file mode 100644 index 6153322..0000000 --- a/Cryptid/lovely/Universum.toml +++ /dev/null @@ -1,44 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Level up modifier -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "amount = amount or 1" -position = "after" -payload = "if not next(find_joker('cry-Universum')) then" -match_indent = true - - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].s_mult + G.GAME.hands[hand].l_mult*(G.GAME.hands[hand].level - 1), 1)" -position = "at" -payload = "G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult + G.GAME.hands[hand].l_mult*amount, 1)" -match_indent = true - - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].s_chips + G.GAME.hands[hand].l_chips*(G.GAME.hands[hand].level - 1), 0)" -position = "at" -payload = ''' -G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips + G.GAME.hands[hand].l_chips*amount, 1) -else - universum_mod = 1 - for i = 1, #G.jokers.cards do - local effects = G.jokers.cards[i]:calculate_joker({cry_universum = true, callback = function(card, effects) - universum_mod = universum_mod * (effects and effects.mod or 1) - end}) - end - G.GAME.hands[hand].level = math.max(0, G.GAME.hands[hand].level + amount) - G.GAME.hands[hand].mult = math.max(G.GAME.hands[hand].mult * (universum_mod)^amount, 1) - G.GAME.hands[hand].chips = math.max(G.GAME.hands[hand].chips * (universum_mod)^amount, 1) -end -''' -match_indent = true \ No newline at end of file diff --git a/Cryptid/lovely/VeryFair.toml b/Cryptid/lovely/VeryFair.toml deleted file mode 100644 index a75c432..0000000 --- a/Cryptid/lovely/VeryFair.toml +++ /dev/null @@ -1,70 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -1 - -# Remove voucher at start of run (also for Crimson Stake) -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.GAME.current_round.voucher = G.SETTINGS.tutorial_progress and G.SETTINGS.tutorial_progress.forced_voucher or get_next_voucher_key()" -position = "at" -payload = ''' -if not self.GAME.modifiers.cry_no_vouchers then - if not G.GAME.modifiers.cry_voucher_restock_antes or G.GAME.round_resets.ante % G.GAME.modifiers.cry_voucher_restock_antes == 0 then - self.GAME.current_round.voucher = G.SETTINGS.tutorial_progress and G.SETTINGS.tutorial_progress.forced_voucher or get_next_voucher_key() - end -else - very_fair_quip = pseudorandom_element(G.localization.misc.very_fair_quips, pseudoseed("cry_very_fair")) -end -''' -match_indent = true - - -# Remove voucher when defeating boss (also for Crimson Stake) -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "G.GAME.current_round.voucher = get_next_voucher_key()" -position = "at" -payload = ''' -if not G.GAME.modifiers.cry_no_vouchers then - if not G.GAME.modifiers.cry_voucher_restock_antes or G.GAME.round_resets.ante % G.GAME.modifiers.cry_voucher_restock_antes == 0 then - G.GAME.current_round.voucher = get_next_voucher_key() - end -else - very_fair_quip = pseudorandom_element(G.localization.misc.very_fair_quips, pseudoseed("cry_very_fair")) -end -''' -match_indent = true - - -# Change empty voucher text on Very Fair Deck -# This ain't localized, but that's a vanilla issue anyway -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "{n=G.UIT.T, config={text = 'DEFEAT', scale = 0.6, colour = G.C.WHITE}}" -position = "at" -payload = "{n=G.UIT.T, config={text = G.GAME.modifiers.cry_no_vouchers and (very_fair_quip[1] or '') or 'DEFEAT', scale = 0.6, colour = G.C.WHITE}}" -match_indent = true - - -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "{n=G.UIT.T, config={text = 'BOSS BLIND', scale = 0.4, colour = G.C.WHITE}}" -position = "at" -payload = "{n=G.UIT.T, config={text = G.GAME.modifiers.cry_no_vouchers and (very_fair_quip[2] or '') or G.GAME.modifiers.cry_voucher_restock_antes and G.GAME.round_resets.ante % G.GAME.modifiers.cry_voucher_restock_antes == 0 and 'TWO BOSS BLINDS' or 'BOSS BLIND', scale = 0.4, colour = G.C.WHITE}}" -match_indent = true - - -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "{n=G.UIT.T, config={text = 'TO RESTOCK', scale = 0.4, colour = G.C.WHITE}}" -position = "at" -payload = "{n=G.UIT.T, config={text = G.GAME.modifiers.cry_no_vouchers and (very_fair_quip[3] or '') or 'TO RESTOCK', scale = 0.4, colour = G.C.WHITE}}" -match_indent = true - - diff --git a/Cryptid/lovely/Voucher.toml b/Cryptid/lovely/Voucher.toml index c298d12..0be6c3a 100644 --- a/Cryptid/lovely/Voucher.toml +++ b/Cryptid/lovely/Voucher.toml @@ -59,6 +59,7 @@ cry_voucher_edition = {}, match_indent = true # initialise the other helpful variables +# tarot/planet percrates appear here too because why not [[patches]] [patches.pattern] target = "game.lua" @@ -67,8 +68,7 @@ position = "after" payload = ''' cry_bonusvouchercount = 0, cry_bonusvouchersused = {}, -voucher_edition_index = {}, -voucher_sticker_index = {eternal = {}, perishable = {}, rental = {}, pinned = {}, banana = {}}, -- might as well +cry_percrate = {tarot = 100, planet = 100}, ''' match_indent = true @@ -79,6 +79,8 @@ target = "functions/state_events.lua" pattern = '''G.GAME.current_round.voucher = get_next_voucher_key()''' position = "after" payload = ''' +G.GAME.current_round.cry_voucher_stickers = cry_get_next_voucher_stickers() +G.GAME.current_round.cry_voucher_edition = cry_get_next_voucher_edition() or {} G.GAME.current_round.cry_bonusvouchers = {} G.GAME.cry_bonusvouchersused = {} -- i'm not sure why i'm putting these in two separate tables but it doesn't matter much for i = 1, G.GAME.cry_bonusvouchercount do @@ -94,6 +96,8 @@ target = "game.lua" pattern = '''self.GAME.current_round.voucher = G.SETTINGS.tutorial_progress and G.SETTINGS.tutorial_progress.forced_voucher or get_next_voucher_key()''' position = "after" payload = ''' +G.GAME.current_round.cry_voucher_stickers = cry_get_next_voucher_stickers() +G.GAME.current_round.cry_voucher_edition = cry_get_next_voucher_edition() or {} for i = 1, self.GAME.cry_bonusvouchercount do self.GAME.current_round.cry_bonusvouchers[i] = get_next_voucher_key() end @@ -105,9 +109,20 @@ match_indent = true [[patches]] [patches.regex] target = "game.lua" -pattern = '''end\n\s+G\.shop_vouchers\:emplace\(card\)\n\s+end''' -position = "after" +pattern = '''card\:start_materialize\(\)\n\s+G\.shop_vouchers\:emplace\(card\)\n\s+end''' +position = "at" payload = ''' + for k, v in pairs(G.GAME.current_round.cry_voucher_stickers) do + card.ability[k] = v + card:set_cost() + end + if G.GAME.current_round.cry_voucher_edition then + card:set_edition(G.GAME.current_round.cry_voucher_edition, true, true) + end + card:start_materialize() + G.shop_vouchers:emplace(card) +end + for i = 1, #G.GAME.current_round.cry_bonusvouchers do if not G.GAME.cry_bonusvouchersused[i] then local card = Card(G.shop_vouchers.T.x + G.shop_vouchers.T.w/2, @@ -131,4 +146,44 @@ for i = 1, #G.GAME.current_round.cry_bonusvouchers do end end ''' + +# control the planet/tarot rates +[[patches]] +[patches.pattern] +target = "functions/UI_definitions.lua" +pattern = ''' + {type = 'Tarot', val = G.GAME.tarot_rate}, + {type = 'Planet', val = G.GAME.planet_rate}, +''' +position = "at" +payload = ''' +{type = 'Tarot', val = G.GAME.tarot_rate*(G.GAME.cry_percrate.tarot/100)}, +{type = 'Planet', val = G.GAME.planet_rate*(G.GAME.cry_percrate.planet/100)}, +''' +match_indent = true + +# fix total rate +[[patches]] +[patches.pattern] +target = "functions/UI_definitions.lua" +pattern = ''' +total_rate = total_rate + G.GAME[v:lower()..'_rate'] +''' +position = "at" +payload = ''' +if not (v:lower() == 'tarot' or v:lower() == 'planet') then + total_rate = total_rate + G.GAME[v:lower()..'_rate'] +else + total_rate = total_rate + ( G.GAME[v:lower()..'_rate'] * (G.GAME.cry_percrate[v:lower()]/100) ) +end +''' +match_indent = true + +# don't check voucher requirements for forced tier 3 voucher pool +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if v.requires then" +position = "at" +payload = "if v.requires and _type ~= 'Tier3' then" match_indent = true \ No newline at end of file diff --git a/smods-old-calc/LICENSE b/Steamodded/LICENSE similarity index 100% rename from smods-old-calc/LICENSE rename to Steamodded/LICENSE diff --git a/smods-old-calc/README.md b/Steamodded/README.md similarity index 100% rename from smods-old-calc/README.md rename to Steamodded/README.md diff --git a/smods-old-calc/TODO b/Steamodded/TODO similarity index 100% rename from smods-old-calc/TODO rename to Steamodded/TODO diff --git a/smods-old-calc/assets/1x/default_achievements.png b/Steamodded/assets/1x/default_achievements.png similarity index 100% rename from smods-old-calc/assets/1x/default_achievements.png rename to Steamodded/assets/1x/default_achievements.png diff --git a/smods-old-calc/assets/1x/mod_tags.png b/Steamodded/assets/1x/mod_tags.png similarity index 100% rename from smods-old-calc/assets/1x/mod_tags.png rename to Steamodded/assets/1x/mod_tags.png diff --git a/smods-old-calc/assets/2x/default_achievements.png b/Steamodded/assets/2x/default_achievements.png similarity index 100% rename from smods-old-calc/assets/2x/default_achievements.png rename to Steamodded/assets/2x/default_achievements.png diff --git a/smods-old-calc/assets/2x/mod_tags.png b/Steamodded/assets/2x/mod_tags.png similarity index 100% rename from smods-old-calc/assets/2x/mod_tags.png rename to Steamodded/assets/2x/mod_tags.png diff --git a/Steamodded/assets/sounds/xchips.ogg b/Steamodded/assets/sounds/xchips.ogg new file mode 100644 index 0000000..ae47dfa Binary files /dev/null and b/Steamodded/assets/sounds/xchips.ogg differ diff --git a/smods-old-calc/config.lua b/Steamodded/config.lua similarity index 100% rename from smods-old-calc/config.lua rename to Steamodded/config.lua diff --git a/smods-old-calc/icon.png b/Steamodded/icon.png similarity index 100% rename from smods-old-calc/icon.png rename to Steamodded/icon.png diff --git a/smods-old-calc/libs/json/init.lua b/Steamodded/libs/json/init.lua similarity index 100% rename from smods-old-calc/libs/json/init.lua rename to Steamodded/libs/json/init.lua diff --git a/smods-old-calc/libs/json/json.lua b/Steamodded/libs/json/json.lua similarity index 100% rename from smods-old-calc/libs/json/json.lua rename to Steamodded/libs/json/json.lua diff --git a/smods-old-calc/libs/nativefs/LICENSE b/Steamodded/libs/nativefs/LICENSE similarity index 100% rename from smods-old-calc/libs/nativefs/LICENSE rename to Steamodded/libs/nativefs/LICENSE diff --git a/smods-old-calc/libs/nativefs/README.md b/Steamodded/libs/nativefs/README.md similarity index 100% rename from smods-old-calc/libs/nativefs/README.md rename to Steamodded/libs/nativefs/README.md diff --git a/smods-old-calc/libs/nativefs/icon.png b/Steamodded/libs/nativefs/icon.png similarity index 100% rename from smods-old-calc/libs/nativefs/icon.png rename to Steamodded/libs/nativefs/icon.png diff --git a/smods-old-calc/libs/nativefs/init.lua b/Steamodded/libs/nativefs/init.lua similarity index 100% rename from smods-old-calc/libs/nativefs/init.lua rename to Steamodded/libs/nativefs/init.lua diff --git a/smods-old-calc/libs/nativefs/manifest.json b/Steamodded/libs/nativefs/manifest.json similarity index 100% rename from smods-old-calc/libs/nativefs/manifest.json rename to Steamodded/libs/nativefs/manifest.json diff --git a/smods-old-calc/libs/nativefs/nativefs.lua b/Steamodded/libs/nativefs/nativefs.lua similarity index 100% rename from smods-old-calc/libs/nativefs/nativefs.lua rename to Steamodded/libs/nativefs/nativefs.lua diff --git a/smods-old-calc/localization/en-us.lua b/Steamodded/localization/en-us.lua similarity index 94% rename from smods-old-calc/localization/en-us.lua rename to Steamodded/localization/en-us.lua index 453723b..e4ff077 100644 --- a/smods-old-calc/localization/en-us.lua +++ b/Steamodded/localization/en-us.lua @@ -117,11 +117,16 @@ return { 'Disabled', 'Enabled', 'Bypass Restrictions' - } + }, + b_deckskins_lc = 'Low Contrast Colors', + b_deckskins_hc = 'High Contrast Colors', + b_deckskins_def = 'Default Colors', }, v_dictionary = { c_types = '#1# Types', cashout_hidden = '...and #1# more', + a_xchips = "X#1# Chips", + a_xchips_minus = "-X#1# Chips", }, } } diff --git a/smods-old-calc/localization/es_419.lua b/Steamodded/localization/es_419.lua similarity index 100% rename from smods-old-calc/localization/es_419.lua rename to Steamodded/localization/es_419.lua diff --git a/smods-old-calc/localization/es_ES.lua b/Steamodded/localization/es_ES.lua similarity index 100% rename from smods-old-calc/localization/es_ES.lua rename to Steamodded/localization/es_ES.lua diff --git a/Steamodded/localization/fr.lua b/Steamodded/localization/fr.lua new file mode 100644 index 0000000..a99338b --- /dev/null +++ b/Steamodded/localization/fr.lua @@ -0,0 +1,132 @@ +return { + descriptions = { + Other = { + load_success = { + text = { + 'Mod chargé', + '{C:green}avec succès!' + } + }, + load_failure_d = { + text = { + 'Dépendances {C:attention}manquantes!', + '#1#', + } + }, + load_failure_c = { + text = { + 'Conflits {C:attention}non résolus!', + '#1#' + } + }, + load_failure_d_c = { + text = { + 'Dépendances {C:attention}manquantes!', + '#1#', + 'Conflits {C:attention}non résolus!', + '#2#' + } + }, + load_failure_o = { + text = { + '{C:attention}Obsolète!{} Steamodded', + 'versions {C:money}0.9.8{} et dessous', + 'ne sont plus supportés.' + } + }, + load_failure_i = { + text = { + '{C:attention}Incompatible!{} Nécessite version', + '#1# de Steamodded,', + 'mais #2# est installé.' + } + }, + load_failure_p = { + text = { + '{C:attention}Conflit de Préfixe!{}', + 'Le préfixe de ce mod est', + 'le même que celui d\'un autre mod.', + '({C:attention}#1#{})' + } + }, + load_failure_m = { + text = { + '{C:attention}Fichier principal manquant!{}', + 'Le fichier principal de ce mod', + 'n\'a pas pu être trouvé.', + '({C:attention}#1#{})' + } + }, + load_disabled = { + text = { + 'Ce mod a été', + '{C:attention}désactivé!{}' + } + } + }, + Edition = { + e_negative_playing_card = { + name = "Négatif", + text = { + "{C:dark_edition}+#1#{} à la taille de la main" + }, + }, + } + }, + misc = { + achievement_names = { + hidden_achievement = "???", + }, + achievement_descriptions = { + hidden_achievement = "Jouez plus pour découvrir!", + }, + dictionary = { + b_mods = 'Mods', + b_mods_cap = 'MODS', + b_modded_version = 'Version Moddé!', + b_steamodded = 'Steamodded', + b_credits = 'Crédits', + b_open_mods_dir = 'Ouvrir le répertoire des mods', + b_no_mods = 'Aucun mod détecté...', + b_mod_list = 'Liste des mods activés', + b_mod_loader = 'Mod Loader', + b_developed_by = 'développé par ', + b_rewrite_by = 'Réécrit par ', + b_github_project = 'Projet Github', + b_github_bugs_1 = 'Vous pouvez signaler des bugs et', + b_github_bugs_2 = 'y faire des contributions.', + b_disable_mod_badges = 'Désactiver les badges de mod', + b_author = 'Auteur', + b_authors = 'Auteurs', + b_unknown = 'Inconnu', + b_lovely_mod = '(Mod Lovely) ', + b_by = ' Par : ', + b_config = "Config", + b_additions = 'Ajouts', + b_stickers = 'Autocollants', + b_achievements = "Succès", + b_applies_stakes_1 = 'Applique ', + b_applies_stakes_2 = '', + b_graphics_mipmap_level = "Niveau Mipmap", + b_browse = 'Parcourir', + b_search_prompt = 'Chercher des mods', + b_search_button = 'Recherche', + b_seeded_unlocks = 'Progression si Seed custom', + b_seeded_unlocks_info = 'Permet la progression et les découvertes pour les parties Seedées.', + ml_achievement_settings = { + 'Désactivé', + 'Activé', + 'Sans restrictions' + }, + b_deckskins_lc = 'Couleurs Faible Contraste', + b_deckskins_hc = 'Couleurs Haut Contraste', + b_deckskins_def = 'Couleurs par défaut', + }, + v_dictionary = { + c_types = '#1# Types', + cashout_hidden = '...et #1# de plus', + a_xchips = "X#1# Jetons", + a_xchips_minus = "-X#1# Jetons", + }, + } +} diff --git a/Steamodded/localization/pt_BR.lua b/Steamodded/localization/pt_BR.lua new file mode 100644 index 0000000..9c41dd0 --- /dev/null +++ b/Steamodded/localization/pt_BR.lua @@ -0,0 +1,127 @@ +return { + descriptions = { + Other = { + load_success = { + text = { + 'Mod carregado', + '{C:green}com sucesso!' + } + }, + load_failure_d = { + text = { + 'Faltam {C:attention}dependências!', + '#1#', + } + }, + load_failure_c = { + text = { + '{C:attention}Conflitos{} não resolvidos!', + '#1#' + } + }, + load_failure_d_c = { + text = { + 'Faltam {C:attention}dependências!', + '#1#', + '{C:attention}Conflitos{} não resolvidos!', + '#2#' + } + }, + load_failure_o = { + text = { + '{C:attention}Desatualizado!{} As versões', + '{C:money}0.9.8{} e abaxido do Steamodded', + 'não são mais suportadas.' + } + }, + load_failure_i = { + text = { + '{C:attention}Incompatível!{} Precisa da versão', + '#1# do Steamodded,', + 'mas a #2# está instalada.' + } + }, + load_failure_p = { + text = { + '{C:attention}Conflito de Prefixo!{}', + 'O prefixo deste mod é', + 'igual ao de outro mod.', + '({C:attention}#1#{})' + } + }, + load_failure_m = { + text = { + '{C:attention}Arquivo Principal Não Encontrado!{}', + 'O arquivo principal deste mod', + 'não pôde ser encontrado.', + '({C:attention}#1#{})' + } + }, + load_disabled = { + text = { + 'Este mod foi', + '{C:attention}desabilitado!{}' + } + } + }, + Edition = { + e_negative_playing_card = { + name = "Negativo", + text = { + "{C:dark_edition}+#1#{} tamanho de mão" + }, + }, + } + }, + misc = { + achievement_names = { + hidden_achievement = "???", + }, + achievement_descriptions = { + hidden_achievement = "Jogue mais para descobrir!", + }, + dictionary = { + b_mods = 'Mods', + b_mods_cap = 'MODS', + b_modded_version = 'Versão Modificada!', + b_steamodded = 'Steamodded', + b_credits = 'Créditos', + b_open_mods_dir = 'Abrir pasta Mods', + b_no_mods = 'Nenhum mod foi detectado...', + b_mod_list = 'Lista de Mods Ativos', + b_mod_loader = 'Mod Loader', + b_developed_by = 'desenvolvido por ', + b_rewrite_by = 'Reescrito por ', + b_github_project = 'Projeto no Github', + b_github_bugs_1 = 'Você pode reportar bugs e', + b_github_bugs_2 = 'submeter contribuições por lá.', + b_disable_mod_badges = 'Desabilitar Ícones de mods', + b_author = 'Autor', + b_authors = 'Autores', + b_unknown = 'Desconhecido', + b_lovely_mod = '(Mod do Lovely) ', + b_by = ' Por: ', + b_config = "Config.", + b_additions = 'Adições', + b_stickers = 'Adesivos', + b_achievements = "Conquistas", + b_applies_stakes_1 = 'Aplica ', + b_applies_stakes_2 = '', + b_graphics_mipmap_level = "Nível de Mipmap", + b_browse = 'Navegar', + b_search_prompt = 'Procurar por mods', + b_search_button = 'Procurar', + b_seeded_unlocks = 'Desbloquear com código', + b_seeded_unlocks_info = 'Permite descobertas e desbloqueios em tentativas com código', + ml_achievement_settings = { + 'Desabilitado', + 'Habilitado', + 'Ignorar Restrições' + } + }, + v_dictionary = { + c_types = '#1# Tipos', + cashout_hidden = '...e mais #1#', + }, + } +} diff --git a/smods-old-calc/localization/zh_CN.lua b/Steamodded/localization/zh_CN.lua similarity index 100% rename from smods-old-calc/localization/zh_CN.lua rename to Steamodded/localization/zh_CN.lua diff --git a/smods-old-calc/manifest.json b/Steamodded/manifest.json similarity index 100% rename from smods-old-calc/manifest.json rename to Steamodded/manifest.json diff --git a/smods-old-calc/src/compat_0_9_8.lua b/Steamodded/src/compat_0_9_8.lua similarity index 100% rename from smods-old-calc/src/compat_0_9_8.lua rename to Steamodded/src/compat_0_9_8.lua diff --git a/smods-old-calc/src/core.lua b/Steamodded/src/core.lua similarity index 98% rename from smods-old-calc/src/core.lua rename to Steamodded/src/core.lua index 146b3ef..e44e824 100644 --- a/smods-old-calc/src/core.lua +++ b/Steamodded/src/core.lua @@ -7,6 +7,7 @@ SMODS.id = 'Steamodded' SMODS.version = MODDED_VERSION:gsub('%-STEAMODDED', '') SMODS.can_load = true SMODS.meta_mod = true +SMODS.config_file = 'config.lua' -- Include lovely and nativefs modules local nativefs = require "nativefs" diff --git a/smods-old-calc/src/crash_handler.lua b/Steamodded/src/crash_handler.lua similarity index 99% rename from smods-old-calc/src/crash_handler.lua rename to Steamodded/src/crash_handler.lua index f43825e..e762ad1 100644 --- a/smods-old-calc/src/crash_handler.lua +++ b/Steamodded/src/crash_handler.lua @@ -498,7 +498,7 @@ function getDebugInfoForCrash() local versionFile = love.filesystem.read("version.jkr") if versionFile then version = versionFile:match("[^\n]*") .. " (best guess)" - else + else version = "???" end end @@ -509,18 +509,18 @@ function getDebugInfoForCrash() modded_version = reqVersion else modded_version = "???" - end + end end - + local info = "Additional Context:\nBalatro Version: " .. version .. "\nModded Version: " .. (modded_version) local major, minor, revision, codename = love.getVersion() info = info .. string.format("\nLÖVE Version: %d.%d.%d", major, minor, revision) - local lovely_success, lovely = pcall(require, "lovely") if lovely_success then info = info .. "\nLovely Version: " .. lovely.version end + info = info .. "\nPlatform: " .. (love.system.getOS() or "???") if SMODS and SMODS.Mods then local mod_strings = "" local lovely_strings = "" diff --git a/smods-old-calc/src/game_object.lua b/Steamodded/src/game_object.lua similarity index 89% rename from smods-old-calc/src/game_object.lua rename to Steamodded/src/game_object.lua index f07fc3b..7513cd5 100644 --- a/smods-old-calc/src/game_object.lua +++ b/Steamodded/src/game_object.lua @@ -73,7 +73,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. if atlas_cfg ~= false then if type(atlas_cfg) ~= 'table' then atlas_cfg = {} end for _, v in ipairs({ 'atlas', 'hc_atlas', 'lc_atlas', 'hc_ui_atlas', 'lc_ui_atlas', 'sticker_atlas' }) do - if rawget(obj, v) then SMODS.modify_key(obj, mod and mod.prefix, atlas_cfg[v], v) end + if rawget(obj, v) then SMODS.modify_key(obj, mod and mod.prefix, atlas_cfg, v) end end end local shader_cfg = obj.prefix_config.shader @@ -135,7 +135,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. if type(self.dependencies) == 'string' then self.dependencies = { self.dependencies } end for _, v in ipairs(self.dependencies) do self.mod.optional_dependencies[v] = true - if not SMODS.Mods[v] or not SMODS.Mods[v].can_load then keep = false end + if not next(SMODS.find_mod(v)) then keep = false end end end return keep @@ -521,6 +521,8 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. return play_sound_ref(sound_code, per, vol) end + SMODS.Sound{ key = 'xchips', path = 'xchips.ogg'} + ------------------------------------------------------------------------------------------------- ----- API CODE GameObject.Stake ------------------------------------------------------------------------------------------------- @@ -1023,7 +1025,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. -- Should "cards" be formatted as `{[
] = true}` or {
}? -- Changing "cards" and "pools" wouldn't be hard to do, just depends on preferred format if ((self.pools and self.pools[k]) or (v.cards and v.cards[self.key])) then - SMODS.ObjectTypes[k]:inject_card(self) + v:inject_card(self) end end end, @@ -1032,7 +1034,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. SMODS.remove_pool(G.P_CENTER_POOLS[self.set], self.key) for k, v in pairs(SMODS.ObjectTypes) do if ((self.pools and self.pools[k]) or (v.cards and v.cards[self.key])) then - SMODS.ObjectTypes[k]:remove_card(self) + v:delete_card(self) end end local j @@ -1043,7 +1045,13 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. self = nil return true end, + create_fake_card = function(self) + return { ability = copy_table(self.config), fake_card = true } + end, generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) + if not card then + card = self:create_fake_card() + end local target = { type = 'descriptions', key = self.key, @@ -1062,9 +1070,9 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. target.text_colour = res.text_colour end if desc_nodes == full_UI_table.main and not full_UI_table.name then - full_UI_table.name = self.set == 'Enhanced' and 'temp_value' or localize { type = 'name', set = target.set, key = target.key, nodes = full_UI_table.name } + full_UI_table.name = self.set == 'Enhanced' and 'temp_value' or localize { type = 'name', set = target.set, key = res.name_key or target.key, nodes = full_UI_table.name, vars = res.name_vars or target.vars or {} } elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name and self.set ~= 'Enhanced' then - desc_nodes.name = localize{type = 'name_text', key = target.key, set = target.set } + desc_nodes.name = localize{type = 'name_text', key = res.name_key or target.key, set = target.set } end if specific_vars and specific_vars.debuffed and not res.replace_debuff then target = { type = 'other', key = 'debuffed_' .. @@ -1155,6 +1163,11 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. SMODS.remove_pool(G.P_CENTER_POOLS['Consumeables'], self.key) SMODS.Consumable.super.delete(self) end, + create_fake_card = function(self) + local ret = SMODS.Center.create_fake_card(self) + ret.ability.consumeable = copy_table(self.config) + return ret + end, loc_vars = function(self, info_queue) return {} end @@ -1193,6 +1206,20 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. } } + SMODS.Voucher:take_ownership('observatory', { + calculate = function(self, card, context) + if + context.other_consumeable and + context.other_consumeable.ability.set == 'Planet' and + context.other_consumeable.ability.consumeable.hand_type == context.scoring_name + then + return { + x_mult = card.ability.extra + } + end + end, + }) + ------------------------------------------------------------------------------------------------- ------- API CODE GameObject.Center.Back ------------------------------------------------------------------------------------------------- @@ -1222,7 +1249,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. local function stake_mod(stake) return { inject = function(self) - self.unlock_condition.stake = SMODS.Stakes[stake].stake_level + self.unlock_condition.stake = SMODS.Stakes[stake].order SMODS.Back.inject(self) end } @@ -1259,6 +1286,9 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. return { vars = {card.ability.choose, card.ability.extra} } end, generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) + if not card then + card = self:create_fake_card() + end local target = { type = 'other', key = self.key, @@ -1274,9 +1304,9 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. target.text_colour = res.text_colour end if desc_nodes == full_UI_table.main and not full_UI_table.name then - full_UI_table.name = localize{type = 'name', set = 'Other', key = target.key, nodes = full_UI_table.name} + full_UI_table.name = localize{type = 'name', set = 'Other', key = res.name_key or target.key, nodes = full_UI_table.name, vars = res.name_vars or target.vars or {}} elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name then - desc_nodes.name = localize{type = 'name_text', key = target.key, set = 'Other' } + desc_nodes.name = localize{type = 'name_text', key = res.name_key or target.key, set = 'Other' } end localize(target) desc_nodes.background_colour = res.background_colour @@ -1540,7 +1570,12 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. set = 'Undiscovered Sprite', -- this is more consistent and allows for extension process_loc_text = function() end, - inject = function() end, + inject = function(self) + if self.overlay_pos then + self.overlay_sprite = Sprite(0, 0, G.CARD_W, G.CARD_H, G.ASSET_ATLAS[self.atlas], self.overlay_pos) + self.no_overlay = true + end + end, prefix_config = { key = false }, required_params = { 'key', @@ -1647,8 +1682,45 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. SMODS.process_loc_text(G.localization.descriptions.Other, self.key:lower() .. '_seal', self.loc_txt) SMODS.process_loc_text(G.localization.misc.labels, self.key:lower() .. '_seal', self.loc_txt, 'label') end, - get_obj = function(self, key) return G.P_SEALS[key] end + get_obj = function(self, key) return G.P_SEALS[key] end, + generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) + local target = { + type = 'other', + set = 'Other', + key = self.key:lower()..'_seal', + nodes = desc_nodes, + vars = specific_vars or {}, + } + local res = {} + if self.loc_vars and type(self.loc_vars) == 'function' then + res = self:loc_vars(info_queue, card) or {} + target.vars = res.vars or target.vars + target.key = res.key or target.key + if res.set then + target.type = 'descriptions' + target.set = res.set + end + target.scale = res.scale + target.text_colour = res.text_colour + end + if desc_nodes == full_UI_table.main and not full_UI_table.name then + full_UI_table.name = localize { type = 'name', set = target.set, key = res.name_key or target.key, nodes = full_UI_table.name, vars = res.name_vars or target.vars or {} } + elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name then + desc_nodes.name = localize{type = 'name_text', key = res.name_key or target.key, set = target.set } + end + if res.main_start then + desc_nodes[#desc_nodes + 1] = res.main_start + end + localize(target) + if res.main_end then + desc_nodes[#desc_nodes + 1] = res.main_end + end + desc_nodes.background_colour = res.background_colour + end, } + for _,v in ipairs { 'Purple', 'Gold', 'Blue', 'Red' } do + SMODS.Seal:take_ownership(v, { badge_colour = G.C[v:upper()], pos = G.shared_seals[v].sprite_pos, generate_ui = SMODS.Seal.generate_ui }) + end ------------------------------------------------------------------------------------------------- ----- API CODE GameObject.Suit @@ -1699,13 +1771,44 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. self.used_card_keys[self.card_key] = true self.max_nominal.value = self.max_nominal.value + 0.01 self.suit_nominal = self.max_nominal.value + local def = 'default_'..self.key + if G.COLLABS.options[self.key] == nil then + G.COLLABS.options[self.key] = {def} + end SMODS.Suit.super.register(self) + self:create_default_deck_skin() end, inject = function(self) for _, rank in pairs(SMODS.Ranks) do SMODS.inject_p_card(self, rank) end end, + create_default_deck_skin = function(self) + if self.key ~= "Hearts" and self.key ~= "Diamonds" and self.key ~= "Clubs" and self.key ~= "Spades" then + local contrast = self.lc_atlas ~= self.hc_atlas or not rawget(self, 'hc_atlas') + SMODS.DeckSkin{ + key = 'default_'..self.key, + prefix_config = { key = false }, + suit = self.key, + palettes = { + { + key = contrast and 'lc' or 'def', + ranks = {'Ace', 'King', 'Queen', 'Jack', '10', '9', '8', '7', '6', '5', '4', '3', '2'}, + display_ranks = {'King', 'Queen', 'Jack'}, + atlas = self.lc_atlas, + pos_style = 'deck' + }, + contrast and { + key = 'hc', + ranks = {'Ace', 'King', 'Queen', 'Jack', '10', '9', '8', '7', '6', '5', '4', '3', '2'}, + display_ranks = {'King', 'Queen', 'Jack'}, + atlas = self.hc_atlas, + pos_style = 'deck' + } or nil, + } + } + end + end, delete = function(self) local i for j, v in ipairs(self.obj_buffer) do @@ -2090,7 +2193,6 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. func = function() local cards = {} for i = 1, card.ability.extra do - cards[i] = true -- TODO preserve suit vanilla RNG local _suit, _rank = pseudorandom_element(SMODS.Suits, pseudoseed('grim_create')).card_key, 'A' @@ -2100,7 +2202,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. cen_pool[#cen_pool + 1] = v end end - create_playing_card({ + cards[i] = 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 }) @@ -2110,9 +2212,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. 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 + SMODS.calculate_context({ remove_playing_cards = true, removed = destroyed_cards }) end, }) SMODS.Consumable:take_ownership('familiar', { @@ -2125,7 +2225,6 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. func = function() local cards = {} for i = 1, card.ability.extra do - cards[i] = true -- TODO preserve suit vanilla RNG local faces = {} for _, v in ipairs(SMODS.Rank.obj_buffer) do @@ -2141,7 +2240,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. cen_pool[#cen_pool + 1] = v end end - create_playing_card({ + cards[i] = 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 }) @@ -2151,9 +2250,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. 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 + SMODS.calculate_context({ remove_playing_cards = true, removed = destroyed_cards }) end, }) SMODS.Consumable:take_ownership('incantation', { @@ -2166,7 +2263,6 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. func = function() local cards = {} for i = 1, card.ability.extra do - cards[i] = true -- TODO preserve suit vanilla RNG local numbers = {} for _, v in ipairs(SMODS.Rank.obj_buffer) do @@ -2182,7 +2278,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. cen_pool[#cen_pool + 1] = v end end - create_playing_card({ + cards[i] = 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 }) @@ -2192,90 +2288,214 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. 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 + SMODS.calculate_context({ remove_playing_cards = true, removed = destroyed_cards }) + end, }) ------------------------------------------------------------------------------------------------- ----- API CODE GameObject.DeckSkin ------------------------------------------------------------------------------------------------- - local deck_skin_count_by_suit = {} SMODS.DeckSkins = {} - SMODS.DeckSkin =SMODS.GameObject:extend { + SMODS.DeckSkin = SMODS.GameObject:extend { obj_table = SMODS.DeckSkins, obj_buffer = {}, required_params = { 'key', 'suit', - 'ranks', - 'lc_atlas', }, - posStyle = 'deck', + pos_style = 'deck', set = 'DeckSkin', + count_by_suit = {}, process_loc_text = function(self) - if G.localization.misc.collabs[self.suit] == nil then - G.localization.misc.collabs[self.suit] = {["1"] = 'Default'} + G.localization.misc.collabs[self.suit] = G.localization.misc.collabs[self.suit] or {["1"] = 'Default'} + G.localization.misc.collab_palettes = G.localization.misc.collab_palettes or {} + G.localization.misc.collab_palettes[self.key] = G.localization.misc.collab_palettes[self.key] or {} + if not self.outdated then + for i, p in ipairs(self.palettes) do + if p.loc_txt then + SMODS.process_loc_text(G.localization.misc.collab_palettes[self.key], i..'', p.loc_txt) + elseif G.localization.misc.collab_palettes[self.key][i..''] then + else + G.localization.misc.collab_palettes[self.key][i..''] = ({ lc = true, hc = true, def = true })[p.key] and localize('b_deckskins_'..p.key) or p.key + end + end + else + if self.lc_atlas == self.hc_atlas then + G.localization.misc.collab_palettes[self.key]['1'] = localize('b_deckskins_def') + else + G.localization.misc.collab_palettes[self.key]['1'] = localize('b_deckskins_lc') + G.localization.misc.collab_palettes[self.key]['2'] = localize('b_deckskins_hc') + end end + if not self.loc_txt then G.localization.misc.collabs[self.suit][self.suit_index .. ''] = G.localization.misc.collabs[self.suit][self.suit_index .. ''] or self.key return end + SMODS.process_loc_text(G.localization.misc.collabs[self.suit], self.suit_index..'', self.loc_txt) end, - register = function (self) + register = function(self) if self.registered then sendWarnMessage(('Detected duplicate register call on DeckSkin %s'):format(self.key), self.set) return end if self:check_dependencies() then - self.hc_atlas = self.hc_atlas or self.lc_atlas + assert(not self.palettes ~= not (self.ranks and self.lc_atlas), + ('Error loading DeckSkin %s! Please define your palettes or use the old formatting'):format(self.key)) + -- for compat with old format + self.pos_style = self.posStyle or self.pos_style + if self.palettes and not (self.ranks and self.lc_atlas) then + local temp_palettes = self.palettes + self.palettes = {} + -- ensure all palettes are valid + for _,v in ipairs(temp_palettes) do assert(self:add_palette(v)) end - if not (self.posStyle == 'collab' or self.posStyle == 'suit' or self.posStyle == 'deck') then - sendWarnMessage(('%s is not a valid posStyle on DeckSkin %s. Supported posStyle values are \'collab\', \'suit\' and \'deck\''):format(self.posStyle, self.key), self.set) + elseif not self.palettes and (self.ranks and self.lc_atlas) then + sendWarnMessage(('Old DeckSkin formatting detected on DeckSkin %s!'):format(self.key), self.set) + self.outdated = true + + self.hc_atlas = self.hc_atlas or self.lc_atlas + local valid_pos_styles = { ranks = true, collab = true, suit = true, deck = true} + assert(valid_pos_styles[self.pos_style], + ('%s is not a valid pos_style on DeckSkin %s. Supported pos_style values are \'ranks\', \'collab\', \'suit\' and \'deck\'') + :format(self.pos_style, self.key), self.set) end - self.obj_table[self.key] = self - - if deck_skin_count_by_suit[self.suit] then - self.suit_index = deck_skin_count_by_suit[self.suit] + 1 - else - --start at 2 for default - self.suit_index = 2 - end - deck_skin_count_by_suit[self.suit] = self.suit_index - + self.count_by_suit[self.suit] = (self.count_by_suit[self.suit] or 0) + 1 + self.suit_index = self.count_by_suit[self.suit] self.obj_buffer[#self.obj_buffer + 1] = self.key + self.obj_table[self.key] = self self.registered = true end end, - inject = function (self) - if G.COLLABS.options[self.suit] == nil then - G.COLLABS.options[self.suit] = {'default'} + pre_inject_class = function(self) + G.COLLABS.options = {} + end, + inject = function(self) + local def = 'default_'..self.suit + G.COLLABS.options[self.suit] = G.COLLABS.options[self.suit] or {def} + G.COLLABS.colour_palettes = G.COLLABS.colour_palettes or {} + G.COLLABS.colour_palettes[self.key] = {} + if self.palettes then + for _,v in ipairs(self.palettes) do + table.insert(G.COLLABS.colour_palettes[self.key], v.key) + end + else + if self.lc_atlas == self.hc_atlas then + table.insert(G.COLLABS.colour_palettes[self.key], 'lc') + else + table.insert(G.COLLABS.colour_palettes[self.key], 'lc') + table.insert(G.COLLABS.colour_palettes[self.key], 'hc') + end end - + G.COLLABS.options[self.suit] = G.COLLABS.options[self.suit] or {} local options = G.COLLABS.options[self.suit] - options[#options + 1] = self.key + if self.key ~= def then + options[#options + 1] = self.key + end + end, + add_palette = function(self, palette) + if not (self and self.key) then return false, 'Invalid DeckSkin object' end + local required_values = { 'key', 'ranks', 'atlas' } + -- for compat with old format + palette.pos_style = palette.pos_style or palette.posStyle or 'deck' + for _,v in ipairs(required_values) do + if not palette[v] then + return false, ('Missing required value "%s" in Palette "%s" on DeckSkin "%s"'):format(v, palette.key or '(unknown)', self.key) + end + end + table.insert(self.palettes, palette) + self.palette_map = self.palette_map or {} + self.palette_map[palette.key] = palette + return true + end, + get_palette_loc_options = function(key, suit) + if type(key) == "number" then + key = G.COLLABS.options[suit][key] + end + + local conv_palette_loc_options = {} + for k, v in pairs(G.localization.misc.collab_palettes[key]) do + conv_palette_loc_options[tonumber(k)] = v + end + + return conv_palette_loc_options + end, + post_inject_class = function(self) + for _, k in ipairs(SMODS.Suit.obj_buffer) do + local val = G.SETTINGS.CUSTOM_DECK.Collabs[k] or '' + if not self.obj_table[val] then + G.SETTINGS.CUSTOM_DECK.Collabs[k] = 'default_'..k + end + local skin = self.obj_table[G.SETTINGS.CUSTOM_DECK.Collabs[k]] + local pal = G.SETTINGS.colour_palettes[k] + if not skin.outdated and skin.palette_map and not skin.palette_map[pal] then + G.SETTINGS.colour_palettes[k] = skin.palettes[1].key + end + end + end } for suitName, options in pairs(G.COLLABS.options) do - --start at 2 to skip default + SMODS.DeckSkin{ + key = options[1]..'_'..suitName, + suit = suitName, + palettes = { + { + key = 'lc', + ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', "King", "Ace",}, + display_ranks = {'King', 'Queen', 'Jack'}, + atlas = 'cards_1', + pos_style = 'deck' + }, + { + key = 'hc', + ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', "King", "Ace",}, + display_ranks = {'King', 'Queen', 'Jack'}, + atlas = 'cards_2', + pos_style = 'deck', + hc_default = true, + }, + } + } + end + for suitName, options in pairs(G.COLLABS.options) do for i = 2, #options do SMODS.DeckSkin{ key = options[i], suit = suitName, - ranks = {'Jack', 'Queen', 'King'}, - lc_atlas = options[i] .. '_1', - hc_atlas = options[i] .. '_2', - posStyle = 'collab' + palettes = { + { + key = 'lc', + ranks = {'King', 'Queen', 'Jack'}, + atlas = options[i] .. '_1', + pos_style = 'collab' + }, + { + key = 'hc', + ranks = {'King', 'Queen', 'Jack'}, + atlas = options[i] .. '_2', + pos_style = 'collab', + hc_default = true, + }, + }, } end end - --Clear 'Friends of Jimbo' skins so they can be handled via the same pipeline - G.COLLABS.options = {} + if not G.SETTINGS.colour_palettes then + local val = G.SETTINGS.colourblind_option and 'hc' or 'lc' + G.SETTINGS.colour_palettes = { + Spades = val, + Hearts = val, + Clubs = val, + Diamonds = val, + } + G:save_settings() + end ------------------------------------------------------------------------------------------------- ----- API CODE GameObject.PokerHand @@ -2504,6 +2724,9 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. SMODS.insert_pool(G.P_CENTER_POOLS[self.set], self) end, generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table) + if not card then + card = { config = copy_table(self.config), fake_tag = true} + end local target = { type = 'descriptions', key = self.key, @@ -2522,9 +2745,9 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. target.text_colour = res.text_colour end if desc_nodes == full_UI_table.main and not full_UI_table.name then - full_UI_table.name = localize { type = 'name', set = target.set, key = target.key, nodes = full_UI_table.name } + full_UI_table.name = localize { type = 'name', set = target.set, key = res.name_key or target.key, nodes = full_UI_table.name, vars = res.name_vars or res.vars or {} } elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name then - desc_nodes.name = localize{type = 'name_text', key = target.key, set = target.set } + desc_nodes.name = localize{type = 'name_text', key = res.name_key or target.key, set = target.set } end if res.main_start then desc_nodes[#desc_nodes + 1] = res.main_start @@ -2609,7 +2832,7 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. inject = function(self) SMODS.Sticker.inject(self) G.shared_sticker_eternal = self.sticker_sprite - end + end, } SMODS.Sticker{ @@ -2630,6 +2853,11 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. inject = function(self) SMODS.Sticker.inject(self) G.shared_sticker_perishable = self.sticker_sprite + end, + calculate = function(self, card, context) + if context.end_of_round and not context.repetition and not context.individual then + card:calculate_perishable() + end end } @@ -2651,6 +2879,11 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. inject = function(self) SMODS.Sticker.inject(self) G.shared_sticker_rental = self.sticker_sprite + end, + calculate = function(self, card, context) + if context.end_of_round and not context.repetition and not context.individual then + card:calculate_rental() + end end } @@ -2862,6 +3095,13 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. end, loc_vars = function(self) return { vars = { self.config.chips } } + end, + calculate = function(self, card, context) + if context.pre_joker or (context.main_scoring and context.cardarea == G.play) then + return { + chips = card.edition.chips + } + end end }) SMODS.Edition:take_ownership('holo', { @@ -2886,6 +3126,13 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. end, loc_vars = function(self) return { vars = { self.config.mult } } + end, + calculate = function(self, card, context) + if context.pre_joker or (context.main_scoring and context.cardarea == G.play) then + return { + mult = card.edition.mult + } + end end }) SMODS.Edition:take_ownership('polychrome', { @@ -2910,6 +3157,13 @@ Set `prefix_config.key = false` on your object instead.]]):format(obj.key), obj. end, loc_vars = function(self) return { vars = { self.config.x_mult } } + end, + calculate = function(self, card, context) + if context.post_joker or (context.main_scoring and context.cardarea == G.play) then + return { + x_mult = card.edition.x_mult + } + end end }) SMODS.Edition:take_ownership('negative', { diff --git a/smods-old-calc/src/index.lua b/Steamodded/src/index.lua similarity index 100% rename from smods-old-calc/src/index.lua rename to Steamodded/src/index.lua diff --git a/smods-old-calc/src/loader.lua b/Steamodded/src/loader.lua similarity index 99% rename from smods-old-calc/src/loader.lua rename to Steamodded/src/loader.lua index 231e630..fb429d1 100644 --- a/smods-old-calc/src/loader.lua +++ b/Steamodded/src/loader.lua @@ -157,6 +157,7 @@ function loadMods(modsDirectory) end end}, main_file = { type = 'string', required = true }, + config_file = {type = 'string', default = 'config.lua' }, __ = { check = function(mod) if SMODS.Mods[mod.id] then error('dupe') end end}, @@ -583,6 +584,7 @@ function loadMods(modsDirectory) end end end + SMODS.get_optional_features() -- compat after loading mods if SMODS.compat_0_9_8.load_done then -- Invasive change to Card:generate_UIBox_ability_table() diff --git a/smods-old-calc/src/logging.lua b/Steamodded/src/logging.lua similarity index 97% rename from smods-old-calc/src/logging.lua rename to Steamodded/src/logging.lua index e8d7e00..001ed9c 100644 --- a/smods-old-calc/src/logging.lua +++ b/Steamodded/src/logging.lua @@ -3,7 +3,7 @@ function initializeSocketConnection() local socket = require("socket") - client = socket.connect("localhost", 12345) + client = socket.connect("localhost", 53153) if not client then print("Failed to connect to the debug server") end diff --git a/smods-old-calc/src/overrides.lua b/Steamodded/src/overrides.lua similarity index 88% rename from smods-old-calc/src/overrides.lua rename to Steamodded/src/overrides.lua index dd52a29..139a35d 100644 --- a/smods-old-calc/src/overrides.lua +++ b/Steamodded/src/overrides.lua @@ -738,9 +738,20 @@ function G.UIDEF.deck_preview(args) for k, v in ipairs(suit_map) do if not hidden_suits[v] then - local t_s = Sprite(0, 0, 0.3, 0.3, - G.ASSET_ATLAS[SMODS.Suits[v][G.SETTINGS.colourblind_option and "hc_ui_atlas" or "lc_ui_atlas"]] or - G.ASSET_ATLAS[("ui_" .. (G.SETTINGS.colourblind_option and "2" or "1"))], SMODS.Suits[v].ui_pos) + local deckskin = SMODS.DeckSkins[G.SETTINGS.CUSTOM_DECK.Collabs[v]] + local palette = deckskin.palette_map and deckskin.palette_map[G.SETTINGS.colour_palettes[v] or ''] or (deckskin.palettes or {})[1] + local t_s + if palette and palette.suit_icon and palette.suit_icon.atlas then + local _x = (v == 'Spades' and 3) or (v == 'Hearts' and 0) or (v == 'Clubs' and 2) or (v == 'Diamonds' and 1) + t_s = Sprite(0,0,0.3,0.3,G.ASSET_ATLAS[palette.suit_icon.atlas or 'ui_1'], (type(palette.suit_icon.pos) == "number" and {x=_x, y=palette.suit_icon.pos}) or palette.suit_icon.pos or {x=_x, y=0}) + elseif G.SETTINGS.colour_palettes[v] == 'lc' or G.SETTINGS.colour_palettes[v] == 'hc' then + t_s = Sprite(0, 0, 0.3, 0.3, + G.ASSET_ATLAS[SMODS.Suits[v][G.SETTINGS.colour_palettes[v] == 'hc' and "hc_ui_atlas" or G.SETTINGS.colour_palettes[v] == 'lc' and "lc_ui_atlas"]] or + G.ASSET_ATLAS[("ui_" .. (G.SETTINGS.colourblind_option and "2" or "1"))], SMODS.Suits[v].ui_pos) + else + t_s = Sprite(0, 0, 0.3, 0.3, G.ASSET_ATLAS[("ui_" .. (G.SETTINGS.colourblind_option and "2" or "1"))], SMODS.Suits[v].ui_pos) + end + t_s.states.drag.can = false t_s.states.hover.can = false t_s.states.collide.can = false @@ -780,6 +791,40 @@ function G.UIDEF.deck_preview(args) return t end +function tally_sprite(pos, value, tooltip, suit) + local text_colour = G.C.BLACK + if type(value) == "table" and value[1].string==value[2].string then + text_colour = value[1].colour or G.C.WHITE + value = value[1].string + end + local deckskin = suit and SMODS.DeckSkins[G.SETTINGS.CUSTOM_DECK.Collabs[suit]] + local palette = deckskin and (deckskin.palette_map and deckskin.palette_map[G.SETTINGS.colour_palettes[suit] or ''] or (deckskin.palettes or {})[1]) + local t_s + if palette and palette.suit_icon and palette.suit_icon.atlas then + local _x = (suit == 'Spades' and 3) or (suit == 'Hearts' and 0) or (suit == 'Clubs' and 2) or (suit == 'Diamonds' and 1) + t_s = Sprite(0,0,0.3,0.3,G.ASSET_ATLAS[palette.suit_icon.atlas or 'ui_1'], (type(palette.suit_icon.pos) == "number" and {x=_x, y=palette.suit_icon.pos}) or palette.suit_icon.pos or {x=_x, y=0}) + elseif suit and (G.SETTINGS.colour_palettes[suit] == 'lc' or G.SETTINGS.colour_palettes[suit] == 'hc') then + t_s = Sprite(0, 0, 0.3, 0.3, + G.ASSET_ATLAS[SMODS.Suits[suit][G.SETTINGS.colour_palettes[suit] == 'hc' and "hc_ui_atlas" or G.SETTINGS.colour_palettes[suit] == 'lc' and "lc_ui_atlas"]] or + G.ASSET_ATLAS[("ui_" .. (G.SETTINGS.colourblind_option and "2" or "1"))], SMODS.Suits[suit].ui_pos) + else + t_s = Sprite(0,0,0.5,0.5, suit and G.ASSET_ATLAS[SMODS.Suits[suit][G.SETTINGS.colourblind_option and "hc_ui_atlas" or "lc_ui_atlas"]] or G.ASSET_ATLAS[("ui_"..(G.SETTINGS.colourblind_option and "2" or "1"))], {x=pos.x or 0, y=pos.y or 0}) + end + t_s.states.drag.can = false + t_s.states.hover.can = false + t_s.states.collide.can = false + return + {n=G.UIT.C, config={align = "cm", padding = 0.07,force_focus = true, focus_args = {type = 'tally_sprite'}, tooltip = {text = tooltip}}, nodes={ + {n=G.UIT.R, config={align = "cm", r = 0.1, padding = 0.04, emboss = 0.05, colour = G.C.JOKER_GREY}, nodes={ + {n=G.UIT.O, config={w=0.5,h=0.5 ,can_collide = false, object = t_s, tooltip = {text = tooltip}}} + }}, + {n=G.UIT.R, config={align = "cm"}, nodes={ + type(value) == "table" and {n=G.UIT.O, config={object = DynaText({string = value, colours = {G.C.RED}, scale = 0.4, silent = true, shadow = true, pop_in_rate = 10, pop_delay = 4})}} or + {n=G.UIT.T, config={text = value or 'NIL',colour = text_colour, scale = 0.4, shadow = true}}, + }}, + }} +end + function G.UIDEF.view_deck(unplayed_only) local deck_tables = {} remove_nils(G.playing_cards) @@ -896,17 +941,19 @@ function G.UIDEF.view_deck(unplayed_only) local rank_cols = {} for i = #rank_name_mapping, 1, -1 do - local mod_delta = mod_rank_tallies[i] ~= rank_tallies[i] - rank_cols[#rank_cols + 1] = {n = G.UIT.R, config = {align = "cm", padding = 0.07}, nodes = { - {n = G.UIT.C, config = {align = "cm", r = 0.1, padding = 0.04, emboss = 0.04, minw = 0.5, colour = G.C.L_BLACK}, nodes = { - {n = G.UIT.T, config = {text = SMODS.Ranks[rank_name_mapping[i]].shorthand, colour = G.C.JOKER_GREY, scale = 0.35, shadow = true}},}}, - {n = G.UIT.C, config = {align = "cr", minw = 0.4}, nodes = { - mod_delta and {n = G.UIT.O, config = { - object = DynaText({ - string = { { string = '' .. rank_tallies[i], colour = flip_col }, { string = '' .. mod_rank_tallies[i], colour = G.C.BLUE } }, - colours = { G.C.RED }, scale = 0.4, y_offset = -2, silent = true, shadow = true, pop_in_rate = 10, pop_delay = 4 - })}} - or {n = G.UIT.T, config = {text = rank_tallies[rank_name_mapping[i]], colour = flip_col, scale = 0.45, shadow = true } },}}}} + if rank_tallies[rank_name_mapping[i]] ~= 0 or not SMODS.Ranks[rank_name_mapping[i]].in_pool or SMODS.Ranks[rank_name_mapping[i]]:in_pool({suit=''}) then + local mod_delta = mod_rank_tallies[rank_name_mapping[i]] ~= rank_tallies[rank_name_mapping[i]] + rank_cols[#rank_cols + 1] = {n = G.UIT.R, config = {align = "cm", padding = 0.07}, nodes = { + {n = G.UIT.C, config = {align = "cm", r = 0.1, padding = 0.04, emboss = 0.04, minw = 0.5, colour = G.C.L_BLACK}, nodes = { + {n = G.UIT.T, config = {text = SMODS.Ranks[rank_name_mapping[i]].shorthand, colour = G.C.JOKER_GREY, scale = 0.35, shadow = true}},}}, + {n = G.UIT.C, config = {align = "cr", minw = 0.4}, nodes = { + mod_delta and {n = G.UIT.O, config = { + object = DynaText({ + string = { { string = '' .. rank_tallies[rank_name_mapping[i]], colour = flip_col }, { string = '' .. mod_rank_tallies[rank_name_mapping[i]], colour = G.C.BLUE } }, + colours = { G.C.RED }, scale = 0.4, y_offset = -2, silent = true, shadow = true, pop_in_rate = 10, pop_delay = 4 + })}} + or {n = G.UIT.T, config = {text = rank_tallies[rank_name_mapping[i]], colour = flip_col, scale = 0.45, shadow = true } },}}}} + end end local tally_ui = { @@ -1471,18 +1518,18 @@ function poll_edition(_key, _mod, _no_neg, _guaranteed, _options) return nil end -local cge = Card.get_edition -function Card:get_edition() - if self.ability.extra_enhancement then return end - local ret = cge(self) - if self.edition and self.edition.key then - local ed = SMODS.Centers[self.edition.key] - if ed.calculate and type(ed.calculate) == 'function' then - ed:calculate(self, {edition_main = true, edition_val = ret}) - end - end - return ret -end +-- local cge = Card.get_edition +-- function Card:get_edition() +-- if self.ability.extra_enhancement then return end +-- local ret = cge(self) +-- if self.edition and self.edition.key then +-- local ed = SMODS.Centers[self.edition.key] +-- if ed.calculate and type(ed.calculate) == 'function' then +-- ed:calculate(self, {edition_main = true, edition_val = ret}) +-- end +-- end +-- return ret +-- end function get_joker_win_sticker(_center, index) local joker_usage = G.PROFILES[G.SETTINGS.profile].joker_usage[_center.key] or {} @@ -1639,94 +1686,6 @@ function get_pack(_key, _type) if not center then center = G.P_CENTERS['p_buffoon_normal_1'] end return center end ---#region joker retrigger API -local cj = Card.calculate_joker -function Card:calculate_joker(context) - local ret, triggered = cj(self, context) - --Copy ret table before it gets modified - local _ret = ret - if type(ret) == 'table' then - _ret = {} - for k, v in pairs(ret) do - _ret[k] = v - end - else - _ret = ret and {} - end - --Apply editions - if (not _ret or not _ret.no_callback) and not context.no_callback then - if self.edition and self.edition.key and not context.retrigger_joker_check and not context.post_trigger then - local ed = SMODS.Centers[self.edition.key] - if ed.calculate and type(ed.calculate) == 'function' then - context.from_joker = true - context.joker_triggered = (_ret or triggered) - ed:calculate(self, context) - context.from_joker = nil - context.joker_triggered = nil - end - end - end - --Check for retrggering jokers - if (ret or triggered) and context and not context.retrigger_joker and not context.retrigger_joker_check and not context.post_trigger then - if type(ret) ~= 'table' then ret = {joker_repetitions = {0}} end - ret.joker_repetitions = {{}} - for i = 1, #G.jokers.cards do - ret.joker_repetitions[i] = ret.joker_repetitions[i] or {} - local check = G.jokers.cards[i]:calculate_joker{retrigger_joker_check = true, other_card = self, other_context = context, other_ret = _ret} - if type(check) == 'table' and check.repetitions then - for j = 1, check.repetitions do - ret.joker_repetitions[i][#ret.joker_repetitions[i]+1] = {message = check.message, card = check.card} - end - else - ret.joker_repetitions[i] = {} - end - if G.jokers.cards[i] == self and self.edition and self.edition.key then - if self.edition.retriggers then - for j = 1, self.edition.retriggers do - ret.joker_repetitions[i][#ret.joker_repetitions[i]+1] = { - message = localize('k_again_ex'), - card = self - } - end - end - local ed = SMODS.Centers[self.edition.key] - if ed.calculate and type(ed.calculate) == 'function' then - context.retrigger_edition_check = true - local check = ed:calculate(self, context) - context.retrigger_edition_check = nil - if type(check) == 'table' and check.repetitions then - for j = 1, check.repetitions do - ret.joker_repetitions[i][#ret.joker_repetitions[i]+1] = {message = check.message, card = check.card} - end - end - end - end - end - --do the retriggers - for z = 1, #ret.joker_repetitions do - if type(ret.joker_repetitions[z]) == 'table' and ret.joker_repetitions[z][1] then - for r = 1, #ret.joker_repetitions[z] do - if percent then percent = percent+percent_delta end - context.retrigger_joker = ret.joker_repetitions[z][r] - local _ret, _triggered = self:calculate_joker(context, callback) - if (_ret or _triggered) and not context.no_retrigger_anim then card_eval_status_text(ret.joker_repetitions[z][r].card, 'jokers', nil, nil, nil, ret.joker_repetitions[z][r]) end - end - end - end - context.retrigger_joker = nil - end - if (not _ret or not _ret.no_callback) and not context.no_callback then - if context.callback and type(context.callback) == 'function' then context.callback(context.blueprint_card or self, _ret, context.retrigger_joker) end - if (_ret or triggered) and not context.retrigger_joker_check and not context.post_trigger then - for i = 1, #G.jokers.cards do - G.jokers.cards[i]:calculate_joker{blueprint_card = context.blueprint_card, post_trigger = true, other_joker = self, other_context = context, other_ret = _ret} - end - end - end - return ret, triggered -end ---#endregion - --#region quantum enhancements API -- prevent base chips from applying with extra enhancements local gcb = Card.get_chip_bonus @@ -1744,4 +1703,51 @@ function Card:calculate_seal(context) if self.ability.extra_enhancement then return end return ccs(self, context) end ---#endregion \ No newline at end of file +--#endregion + +function playing_card_joker_effects(cards) + SMODS.calculate_context({playing_card_added = true, cards = cards}) +end + +G.FUNCS.change_collab = function(args) + G.SETTINGS.CUSTOM_DECK.Collabs[args.cycle_config.curr_suit] = G.COLLABS.options[args.cycle_config.curr_suit][args.to_key] or 'default' + local deckskin_key = G.COLLABS.options[args.cycle_config.curr_suit][args.to_key] + local palette_loc_options = SMODS.DeckSkin.get_palette_loc_options(args.to_key, args.cycle_config.curr_suit) + local swap_node = G.OVERLAY_MENU:get_UIE_by_ID('palette_selector') + local selected_palette = 1 + for i, v in ipairs(G.COLLABS.colour_palettes[deckskin_key]) do + if G.SETTINGS.colour_palettes[args.cycle_config.curr_suit] == v then + selected_palette = i + end + end + G.FUNCS.update_suit_colours(args.cycle_config.curr_suit, deckskin_key, selected_palette) + G.FUNCS.update_collab_cards(args.to_key, args.cycle_config.curr_suit) + if swap_node then + for i=1, #swap_node.children do + swap_node.children[i]:remove() + swap_node.children[i] = nil + end + local new_palette_selector = {n=G.UIT.R, config={align = "cm", id = 'palette_selector'}, nodes={ + create_option_cycle({options = palette_loc_options, w = 5.5, cycle_shoulders = false, curr_suit = args.cycle_config.curr_suit, curr_skin = deckskin_key, opt_callback = 'change_colour_palette', current_option = selected_palette, colour = G.C.ORANGE, focus_args = {snap_to = true, nav = 'wide'}}), + }} + swap_node.UIBox:add_child(new_palette_selector, swap_node) + end + for k, v in pairs(G.I.CARD) do + if v.config and v.config.card and v.children.front and v.ability.effect ~= 'Stone Card' then + v:set_sprites(nil, v.config.card) + end + end + G:save_settings() +end + +G.FUNCS.change_colour_palette = function(args) + G.SETTINGS.colour_palettes[args.cycle_config.curr_suit] = G.COLLABS.colour_palettes[args.cycle_config.curr_skin][args.to_key] + G.FUNCS.update_suit_colours(args.cycle_config.curr_suit, args.cycle_config.curr_skin) + G.FUNCS.update_collab_cards(args.cycle_config.curr_skin, args.cycle_config.curr_suit) + for k, v in pairs(G.I.CARD) do + if v.config and v.config.card and v.children.front and v.ability.effect ~= 'Stone Card' then + v:set_sprites(nil, v.config.card) + end + end + G:save_settings() +end \ No newline at end of file diff --git a/smods-old-calc/src/ui.lua b/Steamodded/src/ui.lua similarity index 98% rename from smods-old-calc/src/ui.lua rename to Steamodded/src/ui.lua index c83357e..0490272 100644 --- a/smods-old-calc/src/ui.lua +++ b/Steamodded/src/ui.lua @@ -21,6 +21,9 @@ end local gameMainMenuRef = Game.main_menu function Game:main_menu(change_context) + for k, v in pairs(G.C.SUITS) do + G.FUNCS.update_suit_colours(k, G.SETTINGS.CUSTOM_DECK.Collabs[k]) + end gameMainMenuRef(self, change_context) UIBox({ definition = { @@ -245,7 +248,7 @@ function buildModDescTab(mod) if (G.localization.descriptions.Mod or {})[mod.id] then modNodes[#modNodes + 1] = {} local loc_vars = mod.description_loc_vars and mod:description_loc_vars() or {} - localize { type = 'descriptions', key = loc_vars.key or mod.id, set = 'Mod', nodes = modNodes[#modNodes], vars = loc_vars.vars, scale = loc_vars.scale, text_colour = loc_vars.text_colour } + localize { type = 'descriptions', key = loc_vars.key or mod.id, set = 'Mod', nodes = modNodes[#modNodes], vars = loc_vars.vars, scale = loc_vars.scale, text_colour = loc_vars.text_colour, shadow = loc_vars.shadow } modNodes[#modNodes] = desc_from_rows(modNodes[#modNodes]) modNodes[#modNodes].config.colour = loc_vars.background_colour or modNodes[#modNodes].config.colour else @@ -945,13 +948,30 @@ function SMODS.load_mod_config(mod) return load(NFS.read(('config/%s.jkr'):format(mod.id)), ('=[SMODS %s "config"]'):format(mod.id))() end) local s2, default_config = pcall(function() - return load(NFS.read(('%sconfig.lua'):format(mod.path)), ('=[SMODS %s "default_config"]'):format(mod.id))() + return load(NFS.read(mod.path..(mod.config_file or 'config.lua')), ('=[SMODS %s "default_config"]'):format(mod.id))() end) if not s1 or type(config) ~= 'table' then config = {} end if not s2 or type(default_config) ~= 'table' then default_config = {} end - mod.config = {} - for k, v in pairs(default_config) do mod.config[k] = v end - for k, v in pairs(config) do mod.config[k] = v end + mod.config = default_config + + local function insert_saved_config(savedCfg, defaultCfg) + for savedKey, savedVal in pairs(savedCfg) do + local savedValType = type(savedVal) + local defaultValType = type(defaultCfg[savedKey]) + if not defaultCfg[savedKey] then + defaultCfg[savedKey] = savedVal + elseif savedValType ~= defaultValType then + elseif savedValType == "table" and defaultValType == "table" then + insert_saved_config(savedVal, defaultCfg[savedKey]) + elseif savedVal ~= defaultCfg[savedKey] then + defaultCfg[savedKey] = savedVal + end + + end + end + + insert_saved_config(config, mod.config) + return mod.config end SMODS:load_mod_config() @@ -1618,7 +1638,8 @@ function SMODS.GUI.dynamicModListContent(page) for _, condition in ipairs({ function(m) return not m.can_load and not m.disabled end, - function(m) return m.can_load end, + function(m) return m.can_load and m.config_tab end, + function(m) return m.can_load and not m.config_tab end, function(m) return m.disabled end, }) do for _, modInfo in ipairs(SMODS.mod_list) do diff --git a/Steamodded/src/utils.lua b/Steamodded/src/utils.lua new file mode 100644 index 0000000..4868452 --- /dev/null +++ b/Steamodded/src/utils.lua @@ -0,0 +1,1833 @@ +--- STEAMODDED CORE +--- UTILITY FUNCTIONS +function inspect(table) + if type(table) ~= 'table' then + return "Not a table" + end + + local str = "" + for k, v in pairs(table) do + local valueStr = type(v) == "table" and "table" or tostring(v) + str = str .. tostring(k) .. ": " .. valueStr .. "\n" + end + + return str +end + +function inspectDepth(table, indent, depth) + if depth and depth > 5 then -- Limit the depth to avoid deep nesting + return "Depth limit reached" + end + + if type(table) ~= 'table' then -- Ensure the object is a table + return "Not a table" + end + + local str = "" + if not indent then indent = 0 end + + for k, v in pairs(table) do + local formatting = string.rep(" ", indent) .. tostring(k) .. ": " + if type(v) == "table" then + str = str .. formatting .. "\n" + str = str .. inspectDepth(v, indent + 1, (depth or 0) + 1) + elseif type(v) == 'function' then + str = str .. formatting .. "function\n" + elseif type(v) == 'boolean' then + str = str .. formatting .. tostring(v) .. "\n" + else + str = str .. formatting .. tostring(v) .. "\n" + end + end + + return str +end + +function inspectFunction(func) + if type(func) ~= 'function' then + return "Not a function" + end + + local info = debug.getinfo(func) + local result = "Function Details:\n" + + if info.what == "Lua" then + result = result .. "Defined in Lua\n" + else + result = result .. "Defined in C or precompiled\n" + end + + result = result .. "Name: " .. (info.name or "anonymous") .. "\n" + result = result .. "Source: " .. info.source .. "\n" + result = result .. "Line Defined: " .. info.linedefined .. "\n" + result = result .. "Last Line Defined: " .. info.lastlinedefined .. "\n" + result = result .. "Number of Upvalues: " .. info.nups .. "\n" + + return result +end + +function SMODS._save_d_u(o) + assert(not o._discovered_unlocked_overwritten) + o._d, o._u = o.discovered, o.unlocked + o._saved_d_u = true +end + +function SMODS.SAVE_UNLOCKS() + boot_print_stage("Saving Unlocks") + G:save_progress() + ------------------------------------- + local TESTHELPER_unlocks = false and not _RELEASE_MODE + ------------------------------------- + if not love.filesystem.getInfo(G.SETTINGS.profile .. '') then + love.filesystem.createDirectory(G.SETTINGS.profile .. + '') + end + if not love.filesystem.getInfo(G.SETTINGS.profile .. '/' .. 'meta.jkr') then + love.filesystem.append( + G.SETTINGS.profile .. '/' .. 'meta.jkr', 'return {}') + end + + convert_save_to_meta() + + local meta = STR_UNPACK(get_compressed(G.SETTINGS.profile .. '/' .. 'meta.jkr') or 'return {}') + meta.unlocked = meta.unlocked or {} + meta.discovered = meta.discovered or {} + meta.alerted = meta.alerted or {} + + G.P_LOCKED = {} + for k, v in pairs(G.P_CENTERS) do + if not v.wip and not v.demo then + if TESTHELPER_unlocks then + v.unlocked = true; v.discovered = true; v.alerted = true + end --REMOVE THIS + if not v.unlocked and meta.unlocked[k] then + v.unlocked = true + end + if not v.unlocked then + G.P_LOCKED[#G.P_LOCKED + 1] = v + end + if not v.discovered and meta.discovered[k] then + v.discovered = true + end + if v.discovered and meta.alerted[k] or v.set == 'Back' or v.start_alerted then + v.alerted = true + elseif v.discovered then + v.alerted = false + end + end + end + + table.sort(G.P_LOCKED, function (a, b) return a.order and b.order and a.order < b.order end) + + for k, v in pairs(G.P_BLINDS) do + v.key = k + if not v.wip and not v.demo then + if TESTHELPER_unlocks then v.discovered = true; v.alerted = true end --REMOVE THIS + if not v.discovered and meta.discovered[k] then + v.discovered = true + end + if v.discovered and meta.alerted[k] then + v.alerted = true + elseif v.discovered then + v.alerted = false + end + end + end + for k, v in pairs(G.P_TAGS) do + v.key = k + if not v.wip and not v.demo then + if TESTHELPER_unlocks then v.discovered = true; v.alerted = true end --REMOVE THIS + if not v.discovered and meta.discovered[k] then + v.discovered = true + end + if v.discovered and meta.alerted[k] then + v.alerted = true + elseif v.discovered then + v.alerted = false + end + end + end + for k, v in pairs(G.P_SEALS) do + v.key = k + if not v.wip and not v.demo then + if TESTHELPER_unlocks then + v.discovered = true; v.alerted = true + end --REMOVE THIS + if not v.discovered and meta.discovered[k] then + v.discovered = true + end + if v.discovered and meta.alerted[k] then + v.alerted = true + elseif v.discovered then + v.alerted = false + end + end + end + for _, t in ipairs{ + G.P_CENTERS, + G.P_BLINDS, + G.P_TAGS, + G.P_SEALS, + } do + for k, v in pairs(t) do + v._discovered_unlocked_overwritten = true + end + end +end + +function SMODS.process_loc_text(ref_table, ref_value, loc_txt, key) + local target = (type(loc_txt) == 'table') and + ((G.SETTINGS.real_language and loc_txt[G.SETTINGS.real_language]) or loc_txt[G.SETTINGS.language] or loc_txt['default'] or loc_txt['en-us']) or loc_txt + if key and (type(target) == 'table') then target = target[key] end + if not (type(target) == 'string' or target and next(target)) then return end + ref_table[ref_value] = target +end + +local function parse_loc_file(file_name, force) + local loc_table = nil + if file_name:lower():match("%.json$") then + loc_table = assert(JSON.decode(NFS.read(file_name))) + else + loc_table = assert(loadstring(NFS.read(file_name)))() + end + local function recurse(target, ref_table) + if type(target) ~= 'table' then return end --this shouldn't happen unless there's a bad return value + for k, v in pairs(target) do + -- If the value doesn't exist *or* + -- force mode is on and the value is not a table, + -- change/add the thing + -- brings back compatibility with language patching mods + if (not ref_table[k] and type(k) ~= 'number') or (force and ((type(v) ~= 'table') or type(v[1]) == 'string')) then + ref_table[k] = v + else + recurse(v, ref_table[k]) + end + end + end + recurse(loc_table, G.localization) +end + +local function handle_loc_file(dir, language, force) + for k, v in ipairs({ dir .. language .. '.lua', dir .. language .. '.json' }) do + if NFS.getInfo(v) then + parse_loc_file(v, force) + break + end + end +end + +function SMODS.handle_loc_file(path) + local dir = path .. 'localization/' + handle_loc_file(dir, 'en-us', true) + handle_loc_file(dir, 'default', true) + handle_loc_file(dir, G.SETTINGS.language, true) + if G.SETTINGS.real_language then handle_loc_file(dir, G.SETTINGS.real_language, true) end +end + +function SMODS.insert_pool(pool, center, replace) + if replace == nil then replace = center.taken_ownership end + if replace then + for k, v in ipairs(pool) do + if v.key == center.key then + pool[k] = center + end + end + else + local prev_order = (pool[#pool] and pool[#pool].order) or 0 + if prev_order ~= nil then + center.order = prev_order + 1 + end + table.insert(pool, center) + end +end + +function SMODS.remove_pool(pool, key) + local j + for i, v in ipairs(pool) do + if v.key == key then j = i end + end + if j then return table.remove(pool, j) end +end + +function SMODS.juice_up_blind() + local ui_elem = G.HUD_blind:get_UIE_by_ID('HUD_blind_debuff') + for _, v in ipairs(ui_elem.children) do + v.children[1]:juice_up(0.3, 0) + end + G.GAME.blind:juice_up() +end + +-- @deprecated +function SMODS.eval_this(_card, effects) + sendWarnMessage('SMODS.eval_this is deprecated. All calculation stages now support returning effects directly. Effects evaluated using this function are out of order and may not use the correct sound pitch.', 'Util') + if effects then + local extras = { mult = false, hand_chips = false } + if effects.mult_mod then + mult = mod_mult(mult + effects.mult_mod); extras.mult = true + end + if effects.chip_mod then + hand_chips = mod_chips(hand_chips + effects.chip_mod); extras.hand_chips = true + end + if effects.Xmult_mod then + mult = mod_mult(mult * effects.Xmult_mod); extras.mult = true + end + update_hand_text({ delay = 0 }, { chips = extras.hand_chips and hand_chips, mult = extras.mult and mult }) + if effects.message then + card_eval_status_text(_card, 'jokers', nil, percent, nil, effects) + end + percent = (percent or 0) + (percent_delta or 0.08) + end +end + +-- Change a card's suit, rank, or both. +-- Accepts keys for both objects instead of needing to build a card key yourself. +function SMODS.change_base(card, suit, rank) + if not card then return false end + local _suit = SMODS.Suits[suit or card.base.suit] + local _rank = SMODS.Ranks[rank or card.base.value] + if not _suit or not _rank then + sendWarnMessage(('Tried to call SMODS.change_base with invalid arguments: suit="%s", rank="%s"'):format(suit, rank), 'Util') + return false + end + card:set_base(G.P_CARDS[('%s_%s'):format(_suit.card_key, _rank.card_key)]) + return card +end + +-- Return an array of all (non-debuffed) jokers or consumables with key `key`. +-- Debuffed jokers count if `count_debuffed` is true. +-- This function replaces find_joker(); please use SMODS.find_card() instead +-- to avoid name conflicts with other mods. +function SMODS.find_card(key, count_debuffed) + local results = {} + if not G.jokers or not G.jokers.cards then return {} end + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + for _, v in pairs(area.cards) do + if v and type(v) == 'table' and v.config.center.key == key and (count_debuffed or not v.debuff) then + table.insert(results, v) + end + end + end + return results +end + +function SMODS.create_card(t) + if not t.area and t.key and G.P_CENTERS[t.key] then + t.area = G.P_CENTERS[t.key].consumeable and G.consumeables or G.P_CENTERS[t.key].set == 'Joker' and G.jokers + end + if not t.area and not t.key and t.set and SMODS.ConsumableTypes[t.set] then + t.area = G.consumeables + end + SMODS.bypass_create_card_edition = t.no_edition + local _card = create_card(t.set, t.area, t.legendary, t.rarity, t.skip_materialize, t.soulable, t.key, t.key_append) + SMODS.bypass_create_card_edition = nil + + -- Should this be restricted to only cards able to handle these + -- or should that be left to the person calling SMODS.create_card to use it correctly? + if t.edition then _card:set_edition(t.edition) end + if t.enhancement then _card:set_ability(G.P_CENTERS[t.enhancement]) end + if t.seal then _card:set_seal(t.seal) end + if t.stickers then + for i, v in ipairs(t.stickers) do + local s = SMODS.Stickers[v] + if not s or type(s.should_apply) ~= 'function' or s:should_apply(_card, t.area, true) then + SMODS.Stickers[v]:apply(_card, true) + end + end + end + + return _card +end + +function SMODS.add_card(t) + local card = SMODS.create_card(t) + card:add_to_deck() + local area = t.area or G.jokers + area:emplace(card) + return card +end + +function SMODS.debuff_card(card, debuff, source) + debuff = debuff or nil + source = source and tostring(source) or nil + if debuff == 'reset' then card.ability.debuff_sources = {}; return end + card.ability.debuff_sources = card.ability.debuff_sources or {} + card.ability.debuff_sources[source] = debuff + card:set_debuff() +end + +-- Recalculate whether a card should be debuffed +function SMODS.recalc_debuff(card) + G.GAME.blind:debuff_card(card) +end + +function SMODS.restart_game() + if ((G or {}).SOUND_MANAGER or {}).channel then + G.SOUND_MANAGER.channel:push({ + type = "kill", + }) + end + if ((G or {}).SAVE_MANAGER or {}).channel then + G.SAVE_MANAGER.channel:push({ + type = "kill", + }) + end + if ((G or {}).HTTP_MANAGER or {}).channel then + G.HTTP_MANAGER.channel:push({ + type = "kill", + }) + end + if love.system.getOS() ~= 'OS X' then + love.thread.newThread("os.execute(...)\n"):start('"' .. arg[-2] .. '" ' .. table.concat(arg, " ")) + else + os.execute('sh "/Users/$USER/Library/Application Support/Steam/steamapps/common/Balatro/run_lovely.sh" &') + end + + love.event.quit() +end + +function SMODS.create_mod_badges(obj, badges) + if not SMODS.config.no_mod_badges and obj and obj.mod and obj.mod.display_name and not obj.no_mod_badges then + local mods = {} + badges.mod_set = badges.mod_set or {} + if not badges.mod_set[obj.mod.id] and not obj.no_main_mod_badge then table.insert(mods, obj.mod) end + badges.mod_set[obj.mod.id] = true + if obj.dependencies then + for _, v in ipairs(obj.dependencies) do + local m = assert(SMODS.find_mod(v)[1]) + if not badges.mod_set[m.id] then + table.insert(mods, m) + badges.mod_set[m.id] = true + end + end + end + for i, mod in ipairs(mods) do + local mod_name = string.sub(mod.display_name, 1, 20) + local size = 0.9 + local font = G.LANG.font + local max_text_width = 2 - 2*0.05 - 4*0.03*size - 2*0.03 + local calced_text_width = 0 + -- Math reproduced from DynaText:update_text + for _, c in utf8.chars(mod_name) do + local tx = font.FONT:getWidth(c)*(0.33*size)*G.TILESCALE*font.FONTSCALE + 2.7*1*G.TILESCALE*font.FONTSCALE + calced_text_width = calced_text_width + tx/(G.TILESIZE*G.TILESCALE) + end + local scale_fac = + calced_text_width > max_text_width and max_text_width/calced_text_width + or 1 + badges[#badges + 1] = {n=G.UIT.R, config={align = "cm"}, nodes={ + {n=G.UIT.R, config={align = "cm", colour = mod.badge_colour or G.C.GREEN, r = 0.1, minw = 2, minh = 0.36, emboss = 0.05, padding = 0.03*size}, nodes={ + {n=G.UIT.B, config={h=0.1,w=0.03}}, + {n=G.UIT.O, config={object = DynaText({string = mod_name or 'ERROR', colours = {mod.badge_text_colour or G.C.WHITE},float = true, shadow = true, offset_y = -0.05, silent = true, spacing = 1*scale_fac, scale = 0.33*size*scale_fac})}}, + {n=G.UIT.B, config={h=0.1,w=0.03}}, + }} + }} + end + end +end + +function SMODS.create_loc_dump() + local _old, _new = SMODS.dump_loc.pre_inject, G.localization + local _dump = {} + local function recurse(old, new, dump) + for k, _ in pairs(new) do + if type(new[k]) == 'table' then + dump[k] = {} + if not old[k] then + dump[k] = new[k] + else + recurse(old[k], new[k], dump[k]) + end + elseif old[k] ~= new[k] then + dump[k] = new[k] + end + end + end + recurse(_old, _new, _dump) + local function cleanup(dump) + for k, v in pairs(dump) do + if type(v) == 'table' then + cleanup(v) + if not next(v) then dump[k] = nil end + end + end + end + cleanup(_dump) + local str = 'return ' .. serialize(_dump) + NFS.createDirectory(SMODS.dump_loc.path..'localization/') + NFS.write(SMODS.dump_loc.path..'localization/dump.lua', str) +end + +-- Serializes an input table in valid Lua syntax +-- Keys must be of type number or string +-- Values must be of type number, boolean, string or table +function serialize(t, indent) + indent = indent or '' + local str = '{\n' + for k, v in ipairs(t) do + str = str .. indent .. '\t' + if type(v) == 'number' then + str = str .. v + elseif type(v) == 'boolean' then + str = str .. (v and 'true' or 'false') + elseif type(v) == 'string' then + str = str .. serialize_string(v) + elseif type(v) == 'table' then + str = str .. serialize(v, indent .. '\t') + else + -- not serializable + str = str .. 'nil' + end + str = str .. ',\n' + end + for k, v in pairs(t) do + if type(k) == 'string' then + str = str .. indent .. '\t' .. '[' .. serialize_string(k) .. '] = ' + + if type(v) == 'number' then + str = str .. v + elseif type(v) == 'boolean' then + str = str .. (v and 'true' or 'false') + elseif type(v) == 'string' then + str = str .. serialize_string(v) + elseif type(v) == 'table' then + str = str .. serialize(v, indent .. '\t') + else + -- not serializable + str = str .. 'nil' + end + str = str .. ',\n' + end + end + str = str .. indent .. '}' + return str +end + +function serialize_string(s) + return string.format("%q", s) +end + +-- Starting with `t`, insert any key-value pairs from `defaults` that don't already +-- exist in `t` into `t`. Modifies `t`. +-- Returns `t`, the result of the merge. +-- +-- `nil` inputs count as {}; `false` inputs count as a table where +-- every possible key maps to `false`. Therefore, +-- * `t == nil` is weak and falls back to `defaults` +-- * `t == false` explicitly ignores `defaults` +-- (This function might not return a table, due to the above) +function SMODS.merge_defaults(t, defaults) + if t == false then return false end + if defaults == false then return false end + + -- Add in the keys from `defaults`, returning a table + if defaults == nil then return t end + if t == nil then t = {} end + for k, v in pairs(defaults) do + if t[k] == nil then + t[k] = v + end + end + return t +end +V_MT = { + __eq = function(a, b) + local minorWildcard = a.minor == -2 or b.minor == -2 + local patchWildcard = a.patch == -2 or b.patch == -2 + local betaWildcard = a.rev == '~' or b.rev == '~' + return a.major == b.major and + (a.minor == b.minor or minorWildcard) and + (a.patch == b.patch or minorWildcard or patchWildcard) and + (a.rev == b.rev or minorWildcard or patchWildcard or betaWildcard) and + (betaWildcard or a.beta == b.beta) + end, + __le = function(a, b) + local b = { + major = b.major + (b.minor == -2 and 1 or 0), + minor = b.minor == -2 and 0 or (b.minor + (b.patch == -2 and 1 or 0)), + patch = b.patch == -2 and 0 or b.patch, + beta = b.beta, + rev = b.rev, + } + if a.major ~= b.major then return a.major < b.major end + if a.minor ~= b.minor then return a.minor < b.minor end + if a.patch ~= b.patch then return a.patch < b.patch end + if a.beta ~= b.beta then return a.beta < b.beta end + return a.rev <= b.rev + end, + __lt = function(a, b) + return a <= b and not (a == b) + end, + __call = function(_, str) + str = str or '0.0.0' + local _, _, major, minorFull, minor, patchFull, patch, rev = string.find(str, '^(%d+)(%.?([%d%*]*))(%.?([%d%*]*))(.*)$') + local minorWildcard = string.match(minor, '%*') + local patchWildcard = string.match(patch, '%*') + if (minorFull ~= "" and minor == "") or (patchFull ~= "" and patch == "") then + sendWarnMessage('Trailing dot found in version "' .. str .. '".') + major, minor, patch = -1, 0, 0 + end + local t = { + major = tonumber(major), + minor = minorWildcard and -2 or tonumber(minor) or 0, + patch = patchWildcard and -2 or tonumber(patch) or 0, + rev = rev or '', + beta = rev and rev:sub(1,1) == '~' and -1 or 0 + } + return setmetatable(t, V_MT) + end +} +V = setmetatable({}, V_MT) +V_MT.__index = V +function V.is_valid(v, allow_wildcard) + if getmetatable(v) ~= V_MT then return false end + return(pcall(function() return V() <= v and (allow_wildcard or (v.minor ~= -2 and v.patch ~= -2 and v.rev ~= '~')) end)) +end + +-- Flatten the given arrays of arrays into one, then +-- add elements of each table to a new table in order, +-- skipping any duplicates. +function SMODS.merge_lists(...) + local t = {} + for _, v in ipairs({...}) do + for _, vv in ipairs(v) do + table.insert(t, vv) + end + end + local ret = {} + local seen = {} + for _, li in ipairs(t) do + assert(type(li) == 'table') + for _, v in ipairs(li) do + if not seen[v] then + ret[#ret+1] = v + seen[v] = true + end + end + end + return ret +end + +--#region Number formatting + +function round_number(num, precision) + precision = 10^(precision or 0) + + return math.floor(num * precision + 0.4999999999999994) / precision +end + +-- Formatting util for UI elements (look number_formatting.toml) +function format_ui_value(value) + if type(value) ~= "number" then + return tostring(value) + end + + return number_format(value, 1000000) +end + +--#endregion + + +function SMODS.poll_seal(args) + args = args or {} + local key = args.key or 'stdseal' + local mod = args.mod or 1 + local guaranteed = args.guaranteed or false + local options = args.options or get_current_pool("Seal") + local type_key = args.type_key or key.."type"..G.GAME.round_resets.ante + key = key..G.GAME.round_resets.ante + + local available_seals = {} + local total_weight = 0 + for _, v in ipairs(options) do + if v ~= "UNAVAILABLE" then + local seal_option = {} + if type(v) == 'string' then + assert(G.P_SEALS[v]) + seal_option = { key = v, weight = G.P_SEALS[v].weight or 5 } -- default weight set to 5 to replicate base game weighting + elseif type(v) == 'table' then + assert(G.P_SEALS[v.key]) + seal_option = { key = v.key, weight = v.weight } + end + if seal_option.weight > 0 then + table.insert(available_seals, seal_option) + total_weight = total_weight + seal_option.weight + end + end + end + total_weight = total_weight + (total_weight / 2 * 98) -- set base rate to 2% + + local type_weight = 0 -- modified weight total + for _,v in ipairs(available_seals) do + v.weight = G.P_SEALS[v.key].get_weight and G.P_SEALS[v.key]:get_weight() or v.weight + type_weight = type_weight + v.weight + end + + local seal_poll = pseudorandom(pseudoseed(key or 'stdseal'..G.GAME.round_resets.ante)) + if seal_poll > 1 - (type_weight*mod / total_weight) or guaranteed then -- is a seal generated + local seal_type_poll = pseudorandom(pseudoseed(type_key)) -- which seal is generated + local weight_i = 0 + for k, v in ipairs(available_seals) do + weight_i = weight_i + v.weight + if seal_type_poll > 1 - (weight_i / type_weight) then + return v.key + end + end + end +end + +function SMODS.get_blind_amount(ante) + local scale = G.GAME.modifiers.scaling + local amounts = { + 300, + 700 + 100*scale, + 1400 + 600*scale, + 2100 + 2900*scale, + 15000 + 5000*scale*math.log(scale), + 12000 + 8000*(scale+1)*(0.4*scale), + 10000 + 25000*(scale+1)*((scale/4)^2), + 50000 * (scale+1)^2 * (scale/7)^2 + } + + if ante < 1 then return 100 end + if ante <= 8 then return amounts[ante] - amounts[ante]%(10^math.floor(math.log10(amounts[ante])-1)) end + local a, b, c, d = amounts[8], amounts[8]/amounts[7], ante-8, 1 + 0.2*(ante-8) + local amount = math.floor(a*(b + (b*0.75*c)^d)^c) + amount = amount - amount%(10^math.floor(math.log10(amount)-1)) + return amount +end + +function SMODS.stake_from_index(index) + local stake = G.P_CENTER_POOLS.Stake[index] or nil + if not stake then return "error" end + return stake.key +end + +function convert_save_data() + for k, v in pairs(G.PROFILES[G.SETTINGS.profile].deck_usage) do + local first_pass = not v.wins_by_key and not v.losses_by_key + v.wins_by_key = v.wins_by_key or {} + for index, number in pairs(v.wins or {}) do + if index > 8 and not first_pass then break end + v.wins_by_key[SMODS.stake_from_index(index)] = number + end + v.losses_by_key = v.losses_by_key or {} + for index, number in pairs(v.losses or {}) do + if index > 8 and not first_pass then break end + v.losses_by_key[SMODS.stake_from_index(index)] = number + end + end + for k, v in pairs(G.PROFILES[G.SETTINGS.profile].joker_usage) do + local first_pass = not v.wins_by_key and not v.losses_by_key + v.wins_by_key = v.wins_by_key or {} + for index, number in pairs(v.wins or {}) do + if index > 8 and not first_pass then break end + v.wins_by_key[SMODS.stake_from_index(index)] = number + end + v.losses_by_key = v.losses_by_key or {} + for index, number in pairs(v.losses or {}) do + if index > 8 and not first_pass then break end + v.losses_by_key[SMODS.stake_from_index(index)] = number + end + end + G:save_settings() +end + + +function SMODS.poll_rarity(_pool_key, _rand_key) + local rarity_poll = pseudorandom(pseudoseed(_rand_key or ('rarity'..G.GAME.round_resets.ante))) -- Generate the poll value + local available_rarities = copy_table(SMODS.ObjectTypes[_pool_key].rarities) -- Table containing a list of rarities and their rates + local vanilla_rarities = {["Common"] = 1, ["Uncommon"] = 2, ["Rare"] = 3, ["Legendary"] = 4} + + -- Calculate total rates of rarities + local total_weight = 0 + for _, v in ipairs(available_rarities) do + v.mod = G.GAME[tostring(v.key):lower().."_mod"] or 1 + -- Should this fully override the v.weight calcs? + if SMODS.Rarities[v.key] and SMODS.Rarities[v.key].get_weight and type(SMODS.Rarities[v.key].get_weight) == "function" then + v.weight = SMODS.Rarities[v.key]:get_weight(v.weight, SMODS.ObjectTypes[_pool_key]) + end + v.weight = v.weight*v.mod + total_weight = total_weight + v.weight + end + -- recalculate rarities to account for v.mod + for _, v in ipairs(available_rarities) do + v.weight = v.weight / total_weight + end + + -- Calculate selected rarity + local weight_i = 0 + for _, v in ipairs(available_rarities) do + weight_i = weight_i + v.weight + if rarity_poll < weight_i then + if vanilla_rarities[v.key] then + return vanilla_rarities[v.key] + else + return v.key + end + end + end + return nil +end + +function SMODS.poll_enhancement(args) + args = args or {} + local key = args.key or 'std_enhance' + local mod = args.mod or 1 + local guaranteed = args.guaranteed or false + local options = args.options or get_current_pool("Enhanced") + if args.no_replace then + for i, k in pairs(options) do + if G.P_CENTERS[k] and G.P_CENTERS[k].replace_base_card then + options[i] = 'UNAVAILABLE' + end + end + end + local type_key = args.type_key or key.."type"..G.GAME.round_resets.ante + key = key..G.GAME.round_resets.ante + + local available_enhancements = {} + local total_weight = 0 + for _, v in ipairs(options) do + if v ~= "UNAVAILABLE" then + local enhance_option = {} + if type(v) == 'string' then + assert(G.P_CENTERS[v]) + enhance_option = { key = v, weight = G.P_CENTERS[v].weight or 5 } -- default weight set to 5 to replicate base game weighting + elseif type(v) == 'table' then + assert(G.P_CENTERS[v.key]) + enhance_option = { key = v.key, weight = v.weight } + end + if enhance_option.weight > 0 then + table.insert(available_enhancements, enhance_option) + total_weight = total_weight + enhance_option.weight + end + end + end + total_weight = total_weight + (total_weight / 40 * 60) -- set base rate to 40% + + local type_weight = 0 -- modified weight total + for _,v in ipairs(available_enhancements) do + v.weight = G.P_CENTERS[v.key].get_weight and G.P_CENTERS[v.key]:get_weight() or v.weight + type_weight = type_weight + v.weight + end + + local enhance_poll = pseudorandom(pseudoseed(key)) + if enhance_poll > 1 - (type_weight*mod / total_weight) or guaranteed then -- is an enhancement selected + local seal_type_poll = pseudorandom(pseudoseed(type_key)) -- which enhancement is selected + local weight_i = 0 + for k, v in ipairs(available_enhancements) do + weight_i = weight_i + v.weight + if seal_type_poll > 1 - (weight_i / type_weight) then + return v.key + end + end + end +end + +function time(func, ...) + local start_time = love.timer.getTime() + func(...) + local end_time = love.timer.getTime() + return 1000*(end_time-start_time) +end + +function Card:add_sticker(sticker, bypass_check) + local sticker = SMODS.Stickers[sticker] + if bypass_check or (sticker and sticker.should_apply and type(sticker.should_apply) == 'function' and sticker:should_apply(self, self.config.center, self.area, true)) then + sticker:apply(self, true) + end +end + +function Card:remove_sticker(sticker) + if self.ability[sticker] then + SMODS.Stickers[sticker]:apply(self, false) + end +end + + +function Card:calculate_sticker(context, key) + local sticker = SMODS.Stickers[key] + if self.ability[key] and type(sticker.calculate) == 'function' then + local o = sticker:calculate(self, context) + if o then + if not o.card then o.card = self end + return o + end + end +end + +function Card:calculate_enhancement(context) + if self.debuff or self.ability.set ~= 'Enhanced' then return nil end + local center = self.config.center + if center.calculate and type(center.calculate) == 'function' then + local o = center:calculate(self, context) + if o then + if not o.card then o.card = self end + return o + end + end +end + +function SMODS.get_enhancements(card, extra_only) + if not SMODS.optional_features.quantum_enhancements or not G.hand then + return not extra_only and card.ability.set == 'Enhanced' and { [card.config.center.key] = true } or {} + end + if card.extra_enhancements and next(card.extra_enhancements) then + if extra_only then + local extras = copy_table(card.extra_enhancements) + extras[card.config.center.key] = nil + return extras + end + return card.extra_enhancements + end + local enhancements = {} + if card.config.center.key ~= "c_base" and not extra_only then + enhancements[card.config.center.key] = true + end + local calc_return = {} + SMODS.calculate_context({other_card = card, check_enhancement = true, no_blueprint = true}, calc_return) + for _, eval in pairs(calc_return) do + for key, eval2 in pairs(eval) do + if type(eval2) == 'table' then + for key2, _ in pairs(eval2) do + if G.P_CENTERS[key2] then enhancements[key2] = true end + end + else + if G.P_CENTERS[key] then enhancements[key] = true end + end + end + end + + if extra_only and enhancements[card.config.center.key] then + enhancements[card.config.center.key] = nil + end + if next(enhancements) then card.extra_enhancements = enhancements end + return enhancements +end + +function SMODS.has_enhancement(card, key) + if card.config.center.key == key then return true end + card.extra_enhancements = nil + local enhancements = SMODS.get_enhancements(card) + if enhancements[key] then return true end + return false +end + +function SMODS.shatters(card) + card.extra_enhancements = nil + local enhancements = SMODS.get_enhancements(card) + for key, _ in pairs(enhancements) do + if G.P_CENTERS[key].shatters or key == 'm_glass' then return true end + end +end + +function SMODS.calculate_quantum_enhancements(card, effects, context) + if not SMODS.optional_features.quantum_enhancements then return end + context.extra_enhancement = true + local extra_enhancements = SMODS.get_enhancements(card, true) + local old_ability = copy_table(card.ability) + local old_center = card.config.center + local old_center_key = card.config.center_key + for k, _ in pairs(extra_enhancements) do + if G.P_CENTERS[k] then + card:set_ability(G.P_CENTERS[k]) + card.ability.extra_enhancement = k + local eval = eval_card(card, context) + table.insert(effects, 1, eval) + end + end + card.ability = old_ability + card.config.center = old_center + card.config.center_key = old_center_key + card:set_sprites(old_center) + context.extra_enhancement = nil +end + +function SMODS.has_no_suit(card) + local is_stone = false + local is_wild = false + card.extra_enhancements = nil + for k, _ in pairs(SMODS.get_enhancements(card)) do + if k == 'm_stone' or G.P_CENTERS[k].no_suit then is_stone = true end + if k == 'm_wild' or G.P_CENTERS[k].any_suit then is_wild = true end + end + return is_stone and not is_wild +end +function SMODS.has_any_suit(card) + card.extra_enhancements = nil + for k, _ in pairs(SMODS.get_enhancements(card)) do + if k == 'm_wild' or G.P_CENTERS[k].any_suit then return true end + end +end +function SMODS.has_no_rank(card) + card.extra_enhancements = nil + for k, _ in pairs(SMODS.get_enhancements(card)) do + if k == 'm_stone' or G.P_CENTERS[k].no_rank then return true end + end +end +function SMODS.always_scores(card) + card.extra_enhancements = nil + for k, _ in pairs(SMODS.get_enhancements(card)) do + if k == 'm_stone' or G.P_CENTERS[k].always_scores then return true end + end + if (G.P_CENTERS[(card.edition or {}).key] or {}).always_scores then return true end + if (G.P_SEALS[card.seal or {}] or {}).always_scores then return true end + for k, v in pairs(SMODS.Stickers) do + if v.always_scores and card.ability[k] then return true end + end +end +function SMODS.never_scores(card) + card.extra_enhancements = nil + for k, _ in pairs(SMODS.get_enhancements(card)) do + if G.P_CENTERS[k].never_scores then return true end + end + if (G.P_CENTERS[(card.edition or {}).key] or {}).never_scores then return true end + if (G.P_SEALS[card.seal or {}] or {}).never_scores then return true end + for k, v in pairs(SMODS.Stickers) do + if v.never_scores and card.ability[k] then return true end + end +end + +SMODS.collection_pool = function(_base_pool) + local pool = {} + if type(_base_pool) ~= 'table' then return pool end + local is_array = _base_pool[1] + local ipairs = is_array and ipairs or pairs + for _, v in ipairs(_base_pool) do + if (not G.ACTIVE_MOD_UI or v.mod == G.ACTIVE_MOD_UI) and not v.no_collection then + pool[#pool+1] = v + end + end + if not is_array then table.sort(pool, function(a,b) return a.order < b.order end) end + return pool +end + +SMODS.find_mod = function(id) + local ret = {} + local mod = SMODS.Mods[id] or {} + if mod.can_load then ret[#ret+1] = mod end + for _,v in ipairs(SMODS.provided_mods[id] or {}) do + if v.mod.can_load then ret[#ret+1] = v.mod end + end + return ret +end + +local function bufferCardLimitForSmallDS(cards, scaleFactor) + local cardCount = #cards + if type(scaleFactor) ~= "number" or scaleFactor <= 0 then + sendWarnMessage("scaleFactor must be a positive number") + return cardCount + end + -- Ensure card_limit is always at least the number of cards + G.cdds_cards.config.card_limit = math.max(G.cdds_cards.config.card_limit, cardCount) + -- Calculate the buffer size dynamically based on the scale factor + local buffer = 0 + if cardCount < G.cdds_cards.rankCount then + -- Buffer decreases as cardCount approaches G.cdds_cards.rankCount, modulated by scaleFactor + buffer = math.ceil(((G.cdds_cards.rankCount - cardCount) / scaleFactor)) + end + G.cdds_cards.config.card_limit = math.max(cardCount, cardCount + buffer) + + return G.cdds_cards.config.card_limit +end + +G.FUNCS.update_collab_cards = function(key, suit, silent) + if type(key) == "number" then + key = G.COLLABS.options[suit][key] + end + if not G.cdds_cards then return end + local cards = {} + local cards_order = {} + local deckskin = SMODS.DeckSkins[key] + local palette = deckskin.palette_map and deckskin.palette_map[G.SETTINGS.colour_palettes[suit] or ''] or (deckskin.palettes or {})[1] + local suit_data = SMODS.Suits[suit] + local d_ranks = (palette and (palette.display_ranks or palette.ranks)) or deckskin.display_ranks or deckskin.ranks + if deckskin.outdated then + local reversed = {} + for i = #d_ranks, 1, -1 do + table.insert(reversed, d_ranks[i]) + end + d_ranks = reversed + end + + local diff_order + if #G.cdds_cards.cards ~= #d_ranks then + diff_order = true + else + for i,v in ipairs(G.cdds_cards.cards) do + if v.config.card_key ~= suit_data.card_key..'_'..SMODS.Ranks[d_ranks[i]].card_key then + diff_order = true + break + end + end + end + + if diff_order then + for i = #G.cdds_cards.cards, 1, -1 do + G.cdds_cards:remove_card(G.cdds_cards.cards[i]):remove() + end + for i, r in ipairs(d_ranks) do + local rank = SMODS.Ranks[r] + local card_code = suit_data.card_key .. '_' .. rank.card_key + cards_order[#cards_order+1] = card_code + local card = Card(G.cdds_cards.T.x+G.cdds_cards.T.w/2, G.cdds_cards.T.y+G.cdds_cards.T.h/2, G.CARD_W*1.2, G.CARD_H*1.2, G.P_CARDS[card_code], G.P_CENTERS.c_base) + -- Instead of no ui it would be nice to pass info queue to this so that artist credits can be done? + card.no_ui = true + + G.cdds_cards:emplace(card) + end + end + G.cdds_cards.config.card_limit = bufferCardLimitForSmallDS(cards, 2.5) +end + +G.FUNCS.update_suit_colours = function(suit, skin, palette_num) + skin = skin and SMODS.DeckSkins[skin] or nil + local new_colour_proto = G.C.SO_1[suit] + if G.SETTINGS.colour_palettes[suit] == 'lc' or G.SETTINGS.colour_palettes[suit] == 'hc' then + new_colour_proto = G.C["SO_"..((G.SETTINGS.colour_palettes[suit] == 'hc' and 2) or (G.SETTINGS.colour_palettes[suit] == 'lc' and 1))][suit] + end + if skin and not skin.outdated then + local palette = (palette_num and skin.palettes[palette_num]) or skin.palette_map and skin.palette_map[G.SETTINGS.colour_palettes[suit] or ''] + new_colour_proto = palette and palette.colour or new_colour_proto + end + G.C.SUITS[suit] = new_colour_proto +end + +-- This function handles the calculation of each effect returned to evaluate play. +-- Can easily be hooked to add more calculation effects ala Talisman +SMODS.calculate_individual_effect = function(effect, scored_card, key, amount, from_edition) + if effect.card and effect.card ~= scored_card then juice_card(effect.card) end + if (key == 'chips' or key == 'h_chips' or key == 'chip_mod') and amount then + hand_chips = mod_chips(hand_chips + amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = localize{type = 'variable', key = amount > 0 and 'a_chips' or 'a_chips_minus', vars = {amount}}, chip_mod = amount, colour = G.C.EDITION, edition = true}) + else + if key ~= 'chip_mod' then + if effect.chip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.chip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'chips', amount, percent) + end + end + end + end + return true + end + + if (key == 'mult' or key == 'h_mult' or key == 'mult_mod') and amount then + mult = mod_mult(mult + amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = localize{type = 'variable', key = amount > 0 and 'a_mult' or 'a_mult_minus', vars = {amount}}, mult_mod = amount, colour = G.C.DARK_EDITION, edition = true}) + else + if key ~= 'mult_mod' then + if effect.mult_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.mult_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'mult', amount, percent) + end + end + end + end + return true + end + + if (key == 'p_dollars' or key == 'dollars' or key == 'h_dollars') and amount then + ease_dollars(amount) + if not effect.remove_default_message then + if effect.dollar_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.dollar_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'dollars', amount, percent) + end + end + return true + end + + if (key == 'x_chips' or key == 'xchips' or key == 'Xchip_mod') and amount ~= 1 then + hand_chips = mod_chips(hand_chips * amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = localize{type='variable',key= amount > 0 and 'a_xchips' or 'a_xchips_minus',vars={amount}}, Xchips_mod = amount, colour = G.C.EDITION, edition = true}) + else + if key ~= 'Xchip_mod' then + if effect.xchip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.xchip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'x_chips', amount, percent) + end + end + end + end + return true + end + + if (key == 'x_mult' or key == 'xmult' or key == 'Xmult' or key == 'x_mult_mod' or key == 'Xmult_mod') and amount ~= 1 then + mult = mod_mult(mult * amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = localize{type='variable',key= amount > 0 and 'a_xmult' or 'a_xmult_minus',vars={amount}}, Xmult_mod = amount, colour = G.C.EDITION, edition = true}) + else + if key ~= 'Xmult_mod' then + if effect.xmult_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.xmult_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'x_mult', amount, percent) + end + end + end + end + return true + end + + if key == 'message' then + card_eval_status_text(effect.message_card or effect.juice_card or scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect) + return true + end + + if key == 'func' then + effect.func() + return true + end + + if key == 'swap' then + local old_mult = mult + mult = mod_mult(hand_chips) + hand_chips = mod_chips(old_mult) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + return true + end + + if key == 'level_up' then + local old_text = {} + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = function() + old_text = copy_table(G.GAME.current_round.current_hand) + update_hand_text({sound = 'button', volume = 0.7, pitch = 1.1, delay = 0}, {mult = old_text.mult, chips = old_text.chips, handname = old_text.handname, level = old_text.handname ~= "" and G.GAME.hands[G.GAME.last_hand_played].level or ''}) + return true + end + })) + local hand_type = effect.level_up_hand or G.GAME.last_hand_played + update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize(hand_type, 'poker_hands'),chips = G.GAME.hands[hand_type].chips, mult = G.GAME.hands[hand_type].mult, level=G.GAME.hands[hand_type].level}) + level_up_hand(scored_card, hand_type, effect.instant, type(amount) == 'number' and amount or 1) + return true + end + + if key == 'extra' then + return SMODS.calculate_effect(amount, scored_card) + end + + if key == 'saved' then + SMODS.saved = amount + return true + end +end + +-- Used to calculate a table of effects generated in evaluate_play +SMODS.trigger_effects = function(effects, card) + for i, effect_table in ipairs(effects) do + for key, effect in pairs(effect_table) do + if key ~= 'smods' then + if type(effect) == 'table' then + local calc = SMODS.calculate_effect(effect, card, key == 'edition') + if calc then effects.calculated = true end + end + end + end + end +end + +SMODS.calculate_effect = function(effect, scored_card, from_edition, pre_jokers) + local calculated = false + for _, key in ipairs(SMODS.calculation_keys) do + if effect[key] then + if effect.juice_card then G.E_MANAGER:add_event(Event({trigger = 'immediate', func = function () effect.juice_card:juice_up(0.1); scored_card:juice_up(0.1); return true end})) end + calculated = SMODS.calculate_individual_effect(effect, scored_card, key, effect[key], from_edition, pre_jokers) + percent = (percent or 0) + (percent_delta or 0.08) + end + end + if effect.effect then calculated = true end + if effect.remove then calculated = true end + return calculated +end + +SMODS.calculation_keys = { + 'chips', 'h_chips', 'chip_mod', + 'mult', 'h_mult', 'mult_mod', + 'x_chips', 'xchips', 'Xchip_mod', + 'x_mult', 'Xmult', 'xmult', 'x_mult_mod', 'Xmult_mod', + 'p_dollars', 'dollars', 'h_dollars', + 'swap', + 'message', + 'level_up', 'func', 'extra', + 'saved' +} + +SMODS.calculate_repetitions = function(card, context, reps) + -- From the card + context.repetition_only = true + local eval = eval_card(card, context) + for key, value in pairs(eval) do + if value.repetitions then + for h=1, value.repetitions do + value.card = value.card or card + value.message = value.message or (not value.remove_default_message and localize('k_again_ex')) + reps[#reps+1] = {key = value} + end + end + end + context.repetition_only = false + --From jokers + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + for _, _card in ipairs(area.cards) do + --calculate the joker effects + local eval, post = eval_card(_card, context) + if next(post) then SMODS.trigger_effects({post}, card) end + local rt = eval and eval.retriggers and #eval.retriggers or 0 + for key, value in pairs(eval) do + if value.repetitions and key ~= 'retriggers' then + + for h=1, value.repetitions do + value.card = value.card or _card + value.message = value.message or (not value.remove_default_message and localize('k_again_ex')) + reps[#reps+1] = {key = value} + for i=1, rt do + local rt_eval, rt_post = eval_card(_card, context) + rt_eval.card = rt_eval.card or _card + reps[#reps+1] = {key = value} + if next(rt_post) then SMODS.trigger_effects({rt_post}, card) end + end + end + end + end + end + end + local effect = G.GAME.selected_back:trigger_effect(context) + if effect and effect.repetitions then + for h=1, effect.repetitions do + effect.card = effect.card or G.deck.cards[1] or G.deck + reps[#reps+1] = {key = effect} + end + end + return reps +end + +SMODS.calculate_retriggers = function(card, context, _ret) + local retriggers = {} + if not SMODS.optional_features.retrigger_joker then return retriggers end + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + for _, _card in ipairs(area.cards) do + local eval, post = eval_card(_card, {retrigger_joker_check = true, other_card = card, other_context = context, other_ret = _ret}) + if next(post) then SMODS.trigger_effects({post}, _card) end + for key, value in pairs(eval) do + if value.repetitions then + for h=1, value.repetitions do + value.retrigger_card = _card + value.message = value.message or (not value.remove_default_message and localize('k_again_ex')) + retriggers[#retriggers + 1] = value + end + end + end + end + end + return retriggers +end + +function Card:calculate_edition(context) + if self.debuff then return end + if self.edition then + local edition = G.P_CENTERS[self.edition.key] + if edition.calculate and type(edition.calculate) == 'function' then + local o = edition:calculate(self, context) + if o then + if not o.card then o.card = self end + return o + end + end + end +end + +-- Used to calculate contexts across G.jokers, scoring_hand (if present), G.play and G.GAME.selected_back +-- Hook this function to add different areas to MOST calculations +function SMODS.calculate_context(context, return_table) + context.cardarea = G.jokers + context.main_eval = true + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + for _, _card in ipairs(area.cards) do + --calculate the joker effects + local eval, post = eval_card(_card, context) + local effects = {eval} + for _,v in ipairs(post) do effects[#effects+1] = v end + + if context.other_joker then + for k, v in pairs(effects[1]) do + v.other_card = _card + end + end + if effects[1].retriggers then + context.retrigger_joker = true + for rt = 1, #effects[1].retriggers do + context.retrigger_joker = effects[1].retriggers[rt].retrigger_card + local rt_eval, rt_post = eval_card(_card, context) + table.insert(effects, {effects[1].retriggers[rt]}) + table.insert(effects, rt_eval) + for _,v in ipairs(rt_post) do effects[#effects+1] = v end + end + context.retrigger_joker = false + end + if return_table then + for _,v in ipairs(effects) do + if v.jokers and not v.jokers.card then v.jokers.card = _card end + return_table[#return_table+1] = v + end + else + SMODS.trigger_effects(effects, _card) + end + end + end + context.main_eval = nil + if context.scoring_hand then + context.cardarea = G.play + for i=1, #context.scoring_hand do + --calculate the played card effects + if return_table then + return_table[#return_table+1] = eval_card(context.scoring_hand[i], context) + SMODS.calculate_quantum_enhancements(context.scoring_hand[i], return_table, context) + else + local effects = {eval_card(context.scoring_hand[i], context)} + SMODS.calculate_quantum_enhancements(context.scoring_hand[i], effects, context) + SMODS.trigger_effects(effects, context.scoring_hand[i]) + end + end + if SMODS.optional_features.cardareas.unscored then + context.cardarea = 'unscored' + local unscored_cards = {} + for _, played_card in pairs(G.play.cards) do + if not SMODS.in_scoring(played_card, context.scoring_hand) then unscored_cards[#unscored_cards + 1] = played_card end + end + for i=1, #unscored_cards do + --calculate the played card effects + if return_table then + return_table[#return_table+1] = eval_card(unscored_cards[i], context) + SMODS.calculate_quantum_enhancements(unscored_cards[i], return_table, context) + else + local effects = {eval_card(unscored_cards[i], context)} + SMODS.calculate_quantum_enhancements(unscored_cards[i], effects, context) + SMODS.trigger_effects(effects, unscored_cards[i]) + end + end + end + end + context.cardarea = G.hand + for i=1, #G.hand.cards do + --calculate the held card effects + if return_table then + return_table[#return_table+1] = eval_card(G.hand.cards[i], context) + else + local effects = {eval_card(G.hand.cards[i], context)} + SMODS.calculate_quantum_enhancements(G.hand.cards[i], effects, context) + SMODS.trigger_effects(effects, G.hand.cards[i]) + end + end + if SMODS.optional_features.cardareas.deck then + context.cardarea = G.deck + for i=1, #G.deck.cards do + --calculate the held card effects + if return_table then + return_table[#return_table+1] = eval_card(G.deck.cards[i], context) + else + local effects = {eval_card(G.deck.cards[i], context)} + SMODS.calculate_quantum_enhancements(G.deck.cards[i], effects, context) + SMODS.trigger_effects(effects, G.deck.cards[i]) + end + end + end + if SMODS.optional_features.cardareas.discard then + context.cardarea = G.discard + for i=1, #G.discard.cards do + --calculate the held card effects + if return_table then + return_table[#return_table+1] = eval_card(G.discard.cards[i], context) + else + local effects = {eval_card(G.discard.cards[i], context)} + SMODS.calculate_quantum_enhancements(G.discard.cards[i], effects, context) + SMODS.trigger_effects(effects, G.discard.cards[i]) + end + end + end + local effect = G.GAME.selected_back:trigger_effect(context) + if effect then SMODS.calculate_effect(effect, G.deck.cards[1] or G.deck) end +end + +function SMODS.in_scoring(card, scoring_hand) + for _, _card in pairs(scoring_hand) do + if card == _card then return true end + end +end + +function SMODS.score_card(card, context) + local reps = { 1 } + local j = 1 + while j <= #reps do + if reps[j] ~= 1 then + local _, eff = next(reps[j]) + SMODS.calculate_effect(eff, eff.card) + percent = percent + percent_delta + end + + context.main_scoring = true + local effects = { eval_card(card, context) } + SMODS.calculate_quantum_enhancements(card, effects, context) + context.main_scoring = nil + context.individual = true + context.other_card = card + + if next(effects) then + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + for _, _card in ipairs(area.cards) do + --calculate the joker individual card effects + local eval, post = eval_card(_card, context) + if next(eval) then + if eval.jokers then eval.jokers.juice_card = eval.jokers.juice_card or eval.jokers.card or _card end + table.insert(effects, eval) + for _, v in ipairs(post) do effects[#effects+1] = v end + if eval.retriggers then + context.retrigger_joker = true + for rt = 1, #eval.retriggers do + local rt_eval, rt_post = eval_card(_card, context) + table.insert(effects, { eval.retriggers[rt] }) + table.insert(effects, rt_eval) + for _, v in ipairs(rt_post) do effects[#effects+1] = v end + end + context.retrigger_joker = nil + end + end + end + end + end + + SMODS.trigger_effects(effects, card) + local deck_effect = G.GAME.selected_back:trigger_effect(context) + if deck_effect then SMODS.calculate_effect(deck_effect, G.deck.cards[1] or G.deck) end + + context.individual = nil + if reps[j] == 1 and effects.calculated then + context.repetition = true + context.card_effects = effects + SMODS.calculate_repetitions(card, context, reps) + context.repetition = nil + context.card_effects = nil + end + j = j + (effects.calculated and 1 or #reps) + context.other_card = nil + card.lucky_trigger = nil + end + card.extra_enhancements = nil +end + +function SMODS.calculate_main_scoring(context, scoring_hand) + for _, card in ipairs(scoring_hand or context.cardarea.cards) do + --add cards played to list + if scoring_hand and not SMODS.has_no_rank(card) then + G.GAME.cards_played[card.base.value].total = G.GAME.cards_played[card.base.value].total + 1 + if not SMODS.has_no_suit(card) then + G.GAME.cards_played[card.base.value].suits[card.base.suit] = true + end + end + --if card is debuffed + if scoring_hand and card.debuff then + G.GAME.blind.triggered = true + G.E_MANAGER:add_event(Event({ + trigger = 'immediate', + func = (function() SMODS.juice_up_blind();return true end) + })) + card_eval_status_text(card, 'debuff') + else + SMODS.score_card(card, context) + end + end +end + +function SMODS.calculate_end_of_round_effects(context) + for i, card in ipairs(context.cardarea.cards) do + local reps = {1} + local j = 1 + while j <= #reps do + percent = (i-0.999)/(#context.cardarea.cards-0.998) + (j-1)*0.1 + if reps[j] ~= 1 then + local _, eff = next(reps[j]) + SMODS.calculate_effect(eff, eff.card) + percent = percent + 0.08 + end + + context.playing_card_end_of_round = true + --calculate the hand effects + local effects = {eval_card(card, context)} + local extra_enhancements = SMODS.get_enhancements(card, true) + local old_ability = copy_table(card.ability) + local old_center = card.config.center + local old_center_key = card.config.center_key + for k, _ in pairs(extra_enhancements) do + if G.P_CENTERS[k] then + card:set_ability(G.P_CENTERS[k]) + card.ability.extra_enhancement = k + effects[#effects+1] = eval_card(card, context) + end + end + card.ability = old_ability + card.config.center = old_center + card.config.center_key = old_center_key + card:set_sprites(old_center) + + context.playing_card_end_of_round = nil + context.individual = true + context.other_card = card + -- context.end_of_round individual calculations + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + for _, _card in ipairs(area.cards) do + + local eval, post = eval_card(_card, context) + eval.juice_card = eval.card + if next(eval) then + table.insert(effects, eval) + end + for _, v in ipairs(post) do effects[#effects+1] = v end + end + end + + local deck_effect = G.GAME.selected_back:trigger_effect(context) + if deck_effect then SMODS.calculate_effect(deck_effect, G.deck.cards[1] or G.deck) end + SMODS.trigger_effects(effects, card) + + context.individual = nil + context.repetition = true + context.card_effects = effects + if reps[j] == 1 then + SMODS.calculate_repetitions(card, context, reps) + end + + context.repetition = nil + context.card_effects = nil + j = j + (effects.calculated and 1 or #reps) + + -- TARGET: effects after end of round evaluation + end + end +end + +function SMODS.calculate_destroying_cards(context, cards_destroyed, scoring_hand) + for i,card in ipairs(scoring_hand or context.cardarea.cards) do + local destroyed = nil + --un-highlight all cards + if scoring_hand then highlight_card(card,(i-0.999)/(#scoring_hand-0.998),'down') end + + -- context.destroying_card calculations + context.destroy_card = card + context.destroying_card = scoring_hand and card + for _, area in ipairs(SMODS.get_card_areas('jokers')) do + local should_break + for _, _card in ipairs(area.cards) do + local eval, post = eval_card(_card, context) + local self_destroy = false + for key, effect in pairs(eval) do + if type(effect) == 'table' then + self_destroy = SMODS.calculate_effect(effect, card) + else + self_destroy = effect + end + end + SMODS.trigger_effects({post}, card) + if self_destroy then + destroyed = true + should_break = true + break + end + end + if should_break then break end + end + + if scoring_hand and SMODS.has_enhancement(card, 'm_glass') and not card.debuff and pseudorandom('glass') < G.GAME.probabilities.normal/(card.ability.name == 'Glass Card' and card.ability.extra or G.P_CENTERS.m_glass.config.extra) then + destroyed = true + end + + local eval, post = eval_card(card, context) + local self_destroy = false + for key, effect in pairs(eval) do + self_destroy = SMODS.calculate_effect(effect, card) + end + SMODS.trigger_effects({post}, card) + if self_destroy then destroyed = true end + + local deck_effect = G.GAME.selected_back:trigger_effect(context) + if deck_effect then + self_destroy = SMODS.calculate_effect(deck_effect, G.deck.cards[1] or G.deck) + if self_destroy then destroyed = true end + end + + -- TARGET: card destroyed + + if destroyed then + if SMODS.shatters(card) then + card.shattered = true + else + card.destroyed = true + end + cards_destroyed[#cards_destroyed+1] = card + end + end +end + +function SMODS.get_card_areas(_type, _context) + if _type == 'playing_cards' then + local t = {} + if _context ~= 'end_of_round' then t[#t+1] = G.play end + if _context ~= 'end_of_round' and SMODS.optional_features.cardareas.unscored then t[#t+1] = 'unscored' end + t[#t+1] = G.hand + if SMODS.optional_features.cardareas.deck then t[#t+1] = G.deck end + if SMODS.optional_features.cardareas.discard then t[#t+1] = G.discard end + -- TARGET: add your own CardAreas for playing card evaluation + return t + end + if _type == 'jokers' then + local t = {G.jokers, G.consumeables, G.vouchers} + -- TARGET: add your own CardAreas for joker evaluation + return t + end + return {} +end + +local flat_copy_table = function(tbl) + local new = {} + for i, v in pairs(tbl) do + new[i] = v + end + return new +end + +---Seatch for val anywhere deep in tbl. Return a table of finds, or the first found if args.immediate is provided. +SMODS.deepfind = function(tbl, val, mode, immediate) + --backwards compat (remove later probably) + if mode == true then + mode = "v" + immediate = true + end + if mode == "index" then + mode = "i" + elseif mode == "value" then + mode = "v" + elseif mode ~= "v" and mode ~= "i" then + mode = "v" + end + local seen = {[tbl] = true} + local collector = {} + local stack = { {tbl = tbl, path = {}, objpath = {}} } + + --while there are any elements to traverse + while #stack > 0 do + --pull the top off of the stack and start traversing it (by default this will be the last element of the last traversed table found in pairs) + local current = table.remove(stack) + --the current table we wish to traverse + local currentTbl = current.tbl + --the current path + local currentPath = current.path + --the current object path + local currentObjPath = current.objpath + + --for every table that we have + for i, v in pairs(currentTbl) do + --if the value matches + if (mode == "v" and v == val) or (mode == "i") and i == val then + --copy our values and store it in the collector + local newPath = flat_copy_table(currentPath) + local newObjPath = flat_copy_table(currentObjPath) + table.insert(newPath, i) + table.insert(newObjPath, v) + table.insert(collector, {table = currentTbl, index = i, tree = newPath, objtree = newObjPath}) + if immediate then + return collector + end + --otherwise, if its a traversable table we havent seen yet + elseif type(v) == "table" and not seen[v] then + --make sure we dont see it again + seen[v] = true + --and then place it on the top of the stack + local newPath = flat_copy_table(currentPath) + local newObjPath = flat_copy_table(currentObjPath) + table.insert(newPath, i) + table.insert(newObjPath, v) + table.insert(stack, {tbl = v, path = newPath, objpath = newObjPath}) + end + end + end + + return collector +end + +--backwards compat (remove later probably) +SMODS.deepfindbyindex = function(tbl, val, immediate) + return SMODS.deepfind(tbl, val, "i", immediate) +end + +-- this is for debugging +SMODS.debug_calculation = function() + G.contexts = {} + local cj = Card.calculate_joker + function Card:calculate_joker(context) + for k,v in pairs(context) do G.contexts[k] = (G.contexts[k] or 0) + 1 end + return cj(self, context) + end +end + +local function insert(t, res) + for k,v in pairs(res) do + if type(v) == 'table' and type(t[k]) == 'table' then + insert(t[k], v) + else + t[k] = v + end + end +end +SMODS.optional_features = { + cardareas = {}, +} +SMODS.get_optional_features = function() + for _,mod in ipairs(SMODS.mod_list) do + if mod.can_load and mod.optional_features then + local opt_features = type(mod.optional_features) == 'function' and mod.optional_features() or mod.optional_features + if type(opt_features) == 'table' then + insert(SMODS.optional_features, opt_features) + end + end + end +end + +G.FUNCS.can_select_from_booster = function(e) + local area = booster_obj and e.config.ref_table:selectable_from_pack(booster_obj) + if area and #G[area].cards < G[area].config.card_limit then + e.config.colour = G.C.GREEN + e.config.button = 'use_card' + else + e.config.colour = G.C.UI.BACKGROUND_INACTIVE + e.config.button = nil + end + end + +function Card.selectable_from_pack(card, pack) + if pack.select_exclusions then + for _, key in ipairs(pack.select_exclusions) do + if key == card.config.center_key then return false end + end + end + if pack.select_card then + if type(pack.select_card) == 'table' then + if pack.select_card[card.ability.set] then return pack.select_card[card.ability.set] else return false end + end + return pack.select_card + end +end \ No newline at end of file diff --git a/smods-old-calc/tk_debug_window.py b/Steamodded/tk_debug_window.py similarity index 99% rename from smods-old-calc/tk_debug_window.py rename to Steamodded/tk_debug_window.py index f8e4c61..e5305f5 100644 --- a/smods-old-calc/tk_debug_window.py +++ b/Steamodded/tk_debug_window.py @@ -636,7 +636,7 @@ def client_handler(client_socket, console: Console): def listen_for_clients(console: Console): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - server_socket.bind(('localhost', 12345)) + server_socket.bind(('localhost', 53153)) server_socket.listen() while True: client, addr = server_socket.accept() diff --git a/Steamodded/version.lua b/Steamodded/version.lua new file mode 100644 index 0000000..a27c46a --- /dev/null +++ b/Steamodded/version.lua @@ -0,0 +1 @@ +return "1.0.0~ALPHA-1422a-STEAMODDED" diff --git a/Talisman/big-num/bignumber.lua b/Talisman/big-num/bignumber.lua index 83355aa..33e748e 100644 --- a/Talisman/big-num/bignumber.lua +++ b/Talisman/big-num/bignumber.lua @@ -328,6 +328,11 @@ function Big.parse(str) return Big:new(tonumber(parts[1]), math.floor(tonumber(parts[2]))):normalized() end +function BigMeta.__concat(a, b) + a = Big:create(a) + return tostring(a) .. tostring(b) +end + --Adding things OmegaNum has that this doesn't... R = {} diff --git a/Talisman/big-num/notations.lua b/Talisman/big-num/notations.lua index fc06d11..94d8cde 100644 --- a/Talisman/big-num/notations.lua +++ b/Talisman/big-num/notations.lua @@ -12,7 +12,7 @@ Notations = { StandardNotation = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/standardnotation.lua")(), ThousandNotation = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/thousandnotation.lua")(), DynamicNotation = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/dynamicnotation.lua")(), - Balatro = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/balatro.lua")(), + Balatro = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/Balatro.lua")(), } -return Notations \ No newline at end of file +return Notations diff --git a/Talisman/big-num/omeganum.lua b/Talisman/big-num/omeganum.lua index bf67253..9911c81 100644 --- a/Talisman/big-num/omeganum.lua +++ b/Talisman/big-num/omeganum.lua @@ -718,7 +718,7 @@ function Big:div(other) return Big:create(R.NaN) end if (other:eq(R.ZERO)) then - Big:create(R.POSITIVE_INFINITY) + return Big:create(R.POSITIVE_INFINITY) end if (other:eq(R.ONE)) then return x:clone() @@ -849,7 +849,9 @@ function Big:pow(other) return self:abs():pow(other):neg() end if (self:lt(R.ZERO)) then - return Big:create(R.NaN) + --return Big:create(R.NaN) + --Override this interaction to always make positive numbers + return self:abs():pow(other) end if (self:eq(R.ONE)) then return Big:create(R.ONE) @@ -1332,6 +1334,11 @@ function OmegaMeta.__tostring(b) return number_format(b) end +function OmegaMeta.__concat(a, b) + a = Big:create(a) + return tostring(a) .. tostring(b) +end + --------------------------------------- diff --git a/Talisman/config.lua b/Talisman/config.lua index 5cdb68f..0f706ea 100644 --- a/Talisman/config.lua +++ b/Talisman/config.lua @@ -1 +1 @@ -return {["disable_anims"]=true,["score_opt_id"]=3,["break_infinity"]="omeganum",} \ No newline at end of file +return {["disable_anims"]=false,["score_opt_id"]=3,["break_infinity"]="omeganum",} \ No newline at end of file diff --git a/Talisman/lovely.toml b/Talisman/lovely.toml index 0d10981..79fa6bb 100644 --- a/Talisman/lovely.toml +++ b/Talisman/lovely.toml @@ -438,13 +438,173 @@ if Big and G.STATE == G.STATES.MENU then self.config.scale = to_big(self.config. ''' match_indent = true +# poker hand level fixes +[[patches]] +[patches.pattern] +target = "functions/UI_definitions.lua" +pattern = "{n=G.UIT.T, config={text = localize('k_level_prefix')..G.GAME.hands[handname].level, scale = 0.5, colour = G.C.UI.TEXT_DARK}}" +position = "at" +payload = "{n=G.UIT.T, config={text = localize('k_level_prefix')..number_format(G.GAME.hands[handname].level), scale = 0.5, colour = G.C.UI.TEXT_DARK}}" +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if args.level >= 10 then" +position = "at" +payload = "if to_big(args.level) >= to_big(10) then" +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if type(vals.level) == 'number' then" +position = "at" +payload = "if is_number(vals.level) then" +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[math.min(vals.level, 7)]" +position = "at" +payload = "G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[to_big(math.min(vals.level, 7)):to_number()]" +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "colours = {(G.GAME.hands[cfg.hand_type].level==1 and G.C.UI.TEXT_DARK or G.C.HAND_LEVELS[math.min(7, G.GAME.hands[cfg.hand_type].level)])}" +position = "at" +payload = "colours = {(to_big(G.GAME.hands[cfg.hand_type].level)==to_big(1) and G.C.UI.TEXT_DARK or G.C.HAND_LEVELS[to_big(math.min(7, G.GAME.hands[cfg.hand_type].level)):to_number()])}" +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/UI_definitions.lua" +pattern = '{n=G.UIT.C, config={align = "cm", padding = 0.01, r = 0.1, colour = G.C.HAND_LEVELS[math.min(7, G.GAME.hands[handname].level)], minw = 1.5, outline = 0.8, outline_colour = G.C.WHITE}, nodes={' +position = "at" +payload = '{n=G.UIT.C, config={align = "cm", padding = 0.01, r = 0.1, colour = G.C.HAND_LEVELS[to_big(math.min(7, G.GAME.hands[handname].level)):to_number()], minw = 1.5, outline = 0.8, outline_colour = G.C.WHITE}, nodes={' +match_indent = true + +# money fixes +[[patches]] +[patches.regex] +target = "functions/state_events.lua" +pattern = '''G\.GAME\.dollars >= 5''' +position = "at" +payload = "to_big(G.GAME.dollars) >= to_big(5)" +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if G.GAME.dollars >= 400 then" +position = "at" +payload = '''if to_big(G.GAME.dollars) >= to_big(400) then''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/button_callbacks.lua" +pattern = "if ((G.GAME.dollars-G.GAME.bankrupt_at) - G.GAME.current_round.reroll_cost < 0) and G.GAME.current_round.reroll_cost ~= 0 then" +position = "at" +payload = '''if ((to_big(G.GAME.dollars)-to_big(G.GAME.bankrupt_at)) - to_big(G.GAME.current_round.reroll_cost) < to_big(0)) and G.GAME.current_round.reroll_cost ~= 0 then''' +match_indent = true + +[[patches]] +[patches.regex] +target = "functions/button_callbacks.lua" +pattern = '''e\.config\.ref_table\.cost > G\.GAME\.dollars - G\.GAME\.bankrupt_at''' +position = "at" +payload = '''to_big(e.config.ref_table.cost) > to_big(G.GAME.dollars) - to_big(G.GAME.bankrupt_at)''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/button_callbacks.lua" +pattern = '''if ((G.GAME.dollars-G.GAME.bankrupt_at) - 10 >= 0) and''' +position = "at" +payload = ''' +if ((to_big(G.GAME.dollars)-to_big(G.GAME.bankrupt_at)) - to_big(10) >= to_big(0)) and +''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = '''if card.unlock_condition.extra <= G.GAME.dollars then''' +position = "at" +payload = '''if to_big(card.unlock_condition.extra) <= to_big(G.GAME.dollars) then''' +match_indent = true + +# Talisman compat for vanilla jokers +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = '''if self.ability.name == 'Bull' and (G.GAME.dollars + (G.GAME.dollar_buffer or 0)) > 0 then''' +position = "at" +payload = '''if self.ability.name == 'Bull' and to_big(G.GAME.dollars + (G.GAME.dollar_buffer or 0)) > to_big(0) then''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = '''if self.ability.name == 'Bootstraps' and math.floor((G.GAME.dollars + (G.GAME.dollar_buffer or 0))/self.ability.extra.dollars) >= 1 then''' +position = "at" +payload = '''if self.ability.name == 'Bootstraps' and to_big(math.floor((G.GAME.dollars + (G.GAME.dollar_buffer or 0))/self.ability.extra.dollars)) >= to_big(1) then''' +match_indent = true + +# Vagabond +[[patches]] +[patches.pattern] +target = "card.lua" +pattern = '''if G.GAME.dollars <= self.ability.extra then''' +position = "at" +payload = '''if to_big(G.GAME.dollars) <= to_big(self.ability.extra) then''' +match_indent = true + +# for now, I'm letting dollar eval ignore bignum, I'll patch it later +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if num_dollars > 60 then" +position = "at" +payload = '''num_dollars = to_number(num_dollars); if math.abs(to_number(num_dollars)) > 60 then''' +match_indent = true + +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if num_dollars > 60 or num_dollars < -60 then" +position = "at" +payload = '''num_dollars = to_number(num_dollars); if math.abs(to_number(num_dollars)) > 60 then''' +match_indent = true + +# This one also patches some extra stuff, but shouldn't cause any trouble +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if mod < 0 then" +position = "at" +payload = "if to_big(mod) < to_big(0) then" +match_indent = true + +[[patches]] +[patches.pattern] +target = "blind.lua" +pattern = "if G.GAME.hands[handname].level > 1 then" +position = "at" +payload = "if to_big(G.GAME.hands[handname].level) > to_big(1) then" +match_indent = true + # call init game object appendum after init game object [[patches]] [patches.pattern] target = "game.lua" pattern = "if new_game_obj then self.GAME = self:init_game_object() end" position = "after" -payload = "if new_game_obj and Talisman and Talisman.igo then self.GAME = Talisman.igo(self.GAME) end" +payload = "if Talisman and Talisman.igo then self.GAME = Talisman.igo(self.GAME) end" match_indent = true overwrite = false @@ -454,7 +614,7 @@ overwrite = false target = "game.lua" pattern = "self.GAME = saveTable and saveTable.GAME or self:init_game_object()" position = "after" -payload = "if (not saveTable or not saveTable.GAME) and Talisman and Talisman.igo then self.GAME = Talisman.igo(self.GAME) end" +payload = "if Talisman and Talisman.igo then self.GAME = Talisman.igo(self.GAME) end" match_indent = true overwrite = false @@ -498,6 +658,16 @@ payload = "if G.GAME.blind and (not SMODS or G.GAME.blind.in_blind) and not (Tal match_indent = true overwrite = false +# hand level ups +[[patches]] +[patches.pattern] +target = "functions/common_events.lua" +pattern = "if not instant then" +position = "at" +payload = "if not instant and not Talisman.config_file.disable_anims then" +match_indent = true +overwrite = false + # Juice Issues [[patches]] [patches.pattern] @@ -889,7 +1059,7 @@ if scoring_hand and scoring_hand[i] and scoring_hand[i].edition then hand_chips = mod_chips(hand_chips * edi.x_chips) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = 'X'.. edi.x_chips ..' Chips', + {message = 'X'.. edi.x_chips , edition = true, x_chips = true}) end @@ -897,7 +1067,7 @@ if scoring_hand and scoring_hand[i] and scoring_hand[i].edition then hand_chips = mod_chips(hand_chips ^ edi.e_chips) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = '^'.. edi.e_chips ..' Chips', + {message = '^'.. edi.e_chips , edition = true, e_chips = true}) end @@ -905,7 +1075,7 @@ if scoring_hand and scoring_hand[i] and scoring_hand[i].edition then hand_chips = mod_chips(hand_chips:arrow(2, edi.ee_chips)) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = '^^'.. edi.ee_chips ..' Chips', + {message = '^^'.. edi.ee_chips , edition = true, ee_chips = true}) end @@ -913,7 +1083,7 @@ if scoring_hand and scoring_hand[i] and scoring_hand[i].edition then hand_chips = mod_chips(hand_chips:arrow(3, edi.eee_chips)) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = '^^^'.. edi.eee_chips ..' Chips', + {message = '^^^'.. edi.eee_chips , edition = true, eee_chips = true}) end @@ -921,7 +1091,7 @@ if scoring_hand and scoring_hand[i] and scoring_hand[i].edition then hand_chips = mod_chips(hand_chips:arrow(edi.hyper_chips[1], edi.hyper_chips[2])) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = (edi.hyper_chips[1] > 5 and ('{' .. edi.hyper_chips[1] .. '}') or string.rep('^', edi.hyper_chips[1])) .. edi.hyper_chips[2] ..' Chips', + {message = (edi.hyper_chips[1] > 5 and ('{' .. edi.hyper_chips[1] .. '}') or string.rep('^', edi.hyper_chips[1])) .. edi.hyper_chips[2] , edition = true, eee_chips = true}) end @@ -984,7 +1154,7 @@ if G.jokers.cards and G.jokers.cards[i] and G.jokers.cards[i].edition then hand_chips = mod_chips(hand_chips * edi.x_chips) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = 'X'.. edi.x_chips ..' Chips', + {message = 'X'.. edi.x_chips , edition = true, x_chips = true}) end @@ -992,7 +1162,7 @@ if G.jokers.cards and G.jokers.cards[i] and G.jokers.cards[i].edition then hand_chips = mod_chips(hand_chips ^ edi.e_chips) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = '^'.. edi.e_chips ..' Chips', + {message = '^'.. edi.e_chips , edition = true, e_chips = true}) end @@ -1000,7 +1170,7 @@ if G.jokers.cards and G.jokers.cards[i] and G.jokers.cards[i].edition then hand_chips = mod_chips(hand_chips:arrow(2, edi.ee_chips)) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = '^^'.. edi.ee_chips ..' Chips', + {message = '^^'.. edi.ee_chips , edition = true, ee_chips = true}) end @@ -1008,7 +1178,7 @@ if G.jokers.cards and G.jokers.cards[i] and G.jokers.cards[i].edition then hand_chips = mod_chips(hand_chips:arrow(3, edi.eee_chips)) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = '^^^'.. edi.eee_chips ..' Chips', + {message = '^^^'.. edi.eee_chips , edition = true, eee_chips = true}) end @@ -1016,7 +1186,7 @@ if G.jokers.cards and G.jokers.cards[i] and G.jokers.cards[i].edition then hand_chips = mod_chips(hand_chips:arrow(edi.hyper_chips[1], edi.hyper_chips[2])) update_hand_text({delay = 0}, {chips = hand_chips}) card_eval_status_text(trg, 'extra', nil, percent, nil, - {message = (edi.hyper_chips[1] > 5 and ('{' .. edi.hyper_chips[1] .. '}') or string.rep('^', edi.hyper_chips[1])) .. edi.hyper_chips[2] ..' Chips', + {message = (edi.hyper_chips[1] > 5 and ('{' .. edi.hyper_chips[1] .. '}') or string.rep('^', edi.hyper_chips[1])) .. edi.hyper_chips[2] , edition = true, eee_chips = true}) end @@ -1056,119 +1226,6 @@ end edition_effects.jokers.x_mult_mod = nil ''' -# replace save manager with version that works with Talisman saves -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "thread = love.thread.newThread('engine/save_manager.lua')," -position = "at" -payload = ''' -thread = love.thread.newThread([[require "love.system" - -if (love.system.getOS() == 'OS X' ) and (jit.arch == 'arm64' or jit.arch == 'arm') then jit.off() end - -require "love.timer" -require "love.thread" -require 'love.filesystem' -require "engine/object" -require "engine/string_packer" - ---vars needed for sound manager thread -CHANNEL = love.thread.getChannel("save_request") - -talisman = "]] .. Talisman.config_file.break_infinity .. [[" - ---untested -function tal_compress_and_save(_file, _data) - local save_string = type(_data) == 'table' and STR_PACK(_data) or _data - local fallback_save = STR_PACK({GAME = {won = true}}) --just bare minimum to not crash, maybe eventually display some info? - if talisman == 'bignumber' then - fallback_save = "if not BigMeta then " .. fallback_save - elseif talisman == 'omeganum' then - fallback_save = "if not OmegaMeta then " .. fallback_save - else - fallback_save = "if BigMeta or OmegaMeta then " .. fallback_save - end - fallback_save = fallback_save .. " end" - save_string = fallback_save .. " " .. save_string - save_string = love.data.compress('string', 'deflate', save_string, 1) - love.filesystem.write(_file,save_string) -end - - while true do - --Monitor the channel for any new requests - local request = CHANNEL:demand() -- Value from channel - if request then - --Saves progress for settings, unlocks, alerts and discoveries - if request.type == 'save_progress' then - local prefix_profile = (request.save_progress.SETTINGS.profile or 1)..'' - if not love.filesystem.getInfo(prefix_profile) then love.filesystem.createDirectory( prefix_profile ) end - prefix_profile = prefix_profile..'/' - - if not love.filesystem.getInfo(prefix_profile..'meta.jkr') then - love.filesystem.append( prefix_profile..'meta.jkr', 'return {}' ) - end - - local meta = STR_UNPACK(get_compressed(prefix_profile..'meta.jkr') or 'return {}') - meta.unlocked = meta.unlocked or {} - meta.discovered = meta.discovered or {} - meta.alerted = meta.alerted or {} - - local _append = false - - for k, v in pairs(request.save_progress.UDA) do - if string.find(v, 'u') and not meta.unlocked[k] then - meta.unlocked[k] = true - _append = true - end - if string.find(v, 'd') and not meta.discovered[k] then - meta.discovered[k] = true - _append = true - end - if string.find(v, 'a') and not meta.alerted[k] then - meta.alerted[k] = true - _append = true - end - end - if _append then compress_and_save( prefix_profile..'meta.jkr', STR_PACK(meta)) end - - compress_and_save('settings.jkr', request.save_progress.SETTINGS) - compress_and_save(prefix_profile..'profile.jkr', request.save_progress.PROFILE) - - CHANNEL:push('done') - --Saves the settings file - elseif request.type == 'save_settings' then - compress_and_save('settings.jkr', request.save_settings) - compress_and_save(request.profile_num..'/profile.jkr', request.save_profile) - --Saves the metrics file - elseif request.type == 'save_metrics' then - compress_and_save('metrics.jkr', request.save_metrics) - --Saves any notifications - elseif request.type == 'save_notify' then - local prefix_profile = (request.profile_num or 1)..'' - if not love.filesystem.getInfo(prefix_profile) then love.filesystem.createDirectory( prefix_profile ) end - prefix_profile = prefix_profile..'/' - - if not love.filesystem.getInfo(prefix_profile..'unlock_notify.jkr') then love.filesystem.append( prefix_profile..'unlock_notify.jkr', '') end - local unlock_notify = get_compressed(prefix_profile..'unlock_notify.jkr') or '' - - if request.save_notify and not string.find(unlock_notify, request.save_notify) then - compress_and_save( prefix_profile..'unlock_notify.jkr', unlock_notify..request.save_notify..'\n') - end - - --Saves the run - elseif request.type == 'save_run' then - local prefix_profile = (request.profile_num or 1)..'' - if not love.filesystem.getInfo(prefix_profile) then love.filesystem.createDirectory( prefix_profile ) end - prefix_profile = prefix_profile..'/' - - tal_compress_and_save(prefix_profile..'save.jkr', request.save_table) - end - end -end]]), -''' -match_indent = true - # naneinf crash fixes [[patches]] [patches.pattern] @@ -1224,4 +1281,70 @@ if not SMODS and type(subpart) ~= 'string' then end end ''' -match_indent = false \ No newline at end of file +match_indent = false + +# Patch save manager to do Talisman things +[[patches]] +[patches.pattern] +target = 'engine/save_manager.lua' +pattern = 'CHANNEL = love.thread.getChannel("save_request")' +position = 'after' +payload = ''' +function tal_compress_and_save(_file, _data, talisman) + local save_string = type(_data) == 'table' and STR_PACK(_data) or _data + local fallback_save = STR_PACK({GAME = {won = true}}) --just bare minimum to not crash, maybe eventually display some info? + if talisman == 'bignumber' then + fallback_save = "if not BigMeta then " .. fallback_save + elseif talisman == 'omeganum' then + fallback_save = "if not OmegaMeta then " .. fallback_save + else + fallback_save = "if BigMeta or OmegaMeta then " .. fallback_save + end + fallback_save = fallback_save .. " end" + save_string = fallback_save .. " " .. save_string + save_string = love.data.compress('string', 'deflate', save_string, 1) + love.filesystem.write(_file,save_string) +end +''' +match_indent = true + +[[patches]] +[patches.pattern] +target = 'engine/save_manager.lua' +pattern = "compress_and_save(prefix_profile..'save.jkr', request.save_table)" +position = 'at' +payload = "tal_compress_and_save(prefix_profile..'save.jkr', request.save_table, request.talisman)" +match_indent = true + +[[patches]] +[patches.pattern] +target = 'game.lua' +pattern = "type = 'save_run'," +position = 'after' +payload = 'talisman = Talisman.config_file.break_infinity,' +match_indent = true + +# Fix some card_eval_status_text crashes +[[patches]] +[patches.pattern] +target = 'functions/common_events.lua' +pattern = "text = localize{type='variable',key='a_chips'..(amt<0 and '_minus' or ''),vars={math.abs(amt)}}" +position = 'at' +payload = "text = localize{type='variable',key='a_chips'..(to_big(amt) to_big(1e300) then + G.PROFILES[G.SETTINGS.profile].career_stats[stat] = to_big(1e300) + elseif G.PROFILES[G.SETTINGS.profile].career_stats[stat] < to_big(-1e300) then + G.PROFILES[G.SETTINGS.profile].career_stats[stat] = to_big(-1e300) + end + G.PROFILES[G.SETTINGS.profile].career_stats[stat] = G.PROFILES[G.SETTINGS.profile].career_stats[stat]:to_number() + end + G:save_settings() + end + local sn = scale_number function scale_number(number, scale, max, e_switch_point) if not Big then return sn(number, scale, max, e_switch_point) end @@ -393,8 +419,8 @@ function tal_uht(config, vals) G.GAME.current_round.current_hand.hand_level = vals.level else G.GAME.current_round.current_hand.hand_level = ' '..localize('k_lvl')..tostring(vals.level) - if type(vals.level) == 'number' then - G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[math.min(vals.level, 7)] + if is_number(vals.level) then + G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[to_big(math.min(vals.level, 7)):to_number()] else G.hand_text_area.hand_level.config.colour = G.C.HAND_LEVELS[1] end @@ -428,135 +454,145 @@ function Game:update(dt) Talisman.dollar_update = false end end ---scoring coroutine -local oldplay = G.FUNCS.evaluate_play - -function G.FUNCS.evaluate_play() - G.SCORING_COROUTINE = coroutine.create(oldplay) - G.LAST_SCORING_YIELD = love.timer.getTime() - G.CARD_CALC_COUNTS = {} -- keys = cards, values = table containing numbers - local success, err = coroutine.resume(G.SCORING_COROUTINE) - if not success then - error(err) - end -end - - -local oldupd = love.update -function love.update(dt, ...) - oldupd(dt, ...) - if G.SCORING_COROUTINE then - if collectgarbage("count") > 1024*1024 then - collectgarbage("collect") - end - if coroutine.status(G.SCORING_COROUTINE) == "dead" then - G.SCORING_COROUTINE = nil - G.FUNCS.exit_overlay_menu() - local totalCalcs = 0 - for i, v in pairs(G.CARD_CALC_COUNTS) do - totalCalcs = totalCalcs + v[1] - end - G.GAME.LAST_CALCS = totalCalcs - else - G.SCORING_TEXT = nil - if not G.OVERLAY_MENU then - G.scoring_text = {"Calculating...", "", "", ""} - G.SCORING_TEXT = { - {n = G.UIT.C, nodes = { - {n = G.UIT.R, config = {padding = 0.1, align = "cm"}, nodes = { - {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 1}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 1, silent = true})}}, - }},{n = G.UIT.R, nodes = { - {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 2}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 0.4, silent = true})}}, - }},{n = G.UIT.R, nodes = { - {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 3}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 0.4, silent = true})}}, - }},{n = G.UIT.R, nodes = { - {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 4}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 0.4, silent = true})}}, - }}}}} - G.FUNCS.overlay_menu({ - definition = - {n=G.UIT.ROOT, minw = G.ROOM.T.w*5, minh = G.ROOM.T.h*5, config={align = "cm", padding = 9999, offset = {x = 0, y = -3}, r = 0.1, colour = {G.C.GREY[1], G.C.GREY[2], G.C.GREY[3],0.7}}, nodes= G.SCORING_TEXT}, - config = {align="cm", offset = {x=0,y=0}, major = G.ROOM_ATTACH, bond = 'Weak'} - }) - else - - if G.OVERLAY_MENU and G.scoring_text then - local totalCalcs = 0 - for i, v in pairs(G.CARD_CALC_COUNTS) do - totalCalcs = totalCalcs + v[1] - end - local jokersYetToScore = #G.jokers.cards + #G.play.cards - #G.CARD_CALC_COUNTS - G.scoring_text[1] = "Calculating..." - G.scoring_text[2] = "Elapsed calculations: "..tostring(totalCalcs) - G.scoring_text[3] = "Cards yet to score: "..tostring(jokersYetToScore) - G.scoring_text[4] = "Calculations last played hand: " .. tostring(G.GAME.LAST_CALCS or "Unknown") - end - - end - --this coroutine allows us to stagger GC cycles through - --the main source of waste in terms of memory (especially w joker retriggers) is through local variables that become garbage - --this practically eliminates the memory overhead of scoring - --event queue overhead seems to not exist if Talismans Disable Scoring Animations is off. - --event manager has to wait for scoring to finish until it can keep processing events anyways. - - - G.LAST_SCORING_YIELD = love.timer.getTime() - - local success, msg = coroutine.resume(G.SCORING_COROUTINE) - if not success then - error(msg) - end - end - end -end - - - -TIME_BETWEEN_SCORING_FRAMES = 0.03 -- 30 fps during scoring --- we dont want overhead from updates making scoring much slower --- originally 10 fps, I think 30 fps is a good way to balance it while making it look smooth, too ---wrap everything in calculating contexts so we can do more things with it -Talisman.calculating_joker = false -Talisman.calculating_score = false -Talisman.calculating_card = false -Talisman.dollar_update = false -local ccj = Card.calculate_joker -function Card:calculate_joker(context) +Talisman.F_NO_COROUTINE = false --easy disabling for bugfixing, since the coroutine can make it hard to see where errors are +if not Talisman.F_NO_COROUTINE then --scoring coroutine - G.CURRENT_SCORING_CARD = self - G.CARD_CALC_COUNTS = G.CARD_CALC_COUNTS or {} - if G.CARD_CALC_COUNTS[self] then - G.CARD_CALC_COUNTS[self][1] = G.CARD_CALC_COUNTS[self][1] + 1 - else - G.CARD_CALC_COUNTS[self] = {1, 1} + local oldplay = G.FUNCS.evaluate_play + + function G.FUNCS.evaluate_play() + G.SCORING_COROUTINE = coroutine.create(oldplay) + G.LAST_SCORING_YIELD = love.timer.getTime() + G.CARD_CALC_COUNTS = {} -- keys = cards, values = table containing numbers + local success, err = coroutine.resume(G.SCORING_COROUTINE) + if not success then + error(err) + end end - if G.LAST_SCORING_YIELD and ((love.timer.getTime() - G.LAST_SCORING_YIELD) > TIME_BETWEEN_SCORING_FRAMES) and coroutine.running() then - coroutine.yield() - end - Talisman.calculating_joker = true - local ret = ccj(self, context) + local oldupd = love.update + function love.update(dt, ...) + oldupd(dt, ...) + if G.SCORING_COROUTINE then + if collectgarbage("count") > 1024*1024 then + collectgarbage("collect") + end + if coroutine.status(G.SCORING_COROUTINE) == "dead" then + G.SCORING_COROUTINE = nil + G.FUNCS.exit_overlay_menu() + local totalCalcs = 0 + for i, v in pairs(G.CARD_CALC_COUNTS) do + totalCalcs = totalCalcs + v[1] + end + G.GAME.LAST_CALCS = totalCalcs + G.GAME.LAST_CALC_TIME = G.CURRENT_CALC_TIME + else + G.SCORING_TEXT = nil + if not G.OVERLAY_MENU then + G.scoring_text = {"Calculating...", "", "", ""} + G.SCORING_TEXT = { + {n = G.UIT.C, nodes = { + {n = G.UIT.R, config = {padding = 0.1, align = "cm"}, nodes = { + {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 1}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 1, silent = true})}}, + }},{n = G.UIT.R, nodes = { + {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 2}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 0.4, silent = true})}}, + }},{n = G.UIT.R, nodes = { + {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 3}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 0.4, silent = true})}}, + }},{n = G.UIT.R, nodes = { + {n=G.UIT.O, config={object = DynaText({string = {{ref_table = G.scoring_text, ref_value = 4}}, colours = {G.C.UI.TEXT_LIGHT}, shadow = true, pop_in = 0, scale = 0.4, silent = true})}}, + }}}}} + G.FUNCS.overlay_menu({ + definition = + {n=G.UIT.ROOT, minw = G.ROOM.T.w*5, minh = G.ROOM.T.h*5, config={align = "cm", padding = 9999, offset = {x = 0, y = -3}, r = 0.1, colour = {G.C.GREY[1], G.C.GREY[2], G.C.GREY[3],0.7}}, nodes= G.SCORING_TEXT}, + config = {align="cm", offset = {x=0,y=0}, major = G.ROOM_ATTACH, bond = 'Weak'} + }) + else - if ret and type(ret) == "table" and ret.repetitions then - G.CARD_CALC_COUNTS[ret.card] = G.CARD_CALC_COUNTS[ret.card] or {1,1} - G.CARD_CALC_COUNTS[ret.card][2] = G.CARD_CALC_COUNTS[ret.card][2] + ret.repetitions + if G.OVERLAY_MENU and G.scoring_text then + local totalCalcs = 0 + for i, v in pairs(G.CARD_CALC_COUNTS) do + totalCalcs = totalCalcs + v[1] + end + local jokersYetToScore = #G.jokers.cards + #G.play.cards - #G.CARD_CALC_COUNTS + G.CURRENT_CALC_TIME = (G.CURRENT_CALC_TIME or 0) + dt + G.scoring_text[1] = "Calculating..." + G.scoring_text[2] = "Elapsed calculations: "..tostring(totalCalcs).." ("..tostring(number_format(G.CURRENT_CALC_TIME)).."s)" + G.scoring_text[3] = "Cards yet to score: "..tostring(jokersYetToScore) + G.scoring_text[4] = "Calculations last played hand: " .. tostring(G.GAME.LAST_CALCS or "Unknown") .." ("..tostring(G.GAME.LAST_CALC_TIME and number_format(G.GAME.LAST_CALC_TIME) or "???").."s)" + end + + end + --this coroutine allows us to stagger GC cycles through + --the main source of waste in terms of memory (especially w joker retriggers) is through local variables that become garbage + --this practically eliminates the memory overhead of scoring + --event queue overhead seems to not exist if Talismans Disable Scoring Animations is off. + --event manager has to wait for scoring to finish until it can keep processing events anyways. + + + G.LAST_SCORING_YIELD = love.timer.getTime() + + local success, msg = coroutine.resume(G.SCORING_COROUTINE) + if not success then + error(msg) + end + end + end end + + + + TIME_BETWEEN_SCORING_FRAMES = 0.03 -- 30 fps during scoring + -- we dont want overhead from updates making scoring much slower + -- originally 10 fps, I think 30 fps is a good way to balance it while making it look smooth, too + --wrap everything in calculating contexts so we can do more things with it Talisman.calculating_joker = false - return ret -end -local cuc = Card.use_consumable -function Card:use_consumable(x,y) - Talisman.calculating_score = true - local ret = cuc(self, x,y) Talisman.calculating_score = false - return ret -end -local gfep = G.FUNCS.evaluate_play -G.FUNCS.evaluate_play = function(e) - Talisman.calculating_score = true - local ret = gfep(e) - Talisman.calculating_score = false - return ret + Talisman.calculating_card = false + Talisman.dollar_update = false + local ccj = Card.calculate_joker + function Card:calculate_joker(context) + --scoring coroutine + G.CURRENT_SCORING_CARD = self + G.CARD_CALC_COUNTS = G.CARD_CALC_COUNTS or {} + if G.CARD_CALC_COUNTS[self] then + G.CARD_CALC_COUNTS[self][1] = G.CARD_CALC_COUNTS[self][1] + 1 + else + G.CARD_CALC_COUNTS[self] = {1, 1} + end + + + if G.LAST_SCORING_YIELD and ((love.timer.getTime() - G.LAST_SCORING_YIELD) > TIME_BETWEEN_SCORING_FRAMES) and coroutine.running() then + coroutine.yield() + end + Talisman.calculating_joker = true + local ret, trig = ccj(self, context) + + if ret and type(ret) == "table" and ret.repetitions then + if not ret.card then + G.CARD_CALC_COUNTS.other = G.CARD_CALC_COUNTS.other or {1,1} + G.CARD_CALC_COUNTS.other[2] = G.CARD_CALC_COUNTS.other[2] + ret.repetitions + else + G.CARD_CALC_COUNTS[ret.card] = G.CARD_CALC_COUNTS[ret.card] or {1,1} + G.CARD_CALC_COUNTS[ret.card][2] = G.CARD_CALC_COUNTS[ret.card][2] + ret.repetitions + end + end + Talisman.calculating_joker = false + return ret, trig + end + local cuc = Card.use_consumable + function Card:use_consumable(x,y) + Talisman.calculating_score = true + local ret = cuc(self, x,y) + Talisman.calculating_score = false + return ret + end + local gfep = G.FUNCS.evaluate_play + G.FUNCS.evaluate_play = function(e) + Talisman.calculating_score = true + local ret = gfep(e) + Talisman.calculating_score = false + return ret + end end --[[local ec = eval_card function eval_card() @@ -651,7 +687,7 @@ local edo = ease_dollars function ease_dollars(mod, instant) if Talisman.config_file.disable_anims then--and (Talisman.calculating_joker or Talisman.calculating_score or Talisman.calculating_card) then mod = mod or 0 - if mod < 0 then inc_career_stat('c_dollars_earned', mod) end + if to_big(mod) < to_big(0) then inc_career_stat('c_dollars_earned', mod) end G.GAME.dollars = G.GAME.dollars + mod Talisman.dollar_update = true else return edo(mod, instant) end @@ -666,11 +702,13 @@ function safe_str_unpack(str) if success then return result else - print("Error unpacking string: " .. result) + print("[Talisman] Error unpacking string: " .. result) + print(tostring(str)) return nil end else - print("Error loading string: " .. err) + print("[Talisman] Error loading string: " .. err) + print(tostring(str)) return nil end end @@ -699,6 +737,207 @@ function G.FUNCS.evaluate_round() end end +local g_start_run = Game.start_run +function Game:start_run(args) + local ret = g_start_run(self, args) + self.GAME.round_resets.ante_disp = self.GAME.round_resets.ante_disp or number_format(self.GAME.round_resets.ante) + return ret +end + +-- Steamodded calculation API: add extra operations +if SMODS and SMODS.calculate_individual_effect then + local smods_xchips = false + for _, v in pairs(SMODS.calculation_keys) do + if v == 'x_chips' then + smods_xchips = true + break + end + end + local scie = SMODS.calculate_individual_effect + function SMODS.calculate_individual_effect(effect, scored_card, key, amount, from_edition) + -- For some reason, some keys' animations are completely removed + -- I think this is caused by a lovely patch conflict + --if key == 'chip_mod' then key = 'chips' end + --if key == 'mult_mod' then key = 'mult' end + --if key == 'Xmult_mod' then key = 'x_mult' end + local ret = scie(effect, scored_card, key, amount, from_edition) + if ret then + return ret + end + if not smods_xchips and (key == 'x_chips' or key == 'xchips' or key == 'Xchip_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + hand_chips = mod_chips(hand_chips * amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "X"..amount, colour = G.C.EDITION, edition = true}) + elseif key ~= 'Xchip_mod' then + if effect.xchip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.xchip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'x_chips', amount, percent) + end + end + end + return true + end + + if (key == 'e_chips' or key == 'echips' or key == 'Echip_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + hand_chips = mod_chips(hand_chips ^ amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "^"..amount, colour = G.C.EDITION, edition = true}) + elseif key ~= 'Echip_mod' then + if effect.echip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.echip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'e_chips', amount, percent) + end + end + end + return true + end + + if (key == 'ee_chips' or key == 'eechips' or key == 'EEchip_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + hand_chips = mod_chips(hand_chips:arrow(2, amount)) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "^^"..amount, colour = G.C.EDITION, edition = true}) + elseif key ~= 'EEchip_mod' then + if effect.eechip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.eechip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'ee_chips', amount, percent) + end + end + end + return true + end + + if (key == 'eee_chips' or key == 'eeechips' or key == 'EEEchip_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + hand_chips = mod_chips(hand_chips:arrow(3, amount)) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "^^^"..amount, colour = G.C.EDITION, edition = true}) + elseif key ~= 'EEEchip_mod' then + if effect.eeechip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.eeechip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'eee_chips', amount, percent) + end + end + end + return true + end + + if (key == 'hyper_chips' or key == 'hyperchips' or key == 'hyperchip_mod') and type(amount) == 'table' then + if effect.card then juice_card(effect.card) end + hand_chips = mod_chips(hand_chips:arrow(amount[1], amount[2])) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = (amount[1] > 5 and ('{' .. amount[1] .. '}') or string.rep('^', amount[1])) .. amount[2], colour = G.C.EDITION, edition = true}) + elseif key ~= 'hyperchip_mod' then + if effect.hyperchip_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.hyperchip_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'hyper_chips', amount, percent) + end + end + end + return true + end + + if (key == 'e_mult' or key == 'emult' or key == 'Emult_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + mult = mod_mult(mult ^ amount) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "^"..amount.." Mult", colour = G.C.EDITION, edition = true}) + elseif key ~= 'Emult_mod' then + if effect.emult_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.emult_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'e_mult', amount, percent) + end + end + end + return true + end + + if (key == 'ee_mult' or key == 'eemult' or key == 'EEmult_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + mult = mod_mult(mult:arrow(2, amount)) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "^^"..amount.." Mult", colour = G.C.EDITION, edition = true}) + elseif key ~= 'EEmult_mod' then + if effect.eemult_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.eemult_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'ee_mult', amount, percent) + end + end + end + return true + end + + if (key == 'eee_mult' or key == 'eeemult' or key == 'EEEmult_mod') and amount ~= 1 then + if effect.card then juice_card(effect.card) end + mult = mod_mult(mult:arrow(3, amount)) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = "^^^"..amount.." Mult", colour = G.C.EDITION, edition = true}) + elseif key ~= 'EEEmult_mod' then + if effect.eeemult_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.eeemult_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'eee_mult', amount, percent) + end + end + end + return true + end + + if (key == 'hyper_mult' or key == 'hypermult' or key == 'hypermult_mod') and type(amount) == 'table' then + if effect.card then juice_card(effect.card) end + mult = mod_mult(mult:arrow(amount[1], amount[2])) + update_hand_text({delay = 0}, {chips = hand_chips, mult = mult}) + if not effect.remove_default_message then + if from_edition then + card_eval_status_text(scored_card, 'jokers', nil, percent, nil, {message = ((amount[1] > 5 and ('{' .. amount[1] .. '}') or string.rep('^', amount[1])) .. amount[2]).." Mult", colour = G.C.EDITION, edition = true}) + elseif key ~= 'hypermult_mod' then + if effect.hypermult_message then + card_eval_status_text(scored_card or effect.card or effect.focus, 'extra', nil, percent, nil, effect.hypermult_message) + else + card_eval_status_text(scored_card or effect.card or effect.focus, 'hyper_mult', amount, percent) + end + end + end + return true + end + end + for _, v in ipairs({'e_mult', 'e_chips', 'ee_mult', 'ee_chips', 'eee_mult', 'eee_chips', 'hyper_mult', 'hyper_chips', + 'emult', 'echips', 'eemult', 'eechips', 'eeemult', 'eeechips', 'hypermult', 'hyperchips', + 'Emult_mod', 'Echip_mod', 'EEmult_mod', 'EEchip_mod', 'EEEmult_mod', 'EEEchip_mod', 'hypermult_mod', 'hyperchip_mod'}) do + table.insert(SMODS.calculation_keys, v) + end + if not smods_xchips then + for _, v in ipairs({'x_chips', 'xchips', 'Xchip_mod'}) do + table.insert(SMODS.calculation_keys, v) + end + end +end + --some debugging functions --[[local callstep=0 function printCallerInfo() diff --git a/smods-old-calc/lovely/achievements.toml b/smods-old-calc/lovely/achievements.toml deleted file mode 100644 index 24ac308..0000000 --- a/smods-old-calc/lovely/achievements.toml +++ /dev/null @@ -1,117 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -## Achievement API - -# fetch_achievements() -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '''(?[\t ]*)if G\.F_NO_ACHIEVEMENTS then return end\n\n[\s\S]{4}--\|FROM LOCAL SETTINGS FILE''' -position = 'before' -# match_indent = true -line_prepend = '$indent' -payload = ''' -G.SETTINGS.ACHIEVEMENTS_EARNED = G.SETTINGS.ACHIEVEMENTS_EARNED or {} -for k, v in pairs(G.ACHIEVEMENTS) do - if not v.key then v.key = k end - for kk, vv in pairs(G.SETTINGS.ACHIEVEMENTS_EARNED) do - if G.ACHIEVEMENTS[kk] and G.ACHIEVEMENTS[kk].mod then - G.ACHIEVEMENTS[kk].earned = true - end - end -end''' - -# check_for_unlock -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''if G.GAME.challenge then return end''' -position = "after" -payload = ''' -fetch_achievements() -- Refreshes achievements -for k, v in pairs(G.ACHIEVEMENTS) do - if (not v.earned) and (v.unlock_condition and type(v.unlock_condition) == 'function') and v:unlock_condition(args) then - unlock_achievement(k) - end -end''' -match_indent = true - -# unlock_achievement() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''if G.PROFILES[G.SETTINGS.profile].all_unlocked then return end''' -position = "at" -payload = '''if G.PROFILES[G.SETTINGS.profile].all_unlocked and (G.ACHIEVEMENTS and G.ACHIEVEMENTS[achievement_name] and not G.ACHIEVEMENTS[achievement_name].bypass_all_unlocked and SMODS.config.achievements < 3) or (SMODS.config.achievements < 3 and (G.GAME.seeded or G.GAME.challenge)) then return end''' -match_indent = true - -# unlock_achievement() - fix event queue leaking -# fixed smods achievements not unlocking due to above comment's memory leak fix -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''if G.F_NO_ACHIEVEMENTS then return end''' -position = "at" -payload = '''if G.F_NO_ACHIEVEMENTS and not (G.ACHIEVEMENTS[achievement_name] or {}).mod then return true end''' -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '''(?[\t ]*)if G\.F_NO_ACHIEVEMENTS then return end\n[\s\S][\s\S]{16}--\|LOCAL SETTINGS FILE''' -position = 'before' -# match_indent = true -line_prepend = '$indent' -payload = ''' -if not G.ACHIEVEMENTS then fetch_achievements() end - -G.SETTINGS.ACHIEVEMENTS_EARNED[achievement_name] = true -G:save_progress() - -if G.ACHIEVEMENTS[achievement_name] and G.ACHIEVEMENTS[achievement_name].mod then - if not G.ACHIEVEMENTS[achievement_name].earned then - --|THIS IS THE FIRST TIME THIS ACHIEVEMENT HAS BEEN EARNED - achievement_set = true - G.FILE_HANDLER.force = true - end - G.ACHIEVEMENTS[achievement_name].earned = true -end - -if achievement_set then - notify_alert(achievement_name) - return true -end''' - -# create_UIBox_notify_alert -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''local t_s = Sprite(0,0,1.5*(_atlas.px/_atlas.py),1.5,_atlas, _c and _c.pos or {x=3, y=0})''' -position = "before" -payload = '''if SMODS.Achievements[_achievement] then _c = SMODS.Achievements[_achievement]; _atlas = G.ASSET_ATLAS[_c.atlas] end''' -match_indent = true - -# option to allow unlocks and discoveries in seeded runs -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = 'if G\.GAME\.seeded or G\.GAME\.challenge then return end' -position = 'at' -payload = 'if not SMODS.config.seeded_unlocks and (G.GAME.seeded or G.GAME.challenge) then return end' - -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = 'if G\.GAME\.seeded then' -position = 'at' -payload = 'if false then' - -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = 'if G\.GAME\.challenge then' -position = 'at' -payload = 'if false then' diff --git a/smods-old-calc/lovely/atlas.toml b/smods-old-calc/lovely/atlas.toml deleted file mode 100644 index a3a1009..0000000 --- a/smods-old-calc/lovely/atlas.toml +++ /dev/null @@ -1,102 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Sprite API - -# Card:set_sprites() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = 'G.ASSET_ATLAS\["centers"\]' -position = 'at' -payload = "G.ASSET_ATLAS[(G.GAME.viewed_back or G.GAME.selected_back) and ((G.GAME.viewed_back or G.GAME.selected_back)[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or (G.GAME.viewed_back or G.GAME.selected_back).atlas) or 'centers']" - -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = 'G.ASSET_ATLAS\[_center.atlas or _center.set\]' -position = 'at' -payload = ''' -G.ASSET_ATLAS[(_center.undiscovered and (_center.undiscovered[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or _center.undiscovered.atlas)) - or (SMODS.UndiscoveredSprites[_center.set] and (SMODS.UndiscoveredSprites[_center.set][G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or SMODS.UndiscoveredSprites[_center.set].atlas)) - or _center.set] or G.ASSET_ATLAS["Joker"]''' - -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "G.ASSET_ATLAS\\['Joker'\\]" -position = 'at' -payload = "G.ASSET_ATLAS[_center[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or _center.atlas or _center.set]" - -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = 'G.ASSET_ATLAS\[_center.set\]' -position = 'at' -payload = "G.ASSET_ATLAS[_center[G.SETTINGS.colourblind_option and 'hc_atlas' or 'lc_atlas'] or _center.atlas or _center.set]" - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "(_center.set == 'Joker' and G.j_undiscovered.pos) or" -position = 'before' -payload = '(_center.undiscovered and _center.undiscovered.pos) or (SMODS.UndiscoveredSprites[_center.set] and SMODS.UndiscoveredSprites[_center.set].pos) or' -match_indent = true - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''(_center.set == 'Booster' and G.booster_undiscovered.pos))''' -position = 'at' -payload = '''(_center.set == 'Booster' and G.booster_undiscovered.pos) or G.j_undiscovered.pos)''' -match_indent = true - -# get_front_spriteinfo() - -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'return G.ASSET_ATLAS[_front.atlas] or G.ASSET_ATLAS["cards_"..(G.SETTINGS.colourblind_option and 2 or 1)], _front.pos' -position = 'at' -match_indent = true -payload = 'return G.ASSET_ATLAS[G.SETTINGS.colourblind_option and _front.hc_atlas or _front.lc_atlas or {}] or G.ASSET_ATLAS[_front.atlas] or G.ASSET_ATLAS["cards_"..(G.SETTINGS.colourblind_option and 2 or 1)], _front.pos' - - -# Game:set_render_settings() -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "G:set_render_settings()" -position = 'at' -match_indent = true -payload = "SMODS.injectObjects(SMODS.Atlas)" - - -# create_UIBox_notify_alert() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'G.ASSET_ATLAS["icons"]' -position = 'after' -match_indent = false -payload = ''' - local _smods_atlas = _c and ((G.SETTINGS.colourblind_option and _c.hc_atlas or _c.lc_atlas) or _c.atlas) - if _smods_atlas then - _atlas = G.ASSET_ATLAS[_smods_atlas] or _atlas - end''' - -## Hide floating ? from undiscovered types -# Card:draw() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''shared_sprite:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod, rotate_mod)''' -position = 'at' -match_indent = true -payload = ''' -if (self.config.center.undiscovered and not self.config.center.undiscovered.no_overlay) or not( SMODS.UndiscoveredSprites[self.ability.set] and SMODS.UndiscoveredSprites[self.ability.set].no_overlay) then - shared_sprite:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod, rotate_mod) -else -end''' diff --git a/smods-old-calc/lovely/back.toml b/smods-old-calc/lovely/back.toml deleted file mode 100644 index c769b4e..0000000 --- a/smods-old-calc/lovely/back.toml +++ /dev/null @@ -1,316 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Back API - -# Back:init() -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = "if not selected_back then selected_back = G.P_CENTERS.b_red end" -position = 'after' -match_indent = true -payload = "self.atlas = selected_back.unlocked and selected_back.atlas or nil" - -# Back:change_to() -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = "if not new_back then new_back = G.P_CENTERS.b_red end" -position = 'after' -match_indent = true -payload = "self.atlas = new_back.unlocked and new_back.atlas or nil" - -# G.FUNCS.change_viewed_back -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "G.PROFILES[G.SETTINGS.profile].MEMORY.deck = args.to_val" -position = 'after' -match_indent = true -payload = ''' -for key, val in pairs(G.sticker_card.area.cards) do - val.children.back = false - val:set_ability(val.config.center, true) -end''' - -# Back:apply_to_run() -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = "function Back:apply_to_run()" -position = 'after' -match_indent = true -payload = ''' - local obj = self.effect.center - if obj.apply and type(obj.apply) == 'function' then - obj:apply() - end''' - -# Back:trigger_effect(args) -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = "if not args then return end" -position = 'after' -match_indent = true -payload = ''' - local obj = self.effect.center - if obj.trigger_effect and type(obj.trigger_effect) == 'function' then - local o = {obj:trigger_effect(args)} - if o then return unpack(o) end - end''' - -## Additonal trigger_effect contexts -## calculate_joker -# card.lua -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({remove_playing_cards = true, removed = destroyed_cards}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'remove_playing_cards', removed = destroyed_cards})''' - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({open_booster = true, card = self}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'open_booster', card = self})''' - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({buying_card = true, card = self}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'buying_card', card = self})''' - -# game.lua -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({first_hand_drawn = true}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'first_hand_drawn'})''' - -# functions/button_callbacks.lua -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({using_consumeable = true, consumeable = card}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'using_consumeable', consumeable = card})''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({selling_card = true, card = card}) - end - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'selling_card', card = card})''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({buying_card = true, card = c1}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'buying_card', card = c1})''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({ending_shop = true}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'ending_shop'})''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({skipping_booster = true}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'skipping_booster'})''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({skip_blind = true}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'skip_blind'})''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({reroll_shop = true}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'reroll_shop'})''' - -# functions/state_events.lua -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''G.jokers.cards[i]:calculate_perishable() - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'end_of_round', game_over = game_over})''' - -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''G.jokers.cards[i]:calculate_joker({setting_blind = true, blind = G.GAME.round_resets.blind}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'setting_blind', blind = G.GAME.round_resets.blind})''' - -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''card_eval_status_text(G.jokers.cards[j], 'jokers', nil, 1, nil, eval) - end - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'discard', other_card = G.hand.highlighted[i], full_hand = G.hand.highlighted})''' - -## eval_card -# functions/state_events.lua -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''level_up_hand(G.jokers.cards[i], text) - end - end - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'before_hand', full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands})''' - -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''local effects = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, joker_main = true})''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'joker_main', joker = _card, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands})''' - -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''eval_card(G.jokers.cards[j], {cardarea = G.jokers, remove_playing_cards = true, removed = cards_destroyed}) - end''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'remove_playing_cards', removed = cards_destroyed})''' - -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''end - end - - }) end -''' -position = 'after' -match_indent = true -payload = '''G.GAME.selected_back:trigger_effect({context = 'after', full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands})''' - -## Back:generate_UI - -# Localization with `unlock` field in loc_txt, same as for Jokers -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = 'if not back_config.unlock_condition then' -position = 'at' -payload = ''' -local localized_by_smods -local key_override -if back_config.locked_loc_vars and type(back_config.locked_loc_vars) == 'function' then - local res = back_config:locked_loc_vars() or {} - loc_args = res.vars or {} - key_override = res.key -end -if G.localization.descriptions.Back[key_override or back_config.key].unlock_parsed then - localize{type = 'unlocks', key = key_override or back_config.key, set = 'Back', nodes = loc_nodes, vars = loc_args} - localized_by_smods = true -end -if not back_config.unlock_condition then''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = '''localize{type = 'descriptions', key = 'demo_locked', set = "Other", nodes = loc_nodes, vars = loc_args}''' -position = 'at' -payload = ''' -if not localized_by_smods then - localize{type = 'descriptions', key = 'demo_locked', set = "Other", nodes = loc_nodes, vars = loc_args} -end''' -match_indent = true - -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = 'loc_args = {other_name}' -position = 'at' -payload = 'loc_args = loc_args or {other_name}' -match_indent = true -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = 'loc_args = {tostring(back_config.unlock_condition.amount)}' -position = 'at' -payload = 'loc_args = loc_args or {tostring(back_config.unlock_condition.amount)}' -match_indent = true -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = 'loc_args = {other_name, colours = {get_stake_col(back_config.unlock_condition.stake)}}' -position = 'at' -payload = 'loc_args = loc_args or {other_name, colours = {get_stake_col(back_config.unlock_condition.stake)}}' -match_indent = true - -[[patches]] -[patches.pattern] -target = 'back.lua' -pattern = "if name_to_check == 'Blue Deck'*" -position = 'at' -match_indent = true -payload = ''' -local key_override -if back_config.loc_vars and type(back_config.loc_vars) == 'function' then - local res = back_config:loc_vars() or {} - loc_args = res.vars or {} - key_override = res.key -elseif name_to_check == 'Blue Deck' then loc_args = {effect_config.hands}''' - -[[patches]] -[patches.regex] -target = 'back.lua' -pattern = "key = back_config\\.key" -position = 'at' -payload = "key = key_override or back_config.key" diff --git a/smods-old-calc/lovely/blind.toml b/smods-old-calc/lovely/blind.toml deleted file mode 100644 index 8ca1152..0000000 --- a/smods-old-calc/lovely/blind.toml +++ /dev/null @@ -1,362 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Blind API - -## Set debuffed_by_blind, use it for Matador behavior -## Blind:debuff_card() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = 'card:set_debuff(true)' -position = 'after' -payload = "if card.debuff then card.debuffed_by_blind = true end" -match_indent = true -[[patches]] -[patches.regex] -target = 'blind.lua' -pattern = 'card:set_debuff\(true\); return end' -position = 'at' -payload = """ -card:set_debuff(true); if card.debuff then card.debuffed_by_blind = true end; return end""" - -## Card:set_debuff() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = ''' -self\.debuff = should_debuff -(?[\t ]*)end -''' -position = 'after' -payload = """if not self.debuff then self.debuffed_by_blind = false end - -""" -line_prepend = '$indent' - -## Blind functions - -# Blind:set_blind() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "G.GAME.last_blind = G.GAME.last_blind or {}" -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -self.children.animatedSprite.atlas = G.ANIMATION_ATLAS[obj.atlas] or G.ANIMATION_ATLAS['blind_chips']''' - -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = '--add new debuffs' -position = 'before' -match_indent = true -payload = ''' -if not reset then - local obj = self.config.blind - if obj.set_blind and type(obj.set_blind) == 'function' then - obj:set_blind() - end -end''' - -# Blind:disable() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.name == 'The Water' then" -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -if obj.disable and type(obj.disable) == 'function' then - obj:disable() -end''' - -# Blind:defeat() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.name == 'The Manacle' and not self.disabled then" -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -if obj.defeat and type(obj.defeat) == 'function' then - obj:defeat() -end''' - -# Blind:debuff_card() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.debuff and not self.disabled and card.area ~= G.jokers then" -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -if not self.disabled and obj.recalc_debuff and type(obj.recalc_debuff) == 'function' then - if obj:recalc_debuff(card, from_blind) then - card:set_debuff(true) - if card.debuff then card.debuffed_by_blind = true end - else - card:set_debuff(false) - end - return -elseif not self.disabled and obj.debuff_card and type(obj.debuff_card) == 'function' then - sendWarnMessage(("Blind object %s has debuff_card function, recalc_debuff is preferred"):format(obj.key), obj.set) - if obj:debuff_card(card, from_blind) then - card:set_debuff(true) - if card.debuff then card.debuffed_by_blind = true end - else - card:set_debuff(false) - end - return -end''' - -# Blind:stay_flipped() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if area == G.hand then" -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -if obj.stay_flipped and type(obj.stay_flipped) == 'function' then - return obj:stay_flipped(area, card) -end''' - -# Blind:drawn_to_hand() -[[patches]] -[patches.regex] -target = 'blind.lua' -pattern = "(?[\t ]*)if self.name == 'Cerulean Bell' then\n" -position = 'before' -line_prepend = '$indent' -payload = ''' -local obj = self.config.blind -if obj.drawn_to_hand and type(obj.drawn_to_hand) == 'function' then - obj:drawn_to_hand() -end''' - -# Blind:debuff_hand() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.debuff then" -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -if obj.debuff_hand and type(obj.debuff_hand) == 'function' then - return obj:debuff_hand(cards, hand, handname, check) -end''' - -# Blind:modify_hand() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.disabled then return mult, hand_chips, false end" -position = 'after' -match_indent = true -payload = ''' -local obj = self.config.blind -if obj.modify_hand and type(obj.modify_hand) == 'function' then - return obj:modify_hand(cards, poker_hands, text, mult, hand_chips) -end''' - -# Blind:press_play() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = 'if self.name == "The Hook" then' -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.blind -if obj.press_play and type(obj.press_play) == 'function' then - return obj:press_play() -end''' - -# Blind:get_loc_debuff_text() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = 'function Blind:get_loc_debuff_text()' -position = 'after' -match_indent = true -payload = ''' - local obj = self.config.blind - if obj.get_loc_debuff_text and type(obj.get_loc_debuff_text) == 'function' then - return obj:get_loc_debuff_text() - end''' - -# Blind:set_text() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "local loc_target = localize{type = 'raw_descriptions', key = self.config.blind.key, set = 'Blind', vars = loc_vars or self.config.blind.vars}" -position = 'at' -match_indent = true -payload = ''' -local target = {type = 'raw_descriptions', key = self.config.blind.key, set = 'Blind', vars = loc_vars or self.config.blind.vars} -local obj = self.config.blind -if obj.loc_vars and type(obj.loc_vars) == 'function' then - local res = obj:loc_vars() or {} - target.vars = res.vars or target.vars - target.key = res.key or target.key -end -local loc_target = localize(target)''' - -# Blind:load() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = 'if G.P_BLINDS[blindTable.config_blind] then' -position = 'after' -match_indent = true -payload = ''' -if self.config.blind.atlas then - self.children.animatedSprite.atlas = G.ANIMATION_ATLAS[self.config.blind.atlas] -end''' - - -# create_UIBox_blind_choice() -# create_UIBox_round_scores_row() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)blind_choice.animation = AnimatedSprite\\(0,0, 1.4, 1.4, (?G.ANIMATION_ATLAS\\['blind_chips'\\]), blind_choice.config.pos\\)" -position = 'at' -root_capture = 'atlas' -payload = "G.ANIMATION_ATLAS[blind_choice.config.atlas] or G.ANIMATION_ATLAS['blind_chips']" - -# create_UIBox_your_collection_blinds() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)local temp_blind = AnimatedSprite\\(0,0,1.3,1.3, G.ANIMATION_ATLAS\\['blind_chips'\\], discovered and v.pos or G.b_undiscovered.pos\\)" -position = 'at' -payload = ''' - -local s = 1.3 -if math.ceil(#blind_tab/6) > 6 then - s = s * 6/math.ceil(#blind_tab/6) -end -local temp_blind = AnimatedSprite(0,0,s,s, G.ANIMATION_ATLAS[discovered and v.atlas or 'blind_chips'], discovered and v.pos or G.b_undiscovered.pos)''' -line_prepend = '$indent' - -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'blind_matrix[math.ceil((k-1)/5+0.001)][1+((k-1)%5)] = {n=G.UIT.C, config={align = "cm", padding = 0.1}, nodes={' -match_indent = true -position = 'at' -payload = ''' -local blinds_per_row = math.ceil(#blind_tab / 6) -local row = math.ceil((k - 1) / blinds_per_row + 0.001) -table.insert(blind_matrix[row], { - n = G.UIT.C, - config = { align = "cm", padding = 0.1 }, - nodes = { - ((k - blinds_per_row) % (2 * blinds_per_row) == 1) and { n = G.UIT.B, config = { h = 0.2, w = 0.5 } } or nil, - { n = G.UIT.O, config = { object = temp_blind, focus_with_object = true } }, - ((k - blinds_per_row) % (2 * blinds_per_row) == 0) and { n = G.UIT.B, config = { h = 0.2, w = 0.5 } } or nil, - } -})''' - -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '[\t ]*\(k==6 or k ==16 or k == 26\) and \{n=G.UIT.B, config=\{h=0.2,w=0.5\}\} or nil,\n[\t ]*\{n=G.UIT.O, config=\{object = temp_blind, focus_with_object = true\}\},\n[\t ]*\(k==5 or k ==15 or k == 25\) and \{n=G.UIT.B, config=\{h=0.2,w=0.5\}\} or nil,\n[\t ]*\}\}' -position = 'at' -payload = '' - -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'table.sort(blind_tab, function (a, b) return a.order < b.order end)' -match_indent = true -position = 'at' -payload = ''' -table.sort(blind_tab, function(a, b) return a.order + (a.boss and a.boss.showdown and 1000 or 0) < b.order + (b.boss and b.boss.showdown and 1000 or 0) end)''' - -# add_round_eval_row() -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "local blind_sprite = AnimatedSprite(0, 0, 1.2,1.2, G.ANIMATION_ATLAS['blind_chips'], copy_table(G.GAME.blind.pos))" -match_indent = true -position = 'at' -payload = ''' -local obj = G.GAME.blind.config.blind -local blind_sprite = AnimatedSprite(0, 0, 1.2, 1.2, G.ANIMATION_ATLAS[obj.atlas] or G.ANIMATION_ATLAS['blind_chips'], copy_table(G.GAME.blind.pos))''' - -# create_UIBox_blind_choice() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = "local loc_target = localize{type = 'raw_descriptions', key = blind_choice.config.key, set = 'Blind', vars = {localize(G.GAME.current_round.most_played_poker_hand, 'poker_hands')}}" -match_indent = true -position = 'at' -payload = ''' -local target = {type = 'raw_descriptions', key = blind_choice.config.key, set = 'Blind', vars = {}} -if blind_choice.config.name == 'The Ox' then - target.vars = {localize(G.GAME.current_round.most_played_poker_hand, 'poker_hands')} -end -local obj = blind_choice.config -if obj.loc_vars and _G['type'](obj.loc_vars) == 'function' then - local res = obj:loc_vars() or {} - target.vars = res.vars or target.vars - target.key = res.key or target.key -end -local loc_target = localize(target)''' - -# create_UIBox_blind_popup() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''local loc_target = localize{type = 'raw_descriptions', key = blind.key, set = 'Blind', vars = vars or blind.vars}''' -match_indent = true -position = 'at' -payload = ''' -local target = {type = 'raw_descriptions', key = blind.key, set = 'Blind', vars = vars or blind.vars} -if blind.collection_loc_vars and type(blind.collection_loc_vars) == 'function' then - local res = blind:collection_loc_vars() or {} - target.vars = res.vars or target.vars - target.key = res.key or target.key -end -local loc_target = localize(target)''' - -# get_new_boss() -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'elseif not v.boss.showdown*' -match_indent = true -position = 'before' -payload = ''' -elseif v.in_pool and type(v.in_pool) == 'function' then - local res, options = v:in_pool() - if - ( - ((G.GAME.round_resets.ante)%G.GAME.win_ante == 0 and G.GAME.round_resets.ante >= 2) == - (v.boss.showdown or false) - ) or - (options or {}).ignore_showdown_check - then - eligible_bosses[k] = res and true or nil - end''' - -# G.UIDEF.challenge_description_tab -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = "local temp_blind = AnimatedSprite(0,0,1,1, G.ANIMATION_ATLAS['blind_chips'], v.pos)" -position = 'at' -match_indent = true -payload = "local temp_blind = AnimatedSprite(0,0,1,1, G.ANIMATION_ATLAS[v.atlas or ''] or G.ANIMATION_ATLAS['blind_chips'], v.pos)" diff --git a/smods-old-calc/lovely/blind_ui.toml b/smods-old-calc/lovely/blind_ui.toml deleted file mode 100644 index 8c84f3f..0000000 --- a/smods-old-calc/lovely/blind_ui.toml +++ /dev/null @@ -1,150 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Allow blinds to have more than 2 lines - -# create_UIBox_blind_choice() -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if blind_state == 'Select' then blind_state = 'Current' end" -position = 'after' -payload = ''' -local blind_desc_nodes = {} -for k, v in ipairs(text_table) do - blind_desc_nodes[#blind_desc_nodes+1] = {n=G.UIT.R, config={align = "cm", maxw = 2.8}, nodes={ - {n=G.UIT.T, config={text = v or '-', scale = 0.32, colour = disabled and G.C.UI.TEXT_INACTIVE or G.C.WHITE, shadow = not disabled}} - }} -end''' -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = ''' -(?[\t ]*)text_table\[1\] and \{n=G\.UIT\.R, config=\{align = "cm", minh = 0\.7, padding = 0\.05, minw = 2\.9}, nodes=\{ -[\t ]* text_table\[1\] and \{n=G\.UIT\.R, config=\{align = "cm", maxw = 2\.8\}, nodes=\{ -[\t ]* \{n=G\.UIT\.T, config=\{id = blind_choice\.config\.key, ref_table = \{val = ''\}, ref_value = 'val', scale = 0\.32, colour = disabled and G\.C\.UI\.TEXT_INACTIVE or G\.C\.WHITE, shadow = not disabled, func = 'HUD_blind_debuff_prefix'\}\}, -[\t ]* \{n=G\.UIT\.T, config=\{text = text_table\[1\] or '\-', scale = 0\.32, colour = disabled and G\.C\.UI\.TEXT_INACTIVE or G\.C\.WHITE, shadow = not disabled\}\} -[\t ]* \}\} or nil, -[\t ]* text_table\[2\] and \{n=G\.UIT\.R, config=\{align = "cm", maxw = 2\.8\}, nodes=\{ -[\t ]* \{n=G\.UIT\.T, config=\{text = text_table\[2\] or '\-', scale = 0\.32, colour = disabled and G\.C\.UI\.TEXT_INACTIVE or G\.C\.WHITE, shadow = not disabled\}\} -[\t ]* \}\} or nil, -[\t ]*\}\} or nil,''' -position = "at" -payload = ''' -text_table[1] and {n=G.UIT.R, config={align = "cm", minh = 0.7, padding = 0.05, minw = 2.9}, nodes = blind_desc_nodes} or nil,''' -line_prepend = '$indent' - -# create_UIBox_HUD_blind() -# Padding and contained nodes are set in G.FUNCS.HUD_blind_debuff (overrides.lua) -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = ''' -(?[\t ]*)\{n=G\.UIT\.R, config=\{align = "cm", padding = 0\.05\}, nodes=\{ -[\t ]* \{n=G\.UIT\.R, config=\{align = "cm", minh = 0\.3, maxw = 4\.2\}, nodes=\{ -[\t ]* \{n=G\.UIT\.T, config=\{ref_table = \{val = ''\}, ref_value = 'val', scale = scale\*0\.9, colour = G\.C\.UI\.TEXT_LIGHT, func = 'HUD_blind_debuff_prefix'\}\}, -[\t ]* \{n=G\.UIT\.T, config=\{ref_table = G\.GAME\.blind\.loc_debuff_lines, ref_value = 1, scale = scale\*0\.9, colour = G\.C\.UI\.TEXT_LIGHT, id = 'HUD_blind_debuff_1', func = 'HUD_blind_debuff'\}\} -[\t ]* \}\}, -[\t ]* \{n=G\.UIT\.R, config=\{align = "cm", minh = 0\.3, maxw = 4\.2\}, nodes=\{ -[\t ]* \{n=G\.UIT\.T, config=\{ref_table = G\.GAME\.blind\.loc_debuff_lines, ref_value = 2, scale = scale\*0\.9, colour = G\.C\.UI\.TEXT_LIGHT, id = 'HUD_blind_debuff_2', func = 'HUD_blind_debuff'\}\} -[\t ]* \}\}, -[\t ]*\}\},''' -position = "at" -payload = ''' -{n=G.UIT.R, config={align = "cm", id = 'HUD_blind_debuff', func = 'HUD_blind_debuff'}, nodes={}},''' -line_prepend = '$indent' - -# Blind:set_text -[[patches]] -[patches.regex] -target = "blind.lua" -pattern = """ -(?[\t ]*)self\\.loc_debuff_lines\\[1\\] = '' -[\t ]*self\\.loc_debuff_lines\\[2\\] = ''""" -position = 'at' -payload = 'EMPTY(self.loc_debuff_lines)' -line_prepend = '$indent' - -[[patches]] -[patches.pattern] -target = "blind.lua" -pattern = "for k, v in ipairs(loc_target) do" -position = 'before' -payload = 'EMPTY(self.loc_debuff_lines)' -match_indent = true - -[[patches]] -[patches.pattern] -target = "blind.lua" -pattern = "self.loc_debuff_text = self.loc_debuff_text..v..(k <= #loc_target and ' ' or '')" -position = 'after' -payload = "self.loc_debuff_lines[k] = v" -match_indent = true - -[[patches]] -[patches.regex] -target = "blind.lua" -pattern = """ -(?[\t ]*)self\\.loc_debuff_lines\\[1\\] = loc_target\\[1\\] or '' -[\t ]*self\\.loc_debuff_lines\\[2\\] = loc_target\\[2\\] or '' -""" -position = 'at' -payload = '' - -## Add a box with h=3.64 (magic number equal to the height of HUD_blind) -## centered inside 'row_blind' -# create_UIBox_HUD -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = """{n=G.UIT.R, config={align = "cm", id = 'row_blind', minw = 1, minh = 3.75}, nodes={}},""" -position = 'at' -payload = """{n=G.UIT.R, config={align = "cm", id = 'row_blind', minw = 1, minh = 3.75}, nodes={ - {n=G.UIT.B, config={w=0, h=3.64, id = 'row_blind_bottom'}, nodes={}} -}},""" -match_indent = true - -## Blind UI's bottom edge is aligned to it -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "config = {major = G.HUD:get_UIE_by_ID('row_blind'), align = 'cm', offset = {x=0,y=-10}, bond = 'Weak'}" -position = 'at' -payload = "config = {major = G.HUD:get_UIE_by_ID('row_blind_bottom'), align = 'bmi', offset = {x=0,y=-10}, bond = 'Weak'}" -match_indent = true - -## Patch G.GAME.blind:juice_up() across all files - -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = ''' -(?[\t ]*)G\.HUD_blind:get_UIE_by_ID\('HUD_blind_debuff_1'\):juice_up\(0\.3, 0\) -[\t ]*G\.HUD_blind:get_UIE_by_ID\('HUD_blind_debuff_2'\):juice_up\(0\.3, 0\) -[\t ]*G\.GAME\.blind:juice_up\(\)''' -position = 'at' -payload = 'SMODS.juice_up_blind()' -line_prepend = '$indent' - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' -(?[\t ]*)G\.HUD_blind:get_UIE_by_ID\('HUD_blind_debuff_1'\):juice_up\(0\.3, 0\) -[\t ]*G\.HUD_blind:get_UIE_by_ID\('HUD_blind_debuff_2'\):juice_up\(0\.3, 0\) -[\t ]*G\.GAME\.blind:juice_up\(\)''' -position = 'at' -payload = 'SMODS.juice_up_blind()' -line_prepend = '$indent' - -# remove statically added 1 from The Wheel's collection description -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '''\(k ==1 and blind\.name == 'The Wheel' and '1' or ''\)\.\.''' -position = 'at' -payload = '' diff --git a/smods-old-calc/lovely/booster.toml b/smods-old-calc/lovely/booster.toml deleted file mode 100644 index 033acf0..0000000 --- a/smods-old-calc/lovely/booster.toml +++ /dev/null @@ -1,189 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -## Booster Pack API - -# Card:open -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if self\.ability\.name:find\('Arcana'\) then \n[\s\S]{12}G\.STATE''' -position = "before" -payload = ''' -booster_obj = self.config.center -if booster_obj and SMODS.Centers[booster_obj.key] then - G.STATE = G.STATES.SMODS_BOOSTER_OPENED - SMODS.OPENED_BOOSTER = self -end''' -line_prepend = '$indent' - -# Card:open -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if self\.ability\.name:find\('Arcana'\) then[\t\n ]*if G\.GAME\.used_vouchers\.v_omen_globe and pseudorandom\('omen_globe'\) > 0\.8 then''' # Possibly try to target something else -position = "at" -payload = '''if booster_obj.create_card and type(booster_obj.create_card) == "function" then - local _card_to_spawn = booster_obj:create_card(self, i) - if type((_card_to_spawn or {}).is) == 'function' and _card_to_spawn:is(Card) then - card = _card_to_spawn - else - card = SMODS.create_card(_card_to_spawn) - end -elseif self.ability.name:find('Arcana') then - if G.GAME.used_vouchers.v_omen_globe and pseudorandom('omen_globe') > 0.8 then''' -line_prepend = '$indent' - -## Stop cards from boosters getting double emplaced -# Card:open -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "G.pack_cards:emplace(v)" -position = "at" -payload = "--G.pack_cards:emplace(v)" -match_indent = true - -# Game:set_globals -[[patches]] -[patches.regex] -target = "globals.lua" -pattern = '''(?[\t ]*)self\.STATES = \{''' -position = "after" -payload = ''' - - SMODS_BOOSTER_OPENED = 999,''' -line_prepend = '$indent' - -# Game:update -[[patches]] -[patches.regex] -target = "game.lua" -pattern = '''(?[\t ]*)if self\.STATE == self\.STATES\.TAROT_PACK then''' -position = "before" -payload = ''' -if G.STATE == G.STATES.SMODS_BOOSTER_OPENED then - SMODS.OPENED_BOOSTER.config.center:update_pack(dt) -end - -''' -line_prepend = '$indent' - -# G.FUNC.can_skip_booster -# TODO customize whether pack can be skipped -[[patches]] -[patches.regex] -target = "functions/button_callbacks.lua" -pattern = '''(?[\t ]*)\(G\.STATE == G\.STATES\.PLANET_PACK or G\.STATE == G\.STATES\.STANDARD_PACK''' -position = "at" -payload = '''(G.STATE == G.STATES.SMODS_BOOSTER_OPENED or G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.STANDARD_PACK''' - -# CardArea:draw() -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "(self.config.type == 'deck' and self ~= G.deck) or" -position = "before" -payload = ''' -(self.config.type == 'hand' and state == G.STATES.SMODS_BOOSTER_OPENED) or''' -match_indent = true - -# G.FUNCS.use_card -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "prev_state == G.STATES.SPECTRAL_PACK or prev_state == G.STATES.STANDARD_PACK or" -position = "after" -payload = ''' -prev_state == G.STATES.SMODS_BOOSTER_OPENED or''' -match_indent = true - -# CardArea:align_cards() -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "if self.config.type == 'hand' and (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK) then" -position = "at" -payload = "if self.config.type == 'hand' and (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED) then" -match_indent = true - -# CardArea:align_cards() -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "if self.config.type == 'hand' and not (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK) then" -position = "at" -payload = "if self.config.type == 'hand' and not (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED) then" -match_indent = true - -# Card:can_use_consumable() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if G.STATE == G.STATES.SELECTING_HAND or G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK then" -position = "at" -payload = "if G.STATE == G.STATES.SELECTING_HAND or G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED then" -match_indent = true - -# G.FUNC.use_card() -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.SPECTRAL_PACK then" -position = "at" -payload = "if G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.PLANET_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED then" -match_indent = true - -# G.FUNC.use_card() -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "(G.STATE == G.STATES.BUFFOON_PACK and G.STATES.BUFFOON_PACK) or" -position = "before" -payload = "(G.STATE == G.STATES.SMODS_BOOSTER_OPENED and G.STATES.SMODS_BOOSTER_OPENED) or" -match_indent = true - -# G.FUNC.use_card() -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if not (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK) and" -position = "at" -payload = "if not (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED) and" -match_indent = true - -# Card:use_consumeable() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)align = \(G\.STATE[\s\S]*and -0\.2 or 0},''' -position = "at" -payload = ''' -align = (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED) and 'tm' or 'cm', -offset = {x = 0, y = (G.STATE == G.STATES.TAROT_PACK or G.STATE == G.STATES.SPECTRAL_PACK or G.STATE == G.STATES.SMODS_BOOSTER_OPENED) and -0.2 or 0},''' -line_prepend = '$indent' - -# G.FUNCS.use_card() -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "e.config.ref_table:redeem()" -position = "before" -payload = "if area == G.pack_cards then e.config.ref_table.cost = 0 end" -match_indent = true - -## Stopping ease_dollars anim from playing when voucher is free -# Card:redeem() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)ease_dollars\(-self\.cost\)\n[\s\S]{8}inc_career_stat\('c_shop_dollars_spent', self\.cost\)''' -position = "at" -payload = ''' -if self.cost ~= 0 then - ease_dollars(-self.cost) - inc_career_stat('c_shop_dollars_spent', self.cost) -end''' -line_prepend = '$indent' diff --git a/smods-old-calc/lovely/center.toml b/smods-old-calc/lovely/center.toml deleted file mode 100644 index 3090115..0000000 --- a/smods-old-calc/lovely/center.toml +++ /dev/null @@ -1,515 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Center API - -# Card:set_ability() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = "(?[\t ]*)if not G\\.OVERLAY_MENU then \n" -position = 'before' -payload = ''' -local obj = self.config.center -if obj.set_ability and type(obj.set_ability) == 'function' then - obj:set_ability(self, initial, delay_sprites) -end - -''' -line_prepend = '$indent' -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.ability.bonus = (self.ability.bonus or 0) + (center.config.bonus or 0)" -position = "after" -payload = """ -for k, v in pairs(center.config) do - if k ~= 'bonus' then - if type(v) == 'table' then - self.ability[k] = copy_table(v) - else - self.ability[k] = v - end - end -end""" -match_indent = true - -# Card:calculate_joker() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'if self.ability.set == "Planet" and not self.debuff then' -position = 'before' -payload = ''' -local obj = self.config.center -if self.ability.set ~= "Enhanced" and obj.calculate and type(obj.calculate) == 'function' then - local o, t = obj:calculate(self, context) - if o or t then return o, t end -end''' -match_indent = true - -# Card:update() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = 'if G.STAGE == G.STAGES.RUN then' -position = 'before' -match_indent = true -payload = ''' -local obj = self.config.center -if obj.update and type(obj.update) == 'function' then - obj:update(self, dt) -end''' - -# Card:generate_UIBox_ability_table() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?else)\n[\t ]*if self.ability.name == 'Loyalty Card' then\n[\t ]*self.ability.loyalty_remaining" -root_capture = 'else' -position = 'at' -payload = 'elseif context.joker_main then' - - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = 'return generate_card_ui(self.config.center, nil, loc_vars, card_type, badges, hide_desc, main_start, main_end)' -position = 'at' -match_indent = true -payload = 'return generate_card_ui(self.config.center, nil, loc_vars, card_type, badges, hide_desc, main_start, main_end, self)' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "full_UI_table.name = localize{type = 'name', set = _c.set, key = _c.key, nodes = full_UI_table.name}" -position = 'at' -match_indent = true -payload = ''' -if not _c.generate_ui or type(_c.generate_ui) ~= 'function' then - full_UI_table.name = localize{type = 'name', set = _c.set, key = _c.key, nodes = full_UI_table.name} -end''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "elseif specific_vars and specific_vars.debuffed then" -position = 'before' -match_indent = true -payload = ''' -elseif _c.generate_ui and type(_c.generate_ui) == 'function' then - _c:generate_ui(info_queue, card, desc_nodes, specific_vars, full_UI_table) - if specific_vars and specific_vars.pinned then info_queue[#info_queue+1] = {key = 'pinned_left', set = 'Other'} end - if specific_vars and specific_vars.sticker then info_queue[#info_queue+1] = {key = string.lower(specific_vars.sticker)..'_sticker', set = 'Other'} end''' - -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = "(?[\t ]+)if (?_c.name == 'Golden Ticket' then)" -line_prepend = '$indent' -position = 'at' -payload = ''' -local res = {} -if _c.locked_loc_vars and type(_c.locked_loc_vars) == 'function' then - res = _c:locked_loc_vars(info_queue) or {} - loc_vars = res.vars or {} - specific_vars = specific_vars or {} - specific_vars.not_hidden = res.not_hidden or specific_vars.not_hidden -elseif $rest''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -position = 'at' -match_indent = true -pattern = "localize{type = 'unlocks', key = 'joker_locked_legendary', set = 'Other', nodes = desc_nodes, vars = loc_vars}" -payload = "localize{type = 'unlocks', key = res.key or 'joker_locked_legendary', set = res.set or 'Other', nodes = desc_nodes, vars = loc_vars, text_colour = res.text_colour, scale = res.scale}" - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -position = 'at' -match_indent = true -pattern = "localize{type = 'unlocks', key = _c.key, set = _c.set, nodes = desc_nodes, vars = loc_vars}" -payload = "localize{type = 'unlocks', key = res.key or _c.key, set = res.set or _c.set, nodes = desc_nodes, vars = loc_vars, text_colour = res.text_colour, scale = res.scale}" - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -position = 'at' -match_indent = true -pattern = 'elseif desc_nodes ~= full_UI_table.main then' -payload = 'elseif desc_nodes ~= full_UI_table.main and not desc_nodes.name then' - - - -# check_for_unlock() -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = "(?[\t ]*)if not card.unlocked and card.unlock_condition and args.type == 'career_stat' then" -line_prepend = '$indent' -position = 'before' -payload = ''' - -local custom_check -if not card.unlocked and card.check_for_unlock and type(card.check_for_unlock) == 'function' then - ret = card:check_for_unlock(args) - if ret then unlock_card(card) end - custom_check = true -end''' - -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = "(?[\t ]*)if(? )not card.unlocked and card.unlock_condition and args.type == 'career_stat' then" -position = 'at' -root_capture = 'a' -payload = ' not custom_check and ' - -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = "(?[\t ]*)if(? )not card.unlocked and card.unlock_condition and card.unlock_condition.type == args.type then" -position = 'at' -root_capture = 'a' -payload = ' not custom_check and ' - -#Card:use_consumable() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)if self.ability.consumeable.mod_conv or self.ability.consumeable.suit_conv then" -line_prepend = '$indent' -position = 'before' -payload = ''' -local obj = self.config.center -if obj.use and type(obj.use) == 'function' then - obj:use(self, area, copier) - return -end''' - -# Card:can_use_consumable() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)if self.ability.name == 'The Hermit' or self.ability.consumeable.hand_type" -line_prepend = '$indent' -position = 'before' -payload = ''' -local obj = self.config.center -if obj.can_use and type(obj.can_use) == 'function' then - return obj:can_use(self) -end''' - -# G.UIDEF.card_h_popup() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)(?if AUT.badges.card_type or AUT.badges.force_rarity then)\n[\t ]*(?.*)\n[\t ]*end" -line_prepend = '$indent' -position = 'at' -payload = ''' -local obj = card.config.center -$if - if obj and (obj.set_card_type_badge or obj.type and obj.type.set_card_type_badge) then - if obj.type and type(obj.type.set_card_type_badge) == 'function' then - obj.type:set_card_type_badge(obj, card, badges) - end - if type(obj.set_card_type_badge) == 'function' then - obj:set_card_type_badge(card, badges) - end - else - $rest - end -end -if obj and obj.set_badges and type(obj.set_badges) == 'function' then - obj:set_badges(card, badges) -end''' - -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)if AUT.badges then\n([\t ]*.*\n){4}[\t ]*end" -line_prepend = '$indent' -position = 'after' -payload = ''' -if AUT.card_type ~= 'Locked' and AUT.card_type ~= 'Undiscovered' then - SMODS.create_mod_badges(card.config.center, badges) - if card.base then - SMODS.create_mod_badges(SMODS.Ranks[card.base.value], badges) - SMODS.create_mod_badges(SMODS.Suits[card.base.suit], badges) - end - if card.config and card.config.tag then - SMODS.create_mod_badges(SMODS.Tags[card.config.tag.key], badges) - end - badges.mod_set = nil -end''' - -# set_discover_tallies() -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -pattern = "(?[\t ]*)if v.set == 'Planet' then(\n[\t ]*.*){15}" -line_prepend = '$indent' -position = 'at' -payload = ''' -local tally = G.DISCOVER_TALLIES[v.set:lower()..'s'] -if tally then - tally.of = tally.of + 1 - if v.discovered then - tally.tally = tally.tally + 1 - end -end''' - -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -pattern = "[\t ]*tarots = \\{tally = 0, of = 0\\},\n(.*\n){2}" -line_prepend = '$indent' -position = 'at' -payload = '' - -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -pattern = "(?[\t ]*)for _, v in pairs\\(G.DISCOVER_TALLIES\\) do" -line_prepend = '$indent' -position = 'before' -payload = ''' -for _, v in ipairs(SMODS.ConsumableType.ctype_buffer) do - G.DISCOVER_TALLIES[v:lower()..'s'] = {tally = 0, of = 0} -end''' - -# create_UIBox_your_collection() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)local t = create_UIBox_generic_options\\(\\{ back_func = G.STAGE" -line_prepend = '$indent' -position = 'before' -payload = ''' -local consumable_nodes = {} -if #SMODS.ConsumableType.ctype_buffer <= 3 then - for _, key in ipairs(SMODS.ConsumableType.ctype_buffer) do - local id = 'your_collection_'..key:lower()..'s' - consumable_nodes[#consumable_nodes+1] = UIBox_button({button = id, label = {localize('b_'..key:lower()..'_cards')}, count = G.DISCOVER_TALLIES[key:lower()..'s'], minw = 4, id = id, colour = G.C.SECONDARY_SET[key]}) - end -else - consumable_nodes[#consumable_nodes+1] = UIBox_button({ button = 'your_collection_consumables', label = {localize('b_stat_consumables'), localize{ type = 'variable', key = 'c_types', vars = {#SMODS.ConsumableType.ctype_buffer} } }, count = G.DISCOVER_TALLIES['consumeables'], minw = 4, minh = 4, id = 'your_collection_consumables', colour = G.C.FILTER }) -end -''' - -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)nodes=\\{\n[\t ]*UIBox_button\\(\\{button = 'your_collection_tarots'(.*\n){3}[\t ]*}" -line_prepend = '$indent' -position = 'at' -payload = 'nodes = consumable_nodes' - -# Card:apply_to_run() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)if center_table.name == 'Overstock'" -line_prepend = '$indent' -position = 'before' -payload = ''' -local obj = center or self.config.center -if obj.redeem and type(obj.redeem) == 'function' then - obj:redeem(self) - return -end''' - -# create_card_for_shop() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = "local total_rate = G.GAME.joker_rate + G.GAME.tarot_rate + G.GAME.planet_rate + G.GAME.playing_card_rate + G.GAME.spectral_rate" -match_indent = true -position = 'at' -payload = ''' -local total_rate = G.GAME.joker_rate + G.GAME.playing_card_rate -for _,v in ipairs(SMODS.ConsumableType.ctype_buffer) do - total_rate = total_rate + G.GAME[v:lower()..'_rate'] -end''' - -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '(?[\t ]*)for _, v in ipairs\((?
  • \{\n(.*\n){5}[\t ]*\})\) do' -line_prepend = '$indent' -position = 'at' -payload = ''' --- need to preserve order to leave RNG unchanged -local rates = $li -for _, v in ipairs(SMODS.ConsumableType.ctype_buffer) do - if not (v == 'Tarot' or v == 'Planet' or v == 'Spectral') then - table.insert(rates, { type = v, val = G.GAME[v:lower()..'_rate'] }) - end -end -for _, v in ipairs(rates) do''' - -# create_card() -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if not forced_key and soulable and (not G.GAME.banned_keys['c_soul']) then" -match_indent = true -position = 'after' -payload = ''' - for _, v in ipairs(SMODS.Consumable.legendaries) do - if (_type == v.type.key or _type == v.soul_set) and not (G.GAME.used_jokers[v.key] and not next(find_joker("Showman")) and not v.can_repeat_soul) and (not v.in_pool or (type(v.in_pool) ~= "function") or v:in_pool()) then - if pseudorandom('soul_'..v.key.._type..G.GAME.round_resets.ante) > (1 - v.soul_rate) then - forced_key = v.key - end - end - end''' - -# Card:add_to_deck() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = '(?[\t ]*)if self.ability.h_size ~= 0 then\n[\t ]*G\.hand:change_size\(self.ability.h_size\)' -line_prepend = '$indent' -position = 'before' -payload = ''' -local obj = self.config.center -if obj and obj.add_to_deck and type(obj.add_to_deck) == 'function' then - obj:add_to_deck(self, from_debuff) -end''' - -# Card:remove_from_deck() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = '(?[\t ]*)if self.ability.h_size ~= 0 then\n[\t ]*G\.hand:change_size\(-self.ability.h_size\)' -line_prepend = '$indent' -position = 'before' -payload = ''' -local obj = self.config.center -if obj and obj.remove_from_deck and type(obj.remove_from_deck) == 'function' then - obj:remove_from_deck(self, from_debuff) -end''' - -# G.FUNCS.use_card() -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "if card.area then card.area:remove_card(card) end" -match_indent = true -position = 'at' -payload = ''' -local nc -if card.ability.consumeable then - local obj = card.config.center - if obj.keep_on_use and type(obj.keep_on_use) == 'function' then - nc = obj:keep_on_use(card) - end -end -if not nc and card.area then card.area:remove_card(card) end''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "else draw_card(G.hand, G.play, 1, 'up', true, card, nil, mute) end" -match_indent = true -position = 'before' -payload = ''' -elseif nc then - area:remove_from_highlighted(card) - play_sound('cardSlide2', nil, 0.3) - dont_dissolve = true''' - -# Card:set_sprites() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "if not self.children.back then" -match_indent = true -position = 'at' -payload = ''' -if _center.set_sprites and type(_center.set_sprites) == 'function' then - _center:set_sprites(self, _front) -end -if true then''' - -# Card:load() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = 'if self.config.center.name == "Half Joker" then' -match_indent = true -position = 'at' -payload = ''' -local obj = self.config.center -if obj.load and type(obj.load) == 'function' then - obj:load(self, cardTable, other_card) -elseif self.config.center.name == "Half Joker" then''' - -# Card:calculate_dollar_bonus() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Cloud 9' and self.ability.nine_tally and self.ability.nine_tally > 0 then" -position = "before" -match_indent = true -payload = ''' ---asdf -local obj = self.config.center -if obj.calc_dollar_bonus and type(obj.calc_dollar_bonus) == 'function' then - return obj:calc_dollar_bonus(self) -end''' - -# Card:draw() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '--If the card has any edition/seal, add that here' -position = 'before' -match_indent = true -payload = ''' -local center = self.config.center -if center.draw and type(center.draw) == 'function' then - center:draw(self, layer) -end -if center.set == 'Default' or center.set == 'Enhanced' and not center.replace_base_card then - if not center.no_suit then - local suit = SMODS.Suits[self.base.suit] or {} - if suit.draw and type(suit.draw) == 'function' then - suit:draw(self, layer) - end - end - if not center.no_rank then - local rank = SMODS.Ranks[self.base.value] or {} - if rank.draw and type(rank.draw) == 'function' then - rank:draw(self, layer) - end - end -end -''' - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = 'if self.seal then' -position = 'at' -match_indent = true -payload = ''' -local seal = G.P_SEALS[self.seal or {}] or {} -if type(seal.draw) == 'function' then - seal:draw(self, layer) -elseif self.seal then -''' - -# no_blueprint check -[[patches]] -[patches.pattern] -target = 'card.lua' -match_indent = true -position = 'at' -pattern = 'if other_joker and other_joker ~= self then' -payload = 'if other_joker and other_joker ~= self and not context.no_blueprint then' diff --git a/smods-old-calc/lovely/challenge.toml b/smods-old-calc/lovely/challenge.toml deleted file mode 100644 index 0db9203..0000000 --- a/smods-old-calc/lovely/challenge.toml +++ /dev/null @@ -1,21 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -# function G.UIDEF.challenge_list_page() -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "local challenge_unlocked = G.PROFILES[G.SETTINGS.profile].challenges_unlocked and (G.PROFILES[G.SETTINGS.profile].challenges_unlocked >= k)" -position = 'after' -payload = """ -if v.unlocked and type(v.unlocked) == 'function' then - challenge_unlocked = v:unlocked() -elseif type(v.unlocked) == 'boolean' then - challenge_unlocked = v.unlocked -end -challenge_unlocked = challenge_unlocked or G.PROFILES[G.SETTINGS.profile].all_unlocked - -""" -match_indent = true diff --git a/smods-old-calc/lovely/compact_cashout.toml b/smods-old-calc/lovely/compact_cashout.toml deleted file mode 100644 index 98676f3..0000000 --- a/smods-old-calc/lovely/compact_cashout.toml +++ /dev/null @@ -1,65 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - - -# -# End of round money -# - -# Hide off screen rows - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if config.name ~= 'bottom' then" -position = "after" -payload = ''' - total_cashout_rows = (total_cashout_rows or 0) + 1 - if total_cashout_rows > 7 then - return - end''' -match_indent = true - -# Reset rows amount - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = 'G\.FUNCS\.evaluate_round = function\(\)' -position = "after" -payload = ''' - - total_cashout_rows = 0''' - -# Add UI row with total rows hidden - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "add_round_eval_row({name = 'bottom', dollars = dollars})" -position = "before" -payload = ''' -if total_cashout_rows > 7 then - local total_hidden = total_cashout_rows - 7 - - G.E_MANAGER:add_event(Event({ - trigger = 'before',delay = 0.38, - func = function() - local hidden = {n=G.UIT.R, config={align = "cm"}, nodes={ - {n=G.UIT.O, config={object = DynaText({ - string = {localize{type = 'variable', key = 'cashout_hidden', vars = {total_hidden}}}, - colours = {G.C.WHITE}, shadow = true, float = false, - scale = 0.45, - font = G.LANGUAGES['en-us'].font, pop_in = 0 - })}} - }} - - G.round_eval:add_child(hidden, G.round_eval:get_UIE_by_ID('bonus_round_eval')) - return true - end - })) -end''' -match_indent = true - diff --git a/smods-old-calc/lovely/compat_0_9_8.toml b/smods-old-calc/lovely/compat_0_9_8.toml deleted file mode 100644 index a61c552..0000000 --- a/smods-old-calc/lovely/compat_0_9_8.toml +++ /dev/null @@ -1,38 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -# fallback for card.ability.name -# Card:set_ability() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.ability.bonus = (self.ability.bonus or 0) + (center.config.bonus or 0)" -position = 'after' -payload = "if not self.ability.name then self.ability.name = center.key end" -match_indent = true - -# generate_card_ui() -# `card_type` is used to check whether card should be nil; non-recursive calls -# to generate_card_ui always have that arg set -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '(?[\t ]*)function generate_card_ui\([^)]*\)\n' -position = "after" -line_prepend = '$indent' -payload = """ - if card == nil and card_type then - card = SMODS.compat_0_9_8.generate_UIBox_ability_table_card - end - -""" -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "for _, v in ipairs(info_queue) do" -position = 'before' -payload = "SMODS.compat_0_9_8.generate_UIBox_ability_table_card = nil" -match_indent = true - diff --git a/smods-old-calc/lovely/core.toml b/smods-old-calc/lovely/core.toml deleted file mode 100644 index 899b0cc..0000000 --- a/smods-old-calc/lovely/core.toml +++ /dev/null @@ -1,24 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.SPEEDFACTOR = 1" -position = "after" -payload = "initSteamodded()" -match_indent = true - -[[patches]] -[patches.copy] -target = "main.lua" -position = "append" -sources = ["src/core.lua"] - -[[patches]] -[patches.module] -before = "main.lua" -source = "version.lua" -name = "SMODS.version" diff --git a/smods-old-calc/lovely/crash_handler.toml b/smods-old-calc/lovely/crash_handler.toml deleted file mode 100644 index cd590af..0000000 --- a/smods-old-calc/lovely/crash_handler.toml +++ /dev/null @@ -1,20 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = "function love.errhand(msg)" -position = "at" -payload = "if false then" -match_indent = true - -[[patches]] -[patches.copy] -target = "main.lua" -position = "prepend" -sources = [ - "src/crash_handler.lua", -] diff --git a/smods-old-calc/lovely/deck_skins.toml b/smods-old-calc/lovely/deck_skins.toml deleted file mode 100644 index 7f29989..0000000 --- a/smods-old-calc/lovely/deck_skins.toml +++ /dev/null @@ -1,128 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -#========================================================# -# Choose any rank for custom deck and use provided atlas # -#========================================================# -[[patches]] -[patches.regex] -target = "functions/misc_functions.lua" -pattern = '''if _front and _front.suit and \(_front.value == 'Jack' or _front.value == 'Queen' or _front.value == 'King'\) then([\s\S]*?)end([\s\S]*?)end([\s\S]*?)end''' -position = "at" -payload = ''' -if _front and _front.suit and G.SETTINGS.CUSTOM_DECK and G.SETTINGS.CUSTOM_DECK.Collabs then - local collab = G.SETTINGS.CUSTOM_DECK.Collabs[_front.suit] - if collab and collab ~= 'default' then - local deckSkin = SMODS.DeckSkins[collab] - if deckSkin then - local hasRank = false - for i = 1, #deckSkin.ranks do - if deckSkin.ranks[i] == _front.value then hasRank = true break end - end - if hasRank then - local atlas = G.ASSET_ATLAS[G.SETTINGS.colourblind_option and deckSkin.hc_atlas or deckSkin.lc_atlas] - if atlas then - if deckSkin.posStyle == 'collab' then - return atlas, G.COLLABS.pos[_front.value] - elseif deckSkin.posStyle == 'suit' then - return atlas, { x = _front.pos.x, y = 0} - elseif deckSkin.posStyle == 'deck' then - return atlas, _front.pos - end - end - end - end - end -end -''' -#=======================# -# Extend custom deck ui # -#=======================# -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = '''local face_cards = CardArea\(([\s\S]*?)\)''' -position = "at" -payload = ''' -local rankCount = 0 -local lookup = {} -local options = G.COLLABS.options[_suit] -for i = 2, #options do - local skin = SMODS.DeckSkins[options[i]] - for j = 1, #skin.ranks do - if not lookup[skin.ranks[j]] then - lookup[skin.ranks[j]] = true - rankCount = rankCount + 1 - end - end -end - -local face_cards = CardArea( - 0,0, - math.min(math.max(rankCount*G.CARD_W*0.6, 4*G.CARD_W), 10*G.CARD_W), - 1.4*G.CARD_H, - {card_limit = rankCount, type = 'title', highlight_limit = 0}) -''' - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = '''for i = 1, 3 do([\s\S]*?)end''' -position = "at" -payload = ''' -local rank = SMODS.Ranks['2'] -local cards = {} -local smodSuit = SMODS.Suits[_suit] -repeat - if lookup[rank.key] then - local card_code = smodSuit.card_key .. '_' .. rank.card_key - local card = Card(0,0, G.CARD_W*1.2, G.CARD_H*1.2, G.P_CARDS[card_code], G.P_CENTERS.c_base) - card.no_ui = true - - cards[#cards + 1] = card - end - rank = SMODS.Ranks[rank.next[1]] -until rank == SMODS.Ranks['2'] - -for i = #cards, 1, -1 do - face_cards:emplace(cards[i]) -end -''' - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = '''function create_UIBox_customize_deck()([\s\S]*?)end''' -position = "at" -payload = ''' -function create_UIBox_customize_deck() - local suitTabs = {} - - local index = 1 - for i, suit in ipairs(SMODS.Suit:obj_list(true)) do - if G.COLLABS.options[suit.key] then - suitTabs[index] = { - label = localize(suit.key, 'suits_plural'), - tab_definition_function = G.UIDEF.custom_deck_tab, - tab_definition_function_args = suit.key - } - index = index + 1 - end - end - - if suitTabs[1] then - suitTabs[1].chosen = true - end - - local t = create_UIBox_generic_options({ back_func = 'options', snap_back = nil, contents = { - {n=G.UIT.R, config={align = "cm", padding = 0}, nodes={ - create_tabs( - {tabs = suitTabs, snap_to_nav = true, no_shoulders = true} - )}}} - }) - - return t -end -''' diff --git a/smods-old-calc/lovely/dollar_row.toml b/smods-old-calc/lovely/dollar_row.toml deleted file mode 100644 index 005d471..0000000 --- a/smods-old-calc/lovely/dollar_row.toml +++ /dev/null @@ -1,79 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Dollar row patches (API removed) - - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if num_dollars > 60 then" -position = "at" -payload = ''' -if num_dollars > 60 or num_dollars < -60 then''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "local dollar_string = localize('$')..num_dollars" -position = "at" -payload = ''' -local dollar_string -if num_dollars < 0 then --if negative - dollar_string = '-'..localize('$')..(num_dollars*-1) - G.E_MANAGER:add_event(Event({ - trigger = 'before',delay = 0.38, - func = function() - G.round_eval:add_child( - {n=G.UIT.R, config={align = "cm", id = 'dollar_row_'..(dollar_row+1)..'_'..config.name}, nodes={ - {n=G.UIT.O, config={object = DynaText({string = {localize('$')..(num_dollars*-1)}, colours = {G.C.MONEY}, shadow = true, pop_in = 0, scale = 0.65, float = true})}} - }}, - G.round_eval:get_UIE_by_ID('dollar_'..config.name)) - play_sound('coin3', 0.9+0.2*math.random(), 0.7) - play_sound('coin6', 1.3, 0.8) - return true - end - })) -else --if positive - dollar_string = localize('$')..num_dollars''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "for i = 1, num_dollars or 1 do" -position = "at" -payload = ''' -local dollars_to_loop -if num_dollars < 0 then dollars_to_loop = (num_dollars*-1)+1 else dollars_to_loop = num_dollars end -for i = 1, dollars_to_loop do''' -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '''(?[\t ]*)else\n[\t ]*local dollars_to_loop''' -position = "before" -line_prepend = "$indent" -payload = ''' ---asdf -end''' - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "local r = {n=G.UIT.T, config={text = localize('$'), colour = G.C.MONEY, scale = ((num_dollars > 20 and 0.28) or (num_dollars > 9 and 0.43) or 0.58), shadow = true, hover = true, can_collide = false, juice = true}}" -position = "at" -payload = ''' -local r -if i == 1 and num_dollars < 0 then - r = {n=G.UIT.T, config={text = '-', colour = G.C.RED, scale = ((num_dollars < -20 and 0.28) or (num_dollars < -9 and 0.43) or 0.58), shadow = true, hover = true, can_collide = false, juice = true}} - play_sound('coin3', 0.9+0.2*math.random(), 0.7 - (num_dollars < -20 and 0.2 or 0)) -else - if num_dollars < 0 then r = {n=G.UIT.T, config={text = localize('$'), colour = G.C.RED, scale = ((num_dollars > 20 and 0.28) or (num_dollars > 9 and 0.43) or 0.58), shadow = true, hover = true, can_collide = false, juice = true}} - else r = {n=G.UIT.T, config={text = localize('$'), colour = G.C.MONEY, scale = ((num_dollars > 20 and 0.28) or (num_dollars > 9 and 0.43) or 0.58), shadow = true, hover = true, can_collide = false, juice = true}} end -end''' -match_indent = true diff --git a/smods-old-calc/lovely/edition.toml b/smods-old-calc/lovely/edition.toml deleted file mode 100644 index b92bc6d..0000000 --- a/smods-old-calc/lovely/edition.toml +++ /dev/null @@ -1,517 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -# Fix debug mode edition cycling -[[patches]] -[patches.regex] -target = "engine/controller.lua" -pattern = ''' -(?[\t ]*)local _edition = \{ -[\t ]*foil = not _card\.edition, -[\t ]*holo = _card\.edition and _card\.edition\.foil, -[\t ]*polychrome = _card\.edition and _card\.edition\.holo, -[\t ]*negative = _card\.edition and _card\.edition\.polychrome, -[\t ]*\}''' -position = "at" -payload = ''' -local found_index = 1 -if _card.edition then - for i, v in ipairs(G.P_CENTER_POOLS.Edition) do - if v.key == _card.edition.key then - found_index = i - break - end - end -end -found_index = found_index + 1 -if found_index > #G.P_CENTER_POOLS.Edition then found_index = found_index - #G.P_CENTER_POOLS.Edition end -local _edition = G.P_CENTER_POOLS.Edition[found_index].key''' -line_prepend = "$indent" - - -# Sort P_CENTER_POOLS["Editions"] -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = 'table.sort(self.P_CENTER_POOLS["Enhanced"], function (a, b) return a.order < b.order end)' -position = 'after' -payload = 'table.sort(self.P_CENTER_POOLS["Edition"], function (a, b) return a.order < b.order end)' -match_indent = true - - -# generate_card_ui() -# Adds tooltips for all editions -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = ''' -(?[\t ]*)if v == 'foil' then info_queue\[#info_queue\+1\] = G\.P_CENTERS\['e_foil'\] end -[\t ]*if v == 'holographic' then info_queue\[#info_queue\+1\] = G\.P_CENTERS\['e_holo'\] end -[\t ]*if v == 'polychrome' then info_queue\[#info_queue\+1\] = G\.P_CENTERS\['e_polychrome'\] end -[\t ]*if v == 'negative' then info_queue\[#info_queue\+1\] = G\.P_CENTERS\['e_negative'\] end -[\t ]*if v == 'negative_consumable' then info_queue\[#info_queue\+1\] = \{key = 'e_negative_consumable', set = 'Edition', config = \{extra = 1\}\} end''' -position = 'at' -payload = ''' -v = (v == 'holographic' and 'holo' or v) -if v:sub(1,9) == 'negative_' then - info_queue[#info_queue+1] = {key = 'e_'..v, set = 'Edition', config = {extra = G.P_CENTERS['e_negative'].config.card_limit}} -end -if G.P_CENTERS[v] and G.P_CENTERS[v].set == 'Edition' then - info_queue[#info_queue + 1] = G.P_CENTERS[v] -end -if G.P_CENTERS['e_'..v] and G.P_CENTERS['e_'..v].set == 'Edition' then - info_queue[#info_queue + 1] = G.P_CENTERS['e_'..v] -end''' -line_prepend = "$indent" - -# get_badge_colour() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'return G.BADGE_COL[key] or {1, 0, 0, 1}' -position = 'before' -match_indent = true -payload = ''' -for _, v in ipairs(G.P_CENTER_POOLS.Edition) do - G.BADGE_COL[v.key:sub(3)] = v.badge_colour -end''' - -# Limit ARGS.send_to_shader[1] to wiggle between 0 and 2 instead of growing infinitely -# this makes shaders responsiveness on tilt reliable over time -# Card:draw() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -G\.TIMERS\.REAL/\(28\)''' -position = "at" -payload = '''math.sin(G.TIMERS.REAL/28) + 1''' - -# Allow editions to not draw shadow -# Card:draw() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -self\.ability\.effect ~= 'Glass Card' and not self\.greyed''' -position = "after" -payload = ''' and self:should_draw_shadow() ''' - -# If shader modifies shape of card, this will stop "back" layer of the card being rendered. -# Card:draw() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = ''' -elseif not self.greyed then''' -position = "before" -payload = ''' -elseif not self:should_draw_base_shader() then - -- Don't render base dissolve shader. -''' -match_indent = true - -# If shader modifies shape of card, this will stop "back" layer of the card being rendered. -# spectral cards and booster packs only. -# Card:draw() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = ''' -if self.ability.set == 'Booster' or self.ability.set == 'Spectral' then''' -position = "at" -payload = ''' -if (self.ability.set == 'Booster' or self.ability.set == 'Spectral') and self:should_draw_base_shader() then''' -match_indent = true - -# If shader modifies shape of card, this will stop "back" layer of the card being rendered. -# invisible joker and vouchers. -# Card:draw() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = ''' -self.children.center:draw_shader('voucher', nil, self.ARGS.send_to_shader)''' -position = "at" -payload = ''' -if self:should_draw_base_shader() then - self.children.center:draw_shader('voucher', nil, self.ARGS.send_to_shader) -end''' -match_indent = true - -# Inject shaders applying to cards -# Card:draw() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -(?[\t ]*)if self\.edition and self\.editi[A-z\.\:\n\t _(',)~=]*me', nil, self.ARGS.send_to_shader\) -[\t ]*end -[\t ]*end''' -position = "at" -payload = ''' -if self.edition then - for k, v in pairs(G.P_CENTER_POOLS.Edition) do - if self.edition[v.key:sub(3)] and v.shader then - if type(v.draw) == 'function' then - v:draw(self, layer) - else - self.children.center:draw_shader(v.shader, nil, self.ARGS.send_to_shader) - if self.children.front and self.ability.effect ~= 'Stone Card' and not self.config.center.replace_base_card then - self.children.front:draw_shader(v.shader, nil, self.ARGS.send_to_shader) - end - end - end - end -end''' -line_prepend = "$indent" - -# Inject shaders applying to floating sprites -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.children.floating_sprite:draw_shader('dissolve', nil, nil, nil, self.children.center, scale_mod, rotate_mod)" -position = "after" -payload = ''' -if self.edition then - for k, v in pairs(G.P_CENTER_POOLS.Edition) do - if v.apply_to_float then - if self.edition[v.key:sub(3)] then - self.children.floating_sprite:draw_shader(v.shader, nil, nil, nil, self.children.center, scale_mod, rotate_mod) - end - end - end -end''' -match_indent = true - -# Remove prefix from shader key when calling send() -[[patches]] -[patches.pattern] -target = "engine/sprite.lua" -pattern = "if _send then G.SHADERS[_shader or 'dissolve']:send(_shader,_send) end" -position = "at" -payload = ''' -if _send then - G.SHADERS[_shader or 'dissolve']:send((SMODS.Shaders[_shader or 'dissolve'] and SMODS.Shaders[_shader or 'dissolve'].original_key) or _shader,_send) -end''' -match_indent = true - -# Inject change to edition cost in shop -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '(?[\t ]*)self.ex([a-z._\s=+(0-9)]*)\n([\t ]*)([a-z._\s=+(0-9)]*)or 0\)' -position = "at" -payload = ''' -for k, v in pairs(G.P_CENTER_POOLS.Edition) do - if self.edition[v.key:sub(3)] then - if v.extra_cost then - self.extra_cost = self.extra_cost + v.extra_cost - end - end -end''' -line_prepend = "$indent" - -## Fix card_limit logic -# Card:add_to_deck() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if self\.edition[A-z\.\:\n\t _(',)~=+\-0-9]*limit \+ 1''' -position = "at" -payload = ''' -if true then - if from_debuff then - self.ability.joker_added_to_deck_but_debuffed = nil - else - if self.edition and self.edition.card_limit then - if self.ability.consumeable then - G.consumeables.config.card_limit = G.consumeables.config.card_limit + self.edition.card_limit - else - G.jokers.config.card_limit = G.jokers.config.card_limit + self.edition.card_limit - end''' -line_prepend = "$indent" -# Card:remove_from_deck() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if self\.edition[A-z\.\:\n\t _(',)~=+\-0-9]*limit \- 1''' -position = "at" -payload = ''' -if G.jokers then - if from_debuff then - self.ability.joker_added_to_deck_but_debuffed = true - else - if self.edition and self.edition.card_limit then - if self.ability.consumeable then - G.consumeables.config.card_limit = G.consumeables.config.card_limit - self.edition.card_limit - elseif self.ability.set == 'Joker' then - G.jokers.config.card_limit = G.jokers.config.card_limit - self.edition.card_limit - end''' -line_prepend = "$indent" -# Card:remove() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if self\.ability\.queue_neg[A-z\.\:\n\t _(',)~=+\-0-9]*limit \- 1''' -position = "at" -payload = ''' -if self.ability.joker_added_to_deck_but_debuffed then - if self.edition and self.edition.card_limit then - if self.ability.consumeable then - G.consumeables.config.card_limit = G.consumeables.config.card_limit - self.edition.card_limit - elseif self.ability.set == 'Joker' then - G.jokers.config.card_limit = G.jokers.config.card_limit - self.edition.card_limit - end''' -line_prepend = "$indent" -# Card:save() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "added_to_deck = self.added_to_deck," -position = "after" -payload = "joker_added_to_deck_but_debuffed = self.joker_added_to_deck_but_debuffed," -match_indent = true - -# Alternate scoring effects for editions - -# Edition scoring on playing cards -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" # line 763 -pattern = '''hand_chips = mod_chips(hand_chips + (effects[ii].edition.chip_mod or 0))''' -position = "before" -payload = ''' -if effects[ii].edition.chip_mod then - hand_chips = mod_chips(hand_chips + effects[ii].edition.chip_mod) - local key_switch = (effects[ii].edition.chip_mod > 0 and 'a_chips' or 'a_chips_minus') - card_eval_status_text(scoring_hand[i], 'extra', nil, percent, nil, { - message = localize{type='variable', key=key_switch, vars={math.abs(effects[ii].edition.chip_mod)}}, - chip_mod = true, - colour = G.C.DARK_EDITION, - edition = true - }) - update_hand_text({delay = 0}, {chips = hand_chips}) -end -if effects[ii].edition.mult_mod then - mult = mult + effects[ii].edition.mult_mod - card_eval_status_text(scoring_hand[i], 'extra', nil, percent, nil, { - message = localize{type='variable', key='a_mult', vars={effects[ii].edition.mult_mod}}, - mult_mod = true, - colour = G.C.DARK_EDITION, - edition = true - }) - update_hand_text({delay = 0}, {mult = mult}) -end -if effects[ii].edition.x_mult_mod then - mult = mult * effects[ii].edition.x_mult_mod - card_eval_status_text(scoring_hand[i], 'extra', nil, percent, nil, { - message = localize{type='variable', key='a_xmult', vars={effects[ii].edition.x_mult_mod}}, - x_mult_mod = true, - colour = G.C.DARK_EDITION, - edition = true - }) - update_hand_text({delay = 0}, {mult = mult}) -end -if effects[ii].edition.p_dollars_mod then - if effects[ii].card then juice_card(effects[ii].card) end - ease_dollars(effects[ii].edition.p_dollars_mod) - card_eval_status_text(scoring_hand[i], 'dollars', effects[ii].edition.p_dollars_mod, percent) -end -if not effects[ii].edition then''' -match_indent = true -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' edition = true\}\)''' -position = "after" -payload = '''end''' - -# Edition scoring on jokers -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "edition_effects.jokers.edition = true" -position = "after" -payload = ''' -if edition_effects.jokers.p_dollars_mod then - ease_dollars(edition_effects.jokers.p_dollars_mod) - card_eval_status_text(_card, 'dollars', edition_effects.jokers.p_dollars_mod, percent) -end''' -match_indent = true - - -# Adding p_dollars -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.edition.x_mult then" -position = "before" -payload = ''' -if self.edition.p_dollars then - ret.p_dollars_mod = self.edition.p_dollars -end''' -match_indent = true - - - -## Negative playing card logic -# CardArea:emplace() -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "function CardArea:emplace(*" -position = "after" -payload = ''' - if card.edition and card.edition.card_limit and (self == G.hand) then - self.config.real_card_limit = (self.config.real_card_limit or self.config.card_limit) + card.edition.card_limit - self.config.card_limit = math.max(0, self.config.real_card_limit) - end''' -match_indent = true -# CardArea:remove_card() -[[patches]] -[patches.pattern] -target = "cardarea.lua" -pattern = "card:remove_from_area()" -position = "before" -payload = ''' -if card.edition and card.edition.card_limit and (self == G.hand) then - self.config.real_card_limit = (self.config.real_card_limit or self.config.card_limit) - card.edition.card_limit - self.config.card_limit = math.max(0, self.config.real_card_limit) -end''' -match_indent = true - -# G.FUNCS.draw_from_deck_to_hand() -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local hand_space = e or*" -position = "at" -payload = """local hand_space = e -if not hand_space then - local limit = G.hand.config.card_limit - #G.hand.cards - local n = 0 - while n < #G.deck.cards do - local card = G.deck.cards[#G.deck.cards-n] - limit = limit - 1 + (card.edition and card.edition.card_limit or 0) - if limit < 0 then break end - n = n + 1 - end - hand_space = n -end""" -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "badges[#badges + 1] = 'negative_consumable'" -position = "after" -payload = """ -elseif self.edition.type == 'negative' and (self.ability.set == 'Enhanced' or self.ability.set == 'Default') then - badges[#badges + 1] = 'negative_playing_card'""" -match_indent = true - -[[patches]] -[patches.pattern] -target = "engine/sprite.lua" -pattern = "love.graphics.setShader( G.SHADERS[_shader or 'dissolve'], G.SHADERS[_shader or 'dissolve'])" -position = "before" -payload = ''' -local p_shader = SMODS.Shader.obj_table[_shader or 'dissolve'] -if p_shader and type(p_shader.send_vars) == "function" then - local sh = G.SHADERS[_shader or 'dissolve'] - local parent_card = self.role.major and self.role.major:is(Card) and self.role.major - local send_vars = p_shader.send_vars(self, parent_card) - - if type(send_vars) == "table" then - for key, value in pairs(send_vars) do - sh:send(key, value) - end - end -end -''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if v == 'negative_consumable' then v = 'negative' end" -position = "at" -payload = '''if v == 'negative_consumable' or v == 'negative_playing_card' then v = 'negative' end''' -match_indent = true - -# -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = '''(?[\t ]*)(?local edition = poll_edition\('edi'\.\.\(key_append or ''\)\.\.G\.GAME\.round_resets\.ante\)(\n.*){2})''' -position = 'at' -line_prepend = '$indent' -payload = ''' -if not SMODS.bypass_create_card_edition then - $edi -end''' - -# eval_card() - add calculation calls for editions -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if context.cardarea == G.jokers or context.card == G.consumeables then" -match_indent = true -position = "before" -payload = """ -if not card.ability.extra_enhancement and card.edition and card.edition.key then - local ed = SMODS.Centers[card.edition.key] - if ed.calculate and type(ed.calculate) == 'function' then - context.from_playing_card = true - ed:calculate(card, context) - context.from_playing_card = nil - end -end""" - -# G.FUNCS.use_card() - add calculation calls for editions -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "e.config.ref_table:use_consumeable(area)" -match_indent = true -position = "after" -payload = """ -if card.edition and card.edition.key then - local ed = SMODS.Centers[card.edition.key] - if ed.calculate and type(ed.calculate) == 'function' then - ed:calculate(card, {from_consumable = true}) - end -end""" - -# G.FUNCS.evaluate_play() - calculate playing card retriggers from editions -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "for j=1,#reps do" -match_indent = true -position = "before" -payload = """ ---From edition -if scoring_hand[i].edition and scoring_hand[i].edition.key then - local ed = SMODS.Centers[scoring_hand[i].edition.key] - if ed.config and ed.config.retriggers then - for h = 1, ed.config.retriggers do - reps[#reps+1] = {seals = { - message = localize("k_again_ex"), - card = scoring_hand[i] - }} - end - end - if ed.calculate and type(ed.calculate) == 'function' then - local check = ed:calculate(scoring_hand[i], {retrigger_edition_check = true, cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = scoring_hand[i], repetition = true}) - if check and type(check) == 'table' and next(check) then - for j = 1, check.repetitions do - reps[#reps+1] = {seals = check} - end - end - end -end -""" diff --git a/smods-old-calc/lovely/enhancement.toml b/smods-old-calc/lovely/enhancement.toml deleted file mode 100644 index 2800831..0000000 --- a/smods-old-calc/lovely/enhancement.toml +++ /dev/null @@ -1,423 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -## no_rank, no_suit, all_suits - -# Card:get_id() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.effect == 'Stone Card' and not self.vampired then" -match_indent = true -position = "at" -payload = '''if SMODS.has_no_rank(self) and not self.vampired then''' - -# Card:get_chip_bonus() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -(?[\t ]*)if self\.ability\.effect == 'Stone Card' then -[\t ]* return self\.ability\.bonus \+ \(self\.ability\.perma_bonus or 0\) -[\t ]*end''' -position = "at" -payload = ''' -if self.ability.effect == 'Stone Card' or self.config.center.replace_base_card then - return self.ability.bonus + (self.ability.perma_bonus or 0) -end''' -line_prepend = '$indent' - -# Card:calculate_joker() -# Raised Fist -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if temp_ID >= G.hand.cards[i].base.id and G.hand.cards[i].ability.effect ~= 'Stone Card' then temp_Mult = G.hand.cards[i].base.nominal; temp_ID = G.hand.cards[i].base.id; raised_card = G.hand.cards[i] end" -match_indent = true -position = "at" -payload = """if temp_ID >= G.hand.cards[i].base.id and not SMODS.has_no_rank(G.hand.cards[i]) then - temp_Mult = G.hand.cards[i].base.nominal - temp_ID = G.hand.cards[i].base.id - raised_card = G.hand.cards[i] -end""" -# Flower Pot, Seeing Double -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if context.scoring_hand[i].ability.name ~= 'Wild Card' then" -match_indent = true -position = "at" -payload = '''if not SMODS.has_any_suit(context.scoring_hand[i]) then''' - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if context.scoring_hand[i].ability.name == 'Wild Card' then" -match_indent = true -position = "at" -payload = '''if SMODS.has_any_suit(context.scoring_hand[i]) then''' - -# Card:get_suit() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if self\.ability\.effect == 'Stone Card' then''' -line_prepend = '$indent' -position = "at" -payload = '''if SMODS.has_no_suit(self) then''' -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'if self.ability.name == "Wild Card" then' -match_indent = true -position = "at" -payload = '''if SMODS.has_any_suit(self) then''' -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'if self.ability.name == "Wild Card" and not self.debuff then' -match_indent = true -position = "at" -payload = '''if SMODS.has_any_suit(self) and not self.debuff then''' - -# check_for_unlock -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if v.ability.name ~= 'Stone Card' and v.base.suit == 'Hearts' then" -match_indent = true -position = "at" -payload = "if not SMODS.has_no_suit(v) and v.base.suit == 'Hearts' then" - -# reset_idol_card() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "valid_idol_cards[#valid_idol_cards+1] = v" -match_indent = true -position = "at" -payload = """if not SMODS.has_no_suit(v) and not SMODS.has_no_rank(v) then - valid_idol_cards[#valid_idol_cards+1] = v -end""" - -# reset_mail_rank() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "valid_mail_cards[#valid_mail_cards+1] = v" -match_indent = true -position = "at" -payload = """if not SMODS.has_no_rank(v) then - valid_mail_cards[#valid_mail_cards+1] = v -end""" - -# reset_castle_card() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "valid_castle_cards[#valid_castle_cards+1] = v" -match_indent = true -position = "at" -payload = """if not SMODS.has_no_suit(v) then - valid_castle_cards[#valid_castle_cards+1] = v -end""" - -# G.FUNCS.evaluate_play() -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.play.cards[i].ability.effect == 'Stone Card' then" -match_indent = true -position = "at" -payload = '''if SMODS.always_scores(G.play.cards[i]) then''' -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if scoring_hand[i].ability.effect ~= 'Stone Card' then" -match_indent = true -position = "at" -payload = '''if not SMODS.has_no_rank(scoring_hand[i]) then''' -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "G.GAME.cards_played[scoring_hand[i].base.value].suits[scoring_hand[i].base.suit] = true" -match_indent = true -position = "at" -payload = """if not SMODS.has_no_suit(scoring_hand[i]) then - G.GAME.cards_played[scoring_hand[i].base.value].suits[scoring_hand[i].base.suit] = true -end""" - - -## replace_base_card -# Determines whether to draw the base card's front or not -# Card:draw() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.children.front and self.ability.effect ~= 'Stone Card' then" -match_indent = true -position = "at" -payload = "if self.children.front and self.ability.effect ~= 'Stone Card' and not self.config.center.replace_base_card then" - -# Card:generate_UIBox_ability_table() -# replaces two consecutive lines -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if (_c.name == 'Stone Card') then full_UI_table.name = true end" -match_indent = true -position = "at" -payload = "if _c.name == 'Stone Card' or _c.replace_base_card then full_UI_table.name = true" -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if (specific_vars.playing_card and (_c.name ~= 'Stone Card')) then" -match_indent = true -position = "at" -payload = "elseif specific_vars.playing_card then" - -# eval_card() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "function eval_card(card, context)" -match_indent = true -position = "after" -payload = """ - local enhancement_calculated = false - local center = card.config.center""" -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "local jokers = card:calculate_joker(context)" -match_indent = true -position = "before" -payload = """ -if card.ability.set == 'Enhanced' and center.calculate and type(center.calculate) == 'function' then - center:calculate(card, context, ret) - enhancement_calculated = true -end""" -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "local seals = card:calculate_seal(context)" -match_indent = true -position = "before" -payload = """ -if card.ability.set == 'Enhanced' and center.calculate and type(center.calculate) == 'function' then - center:calculate(card, context, ret) - enhancement_calculated = true -end""" -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if context.cardarea == G.jokers or context.card == G.consumeables then" -match_indent = true -position = "before" -payload = """ -if not enhancement_calculated and card.ability.set == 'Enhanced' and center.calculate and type(center.calculate) == 'function' then - center:calculate(card, context, ret) - enhancement_calculated = true -end -local seals = not card.ability.extra_enhancement and card:calculate_seal(context) -if seals then - ret.seals = seals -end""" - - -## Add additional eval_card() calls - -# Game:update_draw_to_hand() - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "G.GAME.current_round.discards_used == 0 and G.GAME.facing_blind then" -match_indent = true -position = "after" -payload = """ -for i = 1, #G.hand.cards do - eval_card(G.hand.cards[i], {first_hand_drawn = true}) -end""" - -# G.FUNCS.discard_cards_from_highlighted() - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "inc_career_stat('c_cards_discarded', highlighted_count)" -match_indent = true -position = "after" -payload = """ -for i = 1, #G.hand.cards do - eval_card(G.hand.cards[i], {pre_discard = true, full_hand = G.hand.highlighted, hook = hook}) -end""" -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' -(?[\t ]*)G\.hand\.highlighted\[i\]:calculate_seal\(\{discard = true\}\) -[\t ]*local removed = false''' -line_prepend = '$indent' -position = "at" -payload = """ -local removed = false -local eval = nil -eval = eval_card(G.hand.highlighted[i], {discard = true, full_hand = G.hand.highlighted}) -if eval and eval.remove then - removed = true - card_eval_status_text(G.hand.highlighted[i], 'jokers', nil, 1, nil, eval) -end""" - -## Allow cards to function as multiple enhancements (e.g. from jokers) - -# Calculate extra enhancements when played -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = {eval_card(scoring_hand[i], {cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, poker_hand = text})}" -position = "after" -payload = ''' -local post_effect = {seals = effects[1].seals, edition = effects[1].edition} -effects[1].seals = nil -effects[1].edition = nil -local extra_enhancements = SMODS.get_enhancements(scoring_hand[i], true) -local old_ability = copy_table(scoring_hand[i].ability) -local old_center = scoring_hand[i].config.center -local old_center_key = scoring_hand[i].config.center_key -for k, _ in pairs(extra_enhancements) do - if G.P_CENTERS[k] then - scoring_hand[i]:set_ability(G.P_CENTERS[k]) - scoring_hand[i].ability.extra_enhancement = k - effects[#effects+1] = eval_card(scoring_hand[i], {cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, poker_hand = text, extra_enhancement = true}) - end -end -effects[#effects+1] = post_effect -scoring_hand[i].ability = old_ability -scoring_hand[i].config.center = old_center -scoring_hand[i].config.center_key = old_center_key -scoring_hand[i]:set_sprites(old_center) -''' -match_indent = true - -# Calculate extra enhancements when held in hand -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = {eval_card(G.hand.cards[i], {cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands})}" -position = "after" -payload = ''' -local extra_enhancements = SMODS.get_enhancements(G.hand.cards[i], true) -local old_ability = copy_table(G.hand.cards[i].ability) -local old_center = G.hand.cards[i].config.center -local old_center_key = G.hand.cards[i].config.center_key -for k, _ in pairs(extra_enhancements) do - if G.P_CENTERS[k] then - G.hand.cards[i]:set_ability(G.P_CENTERS[k]) - G.hand.cards[i].ability.extra_enhancement = k - effects[#effects+1] = eval_card(G.hand.cards[i], {cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, extra_enhancement = true}) - end -end -G.hand.cards[i].ability = old_ability -G.hand.cards[i].config.center = old_center -G.hand.cards[i].config.center_key = old_center_key -G.hand.cards[i]:set_sprites(old_center) -''' -match_indent = true - -# Calculate extra enhancements when held in hand at end of round -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = {G.hand.cards[i]:get_end_of_round_effect()}" -position = "after" -payload = ''' -local extra_enhancements = SMODS.get_enhancements(G.hand.cards[i], true) -local old_ability = copy_table(G.hand.cards[i].ability) -local old_center = G.hand.cards[i].config.center -local old_center_key = G.hand.cards[i].config.center_key -for k, _ in pairs(extra_enhancements) do - if G.P_CENTERS[k] then - G.hand.cards[i]:set_ability(G.P_CENTERS[k]) - G.hand.cards[i].ability.extra_enhancement = k - effects[#effects+1] = G.hand.cards[i]:get_end_of_round_effect() - end -end -G.hand.cards[i].ability = old_ability -G.hand.cards[i].config.center = old_center -G.hand.cards[i].config.center_key = old_center_key -G.hand.cards[i]:set_sprites(old_center) -''' -match_indent = true - -# Prevent blue seal effect on extra enhancements at end of round -[[patches]] -[patches.pattern] -target = "card" -pattern = "if self.seal == 'Blue' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then" -position = "before" -payload = ''' -if self.extra_enhancement then return ret end -''' -match_indent = true - -# Use the has enhancement function for enhancement gates -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if vv.config.center.key == v.enhancement_gate then" -position = "at" -payload = "if SMODS.has_enhancement(vv, v.enhancement_gate) then" -match_indent = true - -# Glass Card shattering -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if card.ability.name == 'Glass Card' then" -position = "at" -payload = "if SMODS.has_enhancement(card, 'm_glass') then" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if G.hand.highlighted[i].ability.name == 'Glass Card' then" -position = "at" -payload = "if SMODS.has_enhancement(G.hand.highlighted[i], 'm_glass') then" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if scoring_hand[i].ability.name == 'Glass Card' and not scoring_hand[i].debuff and pseudorandom('glass') < G.GAME.probabilities.normal/scoring_hand[i].ability.extra then" -position = "at" -payload = "if SMODS.has_enhancement(scoring_hand[i], 'm_glass') and not scoring_hand[i].debuff and pseudorandom('glass') < G.GAME.probabilities.normal/(scoring_hand[i].ability.name == 'Glass Card' and scoring_hand[i].ability.extra or G.P_CENTERS.m_glass.config.extra) then" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if scoring_hand[i].ability.name == 'Glass Card' then" -position = "at" -payload = "if SMODS.has_enhancement(scoring_hand[i], 'm_glass') then" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "if cards_destroyed[i].ability.name == 'Glass Card' then" -position = "at" -payload = "if SMODS.has_enhancement(cards_destroyed[i], 'm_glass') then" -match_indent = true - -# Prevent blue seals from applying on quantum enhancement calc -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.seal == 'Blue' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then" -position = "at" -payload = "if self.seal == 'Blue' and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit and not self.ability.extra_enhancement then" -match_indent = true diff --git a/smods-old-calc/lovely/fixes.toml b/smods-old-calc/lovely/fixes.toml deleted file mode 100644 index 3f51b23..0000000 --- a/smods-old-calc/lovely/fixes.toml +++ /dev/null @@ -1,661 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Fixes for either base game code or general mod compatibility - -## Mods assume Game:start_run() is called with non-nil argument -# G.FUNCS.start_run() -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "G.FUNCS.start_run = function(e, args)" -position = 'after' -match_indent = true -payload = "args = args or {}" - -## Allows running the game without Steam being active -# love.load() -[[patches]] -[patches.regex] -target = 'main.lua' -pattern = "(?[\t ]*)if not \\(st.init and st:init\\(\\)\\) then\n[\t ]*(?love.event.quit\\(\\))" -position = 'at' -root_capture = 'quit' -payload = 'st = nil' - - -## Prevents the game from crashing when hitting play with a corrupt/invalid save file -# G.FUNCS.can_continue(e) -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "if G.SAVED_GAME ~= nil then G.SAVED_GAME = STR_UNPACK(G.SAVED_GAME) end" -position = 'after' -match_indent = true -payload = """ -if G.SAVED_GAME == nil then - e.config.colour = G.C.UI.BACKGROUND_INACTIVE - e.config.button = nil - return _can_continue -end -""" - -## Fix loading a blind with $0 reward -# Blind:load() -[[patches]] -[patches.regex] -target = 'blind.lua' -pattern = ''' -(?[\t ]*) G\.HUD_blind\.alignment\.offset\.y = 0 -[\t ]*end''' -position = 'at' -payload = ''' -end -if G.GAME.blind.name and G.GAME.blind.name ~= '' then - G.HUD_blind.alignment.offset.y = 0 -end''' -line_prepend = '$indent' - -## Remove incorrect check for Moveable alignment change -# Moveable:align_to_major() -[[patches]] -[patches.regex] -target = 'engine/moveable.lua' -pattern = ''' -(?[\t ]*)if +self\.alignment\.prev_offset\.x == self\.alignment\.offset\.x[\s\S]*?return end -''' -position = 'at' -payload = 'if not self.alignment.type_list then return end' -line_prepend = '$indent' - -## Prevent softlock if booster pack is empty -## Crashes the game when you skip too fast on this PR, along with being the culprit for allowing you to skip boosters early -# G.FUNCS.can_skip_booster() -# [[patches]] -# [patches.pattern] -# target = 'functions/button_callbacks.lua' -# pattern = 'if G.pack_cards and (G.pack_cards.cards[1]) and' -# position = 'at' -# payload = 'if G.pack_cards and' -# match_indent = true - -## Set `G.your_collection.config.collection` to true in all cases -# create_UIBox_your_collection_seals() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '''\{card_limit = 4, type = 'title', highlight_limit = 0\}''' -position = 'at' -payload = '''{card_limit = 4, type = 'title', highlight_limit = 0, collection = true}''' - -## Save and load Card.unique_val -# Card:save() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "bypass_lock = self.bypass_lock," -position = "after" -payload = """ -unique_val = self.unique_val, -unique_val__saved_ID = self.ID, -ignore_base_shader = self.ignore_base_shader, -ignore_shadow = self.ignore_shadow,""" -match_indent = true - -# Card:load() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "self.bypass_lock = cardTable.bypass_lock" -position = "after" -payload = """ -self.unique_val = cardTable.unique_val or self.unique_val -if cardTable.unique_val__saved_ID and G.ID <= cardTable.unique_val__saved_ID then - G.ID = cardTable.unique_val__saved_ID + 1 -end - -self.ignore_base_shader = cardTable.ignore_base_shader or {} -self.ignore_shadow = cardTable.ignore_shadow or {}""" -match_indent = true - -## Vars in card descriptions should use `card.ability` instead of `_c.config` where possible -## Allow passing in custom vars -# generate_card_ui() -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'function generate_card_ui(_c, full_UI_table, specific_vars, card_type, badges, hide_desc, main_start, main_end)' -position = 'at' -match_indent = true -payload = '''function generate_card_ui(_c, full_UI_table, specific_vars, card_type, badges, hide_desc, main_start, main_end, card) - if _c.specific_vars then specific_vars = _c.specific_vars end''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if _c.set == 'Other' then" -position = 'before' -match_indent = true -payload = "local cfg = (card and card.ability) or _c['config']" # string index to make sure the next patch doesn't eat it - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if _c.name ~= 'Stone Card' and ((specific_vars and specific_vars.bonus_chips) or _c.config.bonus) then" -position = 'at' -match_indent = true -payload = "if _c.name ~= 'Stone Card' and ((specific_vars and specific_vars.bonus_chips) or (cfg.bonus ~= 0 and cfg.bonus)) then" - -[[patches]] -[patches.regex] -target = 'functions/common_events.lua' -pattern = '_c.config' -position = 'at' -payload = 'cfg' - -## When overriding with set_ability and card is added to deck, call add / remove effects -# Card:set_ability() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "self.config.center = center" -position = 'before' -match_indent = true -payload = ''' -if self.added_to_deck and old_center and not self.debuff then - self:remove_from_deck() - self.added_to_deck = true -end''' - -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "if G.consumeables and self.area == G.consumeables then" -position = 'before' -match_indent = true -payload = ''' -if self.added_to_deck and old_center and not self.debuff then - self.added_to_deck = false - self:add_to_deck() -end''' - -## set_ability() transfers over old fields -# special cases: -# extra_value should be transferred -# name, effect, set, extra should always be overwritten -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = ''' -(?[\t ]*)self\.ability = (\{[\s\S]*? -[\t ]*\}) -''' -position = 'at' -line_prepend = '$indent' -payload = ''' -local new_ability = $2 -self.ability = self.ability or {} -new_ability.extra_value = nil -self.ability.extra_value = self.ability.extra_value or 0 -for k, v in pairs(new_ability) do - self.ability[k] = v -end --- reset keys do not persist an ability change -local reset_keys = {'name', 'effect', 'set', 'extra', 'played_this_ante'} -for _, mod in ipairs(SMODS.mod_list) do - if mod.set_ability_reset_keys then - local keys = mod.set_ability_reset_keys() - for _, v in pairs(keys) do table.insert(reset_keys, v) end - end -end -for _, k in ipairs(reset_keys) do - self.ability[k] = new_ability[k] -end -''' - -## Fix crash if self.config.card == nil for non-vanilla set_ability() calls -# Card:set_ability() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "self.label = center.label or self.config.card.label or self.ability.set" -position = 'at' -match_indent = true -payload = "self.label = center.label or self.config.card and self.config.card.label or self.ability.set" - -### Fix Matador - -# These patches have been removed for altering vanilla behavior. Git blame this line to see what they were - -### Fix Crimson Heart - -## Blind:drawn_to_hand() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.name == 'Crimson Heart' and self.prepped and G.jokers.cards[1] then" -position = 'after' -match_indent = true -payload = """ - local prev_chosen_set = {} - local fallback_jokers = {}""" -# Fix bad logic if not enough choices for debuff -[[patches]] -[patches.regex] -target = 'blind.lua' -pattern = ''' -(?[\t ]*)for i = 1, #G\.jokers\.cards do -[\t ]*if not G\.jokers\.cards\[i\]\.debuff or #G\.jokers\.cards < 2 then jokers\[#jokers\+1\] = ?G\.jokers\.cards\[i\] end -[\t ]*G\.jokers\.cards\[i\]:set_debuff\(false\) -[\t ]*end''' -position = 'at' -line_prepend = '$indent' -payload = """ -for i = 1, #G.jokers.cards do - if G.jokers.cards[i].ability.crimson_heart_chosen then - prev_chosen_set[G.jokers.cards[i]] = true - G.jokers.cards[i].ability.crimson_heart_chosen = nil - if G.jokers.cards[i].debuff then SMODS.recalc_debuff(G.jokers.cards[i]) end - end -end -for i = 1, #G.jokers.cards do - if not G.jokers.cards[i].debuff then - if not prev_chosen_set[G.jokers.cards[i]] then - jokers[#jokers+1] = G.jokers.cards[i] - end - table.insert(fallback_jokers, G.jokers.cards[i]) - end -end -if #jokers == 0 then jokers = fallback_jokers end""" -# Add variable for Crimson Heart's choice -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "_card:set_debuff(true)" -position = "at" -match_indent = true -payload = """ -_card.ability.crimson_heart_chosen = true -SMODS.recalc_debuff(_card)""" - -## Blind:debuff_card() -[[patches]] -[patches.regex] -target = 'blind.lua' -pattern = ''' -if self\.name == 'Crimson Heart' and not self\.disabled and card\.area == G\.jokers then\s+ -((?[\t ]*)return)''' -root_capture = '$1' -position = "at" -line_prepend = '$indent' -payload = """ -if card.ability.crimson_heart_chosen then - card:set_debuff(true); - if card.debuff then card.debuffed_by_blind = true end - return -end""" - -## Blind:press_play() -# Shouldn't work with Matador -# yes it should - -## Blind:disable() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.name == 'The Water' then" -position = 'before' -payload = """ -if self.name == 'Crimson Heart' then - for _, v in ipairs(G.jokers.cards) do - v.ability.crimson_heart_chosen = nil - end -end""" -match_indent = true - -## Blind:defeat() -[[patches]] -[patches.pattern] -target = 'blind.lua' -pattern = "if self.name == 'The Manacle' and not self.disabled then" -position = 'before' -payload = """ -if self.name == 'Crimson Heart' then - for _, v in ipairs(G.jokers.cards) do - v.ability.crimson_heart_chosen = nil - end -end""" -match_indent = true - - -## Fix Manacle's unnecessary card draw after positive G.hand:change_size() -# Blind:disable() -[[patches]] -[patches.regex] -target = 'blind.lua' -pattern = 'G\.hand:change_size\(1\)(\s+G\.FUNCS\.draw_from_deck_to_hand\(1\))' -root_capture = '$1' -position = 'at' -payload = "" - -# -# Money scaling fix -# - -## create_UIBox_HUD -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = ''' -string = \{\{ref_table = G\.GAME\, ref_value = 'dollars'\, prefix = localize\('\$'\)\}\}\,''' -position = "after" -payload = ''' - - scale_function = function () - return scale_number(G.GAME.dollars, 2.2 * scale, 99999, 1000000) - end,''' - -## DynaText:update_text -[[patches]] -[patches.pattern] -target = "engine/text.lua" -pattern = 'self.config.H = 0' -position = "after" -payload = "self.scale = self.config.scale_function and self.config.scale_function() or self.scale" -match_indent = true - - -# -# Fix gold stake legendary infloop -# Do not try to roll for jokers that are not in_pool -# - -# generate_starting_seed() -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = '''if win_ante and (win_ante >= 8) then''' -match_indent = true -position = "at" -payload = '''if win_ante and (win_ante >= 8) or (v.in_pool and type(v.in_pool) == 'function' and not v:in_pool()) then''' - -# -# Fix G.GAME.blind:set_blind(nil, true, nil) -# being called when not in blind. -# - -# Card:add_to_deck -# Card:remove_from_deck -[[patches]] -[patches.regex] -target = "card.lua" -pattern = 'if G\.GAME\.blind then' -position = "at" -payload = "if G.GAME.blind and G.GAME.blind.in_blind then" - -# Blind:set_blind -[[patches]] -[patches.pattern] -target = "blind.lua" -match_indent = true -pattern = "if not reset then" -position = "after" -payload = ''' - if blind then - self.in_blind = true - end''' - -# end_round() -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local game_over = true" -position = "before" -payload = "G.GAME.blind.in_blind = false" -match_indent = true - - - -# Make sure new param is loaded -[[patches]] -[patches.pattern] -target = "blind.lua" -match_indent = true -pattern = "function Blind:load(blindTable)" -position = "after" -payload = ''' - self.in_blind = blindTable.in_blind''' - -# Make sure new param is saved -[[patches]] -[patches.pattern] -target = "blind.lua" -match_indent = true -pattern = "local blindTable = {" -position = "after" -payload = ''' - in_blind = self.in_blind,''' - -# Cartomancer and astronomer unlock when *actually all* Tarot/Planet cards are discovered -# check_for_unlock() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -match_indent = true -pattern = "if card.unlock_condition.tarot_count <= args.tarot_count then" -position = "at" -payload = 'if #G.P_CENTER_POOLS.Tarot <= args.tarot_count then' - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -match_indent = true -pattern = "if card.unlock_condition.planet_count <= args.planet_count then" -position = "at" -payload = 'if #G.P_CENTER_POOLS.Planet <= args.planet_count then' - -# wtf -[[patches]] -[patches.pattern] -target = "engine/animatedsprite.lua" -match_indent = true -pattern = "for _, v in pairs(G.ANIMATIONS) do" -position = "at" -payload = 'for k, v in pairs(G.ANIMATIONS) do' - -[[patches]] -[patches.pattern] -target = "engine/animatedsprite.lua" -match_indent = true -pattern = "for _, v in pairs(G.I.SPRITE) do" -position = "at" -payload = 'for k, v in pairs(G.I.SPRITE) do' - -## -## Card:draw() - improved mod compatibility -## -# Add option for sprites to not be drawn -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = ''' -if k ~= 'focused_ui' and k ~= "front" and k ~= "back" and k ~= "soul_parts" and k ~= "center" and k ~= 'floating_sprite' and k~= "shadow" and k~= "use_button" and k ~= 'buy_button' and k ~= 'buy_and_use_button' and k~= "debuff" and k ~= 'price' and k~= 'particles' and k ~= 'h_popup' then v:draw() end''' -position = "at" -payload = ''' -if not v.custom_draw and k ~= 'focused_ui' and k ~= "front" and k ~= "back" and k ~= "soul_parts" and k ~= "center" and k ~= 'floating_sprite' and k~= "shadow" and k~= "use_button" and k ~= 'buy_button' and k ~= 'buy_and_use_button' and k~= "debuff" and k ~= 'price' and k~= 'particles' and k ~= 'h_popup' then v:draw() end''' - -# This check is not necessary? -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = ''' -if self.edition or self.seal or self.ability.eternal or self.ability.rental or self.ability.perishable or self.sticker or ((self.sticker_run and self.sticker_run ~= 'NONE') and G.SETTINGS.run_stake_stickers) or (self.ability.set == 'Spectral') or self.debuff or self.greyed or (self.ability.name == 'The Soul') or (self.ability.set == 'Voucher') or (self.ability.set == 'Booster') or self.config.center.soul_pos or self.config.center.demo then''' -position = "at" -payload = ''' -if true then''' - -## Make vanilla enhancement jokers work with extra enhancements - -# Steel Joker -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = "if v.config.center == G.P_CENTERS.m_steel then self.ability.steel_tally = self.ability.steel_tally+1 end" -position = "at" -payload = "if SMODS.has_enhancement(v, 'm_steel') then self.ability.steel_tally = self.ability.steel_tally+1 end" - -# Stone Joker -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = "if v.config.center == G.P_CENTERS.m_stone then self.ability.stone_tally = self.ability.stone_tally+1 end" -position = "at" -payload = "if SMODS.has_enhancement(v, 'm_stone') then self.ability.stone_tally = self.ability.stone_tally+1 end" - -# Golden Ticket -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = "context.other_card.ability.name == 'Gold Card' then" -position = "at" -payload = "SMODS.has_enhancement(context.other_card, 'm_gold') then" - -# Golden Ticket Unlock -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -match_indent = true -pattern = "if args.cards[j].ability.name == 'Gold Card' then" -position = "at" -payload = "if SMODS.has_enhancement(args.cards[j], 'm_gold') then" - -# Glass Joker -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = "if val.ability.name == 'Glass Card' then shattered_glass = shattered_glass + 1 end" -position = "at" -payload = "if SMODS.has_enhancement(val, 'm_glass') then shattered_glass = shattered_glass + 1 end" - -# Driver's License -[[patches]] -[patches.pattern] -target = "card.lua" -match_indent = true -pattern = "if v.config.center ~= G.P_CENTERS.c_base then self.ability.driver_tally = self.ability.driver_tally+1 end" -position = "at" -payload = "if next(SMODS.get_enhancements(v)) then self.ability.driver_tally = self.ability.driver_tally+1 end" -# Basegame fix for the reroll vouchers redeem function when only the center but no card object exists - -# Card:apply_to_run -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = """G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost - self.ability.extra""" -position = 'at' -match_indent = true -payload = """G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost - center_table.extra""" - -# Card:apply_to_run -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = """G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost - self.ability.extra)""" -position = 'at' -match_indent = true -payload = """G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost - center_table.extra)""" - - -# Add h_chips as a viable hand effect -[[patches]] -[patches.pattern] -target = 'functions/state_events.lua' -pattern = '''card_eval_status_text(G.hand.cards[i], 'h_mult', effects[ii].h_mult, percent) - end''' -position = 'after' -match_indent = true -payload = ''' -if effects[ii].h_chips then - if effects[ii].card then juice_card(effects[ii].card) end - hand_chips = mod_chips(hand_chips + effects[ii].h_chips) - update_hand_text({delay = 0}, {chips = hand_chips}) - card_eval_status_text(effects[ii].card, 'chips', effects[ii].h_chips, percent) -end -''' - -# Fix booster skip issues maybe? -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = "if G.pack_cards and (G.pack_cards.cards[1]) and" -position = "at" -payload = ''' -if G.pack_cards and (not (G.GAME.STOP_USE and G.GAME.STOP_USE > 0)) and -''' -match_indent = true - -# Due to STOP_USE being used we can remove this dumb check -# could probably remove the rest of it since it serves no purpose otherwise, but whatever -[[patches]] -[patches.regex] -target = "functions/button_callbacks.lua" -pattern = '''and \(G\.hand\.cards\[1\] or \(G\.hand\.config\.card_limit <= 0\)\)''' -position = "at" -payload = ''' ''' -match_indent = true - -# Fixes Steam API not loading on unix -[[patches]] -[patches.pattern] -target = 'main.lua' -match_indent = true -position = 'after' -pattern = '--To control when steam communication happens, make sure to send updates to steam as little as possible' -payload = '''local cwd = NFS.getWorkingDirectory() -NFS.setWorkingDirectory(love.filesystem.getSourceBaseDirectory()) -''' - -[[patches]] -[patches.pattern] -target = 'main.lua' -match_indent = true -position = 'before' -pattern = '--Set up the render window and the stage for the splash screen, then enter the gameloop with :update' -payload = '''NFS.setWorkingDirectory(cwd) -''' - -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = '''if os == 'OS X' or os == 'Windows' then''' -position = "at" -payload = '''if os == 'OS X' or os == 'Windows' or os == 'Linux' then''' -overwrite = true -match_indent = true - -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = '''if os == 'OS X' then''' -position = "at" -payload = '''if os == 'OS X' or os == 'Linux' then''' -overwrite = true -match_indent = true - -[[patches]] -[patches.pattern] -target = "main.lua" -pattern = "st = require 'luasteam'" -position = "at" -payload = """local success, _st = pcall(require, 'luasteam') -if success then st = _st else sendWarnMessage(_st); st = {} end""" -overwrite = true -match_indent = true diff --git a/smods-old-calc/lovely/joker_retrigger.toml b/smods-old-calc/lovely/joker_retrigger.toml deleted file mode 100644 index f7ba100..0000000 --- a/smods-old-calc/lovely/joker_retrigger.toml +++ /dev/null @@ -1,625 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -# main joker retriggering -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, joker_main = true})" -position = "at" -payload = "local effects = eval_card(_card, {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, joker_main = true, callback = function(_card, ret) effects = {jokers = ret}" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "--Joker on Joker effects" -position = "before" -payload = "end})" -match_indent = true - -# End of round retriggering from jokers -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local eval = eval_card(G.jokers.cards[j], {cardarea = G.hand, other_card = G.hand.cards[i], repetition = true, end_of_round = true, card_effects = effects})" -position = "at" -payload = "local eval = eval_card(G.jokers.cards[j], {cardarea = G.hand, other_card = G.hand.cards[i], repetition = true, end_of_round = true, card_effects = effects, callback = function(card, ret) eval = {jokers = ret}" -match_indent = true - -# Played hand retriggering from jokers -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local eval = eval_card(G.jokers.cards[j], {cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = scoring_hand[i], repetition = true})" -position = "at" -payload = "local eval = eval_card(G.jokers.cards[j], {cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = scoring_hand[i], repetition = true, callback = function(card, ret) eval = {jokers = ret}" -match_indent = true - -# Held in hand retriggering from jokers -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local eval = eval_card(G.jokers.cards[j], {cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = G.hand.cards[i], repetition = true, card_effects = effects})" -position = "at" -payload = "local eval = eval_card(G.jokers.cards[j], {cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = G.hand.cards[i], repetition = true, card_effects = effects, callback = function(card, ret) eval = {jokers = ret}" -match_indent = true - -# I learned how to do regex patches for this (fixes syntax for last 3 patches) -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''for h[ ]*\= 1, eval\.jokers\.repetitions do -[ \t]*reps\[#reps\+1\] \= eval -[ \t]*end -[ \t]*end''' -position = "after" -payload = " end})" - -# Before hand effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = eval_card(G.jokers.cards[i], {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, before = true})" -position = "at" -payload = "local effects = eval_card(G.jokers.cards[i], {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, before = true, callback = function(card, ret) effects = {jokers = ret}" -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' -level_up_hand\(G\.jokers\.cards\[i\], text\) -(?[ \t]*end -[ \t]*end)''' -position = "at" -payload = ''' -level_up_hand(card, text) -$ends - end})''' - -# Joker debuff effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = eval_card(G.jokers.cards[i], {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, debuffed_hand = true})" -position = "at" -payload = "local effects = eval_card(G.jokers.cards[i], {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, debuffed_hand = true, callback = function(card, ret) effects = {jokers = ret}" -match_indent = true - -# After hand effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effects = eval_card(G.jokers.cards[i], {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, after = true})" -position = "at" -payload = "local effects = eval_card(G.jokers.cards[i], {cardarea = G.jokers, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, after = true, callback = function(card, ret) effects = {jokers = ret}" -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''[ \t]*end -[ \t]*end -[ \t]*G\.E_MANAGER:add_event\(Event\(\{ -[ \t]*trigger = 'after',delay = 0.4,''' -position = "before" -payload = " end})" - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' -(?[\t ])*if effects\.jokers then -[^\n]* -[^\n]*_delta -[\t ]*end -[\t ]*end\n\n''' -position = "after" -line_prepend = "$indent" -payload = ''' }) end - -''' - -# End of round effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "eval = G.jokers.cards[i]:calculate_joker({end_of_round = true, game_over = game_over})" -position = "at" -payload = "eval = G.jokers.cards[i]:calculate_joker({end_of_round = true, game_over = game_over, callback = function(card, eval)" -match_indent = true - -# End of round held in hand effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local eval = G.jokers.cards[k]:calculate_joker({cardarea = G.hand, other_card = G.hand.cards[i], individual = true, end_of_round = true})" -position = "at" -payload = "local eval = G.jokers.cards[k]:calculate_joker({cardarea = G.hand, other_card = G.hand.cards[i], individual = true, end_of_round = true, callback = function(card, eval, retrigger)" -match_indent = true - -# Played hand effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local eval = G.jokers.cards[k]:calculate_joker({cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = scoring_hand[i], individual = true})" -position = "at" -payload = "local eval = G.jokers.cards[k]:calculate_joker({cardarea = G.play, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = scoring_hand[i], individual = true, callback = function(card, eval, retrigger)" -match_indent = true - -# Held in hand effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local eval = G.jokers.cards[k]:calculate_joker({cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = G.hand.cards[i], individual = true})" -position = "at" -payload = "local eval = G.jokers.cards[k]:calculate_joker({cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = G.hand.cards[i], individual = true, callback = function(card, eval, retrigger)" -match_indent = true - -# Fix syntax of last 3 patches -# Add retrigger info -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''table\.insert\(effects, eval\) -[ \t]*end''' -position = "at" -payload = ''' -table.insert(effects, eval) -effects[#effects].from_retrigger = retrigger -end end, no_retrigger_anim = true}) -''' - -# Use retrigger info when computing repetitions - -# Played hand effects -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''end -[ \t]*end -[ \t]*end -[ \t]*end -[ \t]* -[ \t]*delay\(0\.3\)''' -position = "before" -payload = ''' - if effects[ii].from_retrigger then - card_eval_status_text(effects[ii].from_retrigger.card, 'jokers', nil, nil, nil, effects[ii].from_retrigger) - end - -''' - -# Held in hand effects -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''end -[ \t]*j[ \t]*=[ \t]*j[ \t]\+1''' -position = "before" -payload = ''' - if effects[ii].from_retrigger then - card_eval_status_text(effects[ii].from_retrigger.card, 'jokers', nil, nil, nil, effects[ii].from_retrigger) - end - -''' - -# Discard effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "eval = G.jokers.cards[j]:calculate_joker({discard = true, other_card = G.hand.highlighted[i], full_hand = G.hand.highlighted})" -position = "at" -payload = "eval = G.jokers.cards[j]:calculate_joker({discard = true, other_card = G.hand.highlighted[i], full_hand = G.hand.highlighted, callback = function(card, eval)" -match_indent = true - -# Joker on Joker effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "local effect = v:calculate_joker{full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_joker = _card}" -position = "at" -payload = "local effect = v:calculate_joker({full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_joker = _card, callback = function(v, effect)" -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = '''end -[ \t]*end -[ \t]* -[ \t]*if edition_effects\.jokers''' -position = "at" -payload = "end end}) end if edition_effects.jokers" - -# Destroyed card effects -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "destroyed = G.jokers.cards[j]:calculate_joker({destroying_card = scoring_hand[i], full_hand = G.play.cards})" -position = "at" -payload = '''destroyed = G.jokers.cards[j]:calculate_joker({destroying_card = scoring_hand[i], full_hand = G.play.cards, callback = function(card, ret) if ret then destroyed=true end end})''' -match_indent = true - -# Blueprint/Brainstorm -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "local other_joker_ret = other_joker:calculate_joker(context)" -position = "at" -payload = '''local other_joker_ret, trig = other_joker:calculate_joker(context) -''' -match_indent = true - -# We don't need to return trig; Blueprint/Brainstorm cause callbacks to trigger twice -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if context.blueprint > #G.jokers.cards + 1 then return end" -position = "after" -payload = '''context.no_callback = true''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1" -position = "after" -payload = '''context.copy_depth = (context.copy_depth and (context.copy_depth + 1)) or 1''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "other_joker_ret.card = context.blueprint_card or self" -position = "after" -payload = '''context.no_callback = not (context.copy_depth <= 1) -context.copy_depth = context.copy_depth - 1;''' -match_indent = true - -# Luchador -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''[ \t]*G\.GAME\.blind:disable\(\) -(?[ \t]*)end''' -position = "at" -line_prepend = '$indent' -payload = ''' G.GAME.blind:disable() - return nil, true -end''' - -# Diet Cola -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*return true -[ \t]*end\) -[ \t]*\}\)\) -(?[ \t]*)end -''' -position = "at" -line_prepend = '$indent' -payload = ''' return true - end) - })) - return nil, true -end -''' - -# Invisible Joker -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''[ \t]*if card\.ability\.invis_rounds then card\.ability\.invis_rounds = 0 end -[ \t]*card:add_to_deck\(\) -(?[ \t]*)G\.jokers:emplace\(card\)''' -position = "after" -line_prepend = '$indent' -payload = "return nil, true" - -# Campfire -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''localize\('k_upgrade_ex'\)\}\); return true -[ \t]*end\}\)\) -[ \t]*end -(?[ \t]*)return''' -position = "at" -line_prepend = '$indent' -payload = '''localize('k_upgrade_ex')}); return true - end})) -end -if self.ability.name == 'Campfire' and not context.blueprint then return nil, true end''' - -# Flash Card -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''[ \t]*G\.C\.MULT\}\) -[ \t]*return true -[ \t]*end\)\}\)\) -(?[ \t]*)end''' -position = "at" -line_prepend = '$indent' -payload = '''G.C.MULT}) - return true - end)})) -end -if self.ability.name == 'Flash Card' and not context.blueprint then return nil, true end''' - -# Perkeo -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''[ \t]*card_eval_status_text\(context\.blueprint_card or self, 'extra', nil, nil, nil, \{message = localize\('k_duplicated_ex'\)\}\) -(?[ \t]*)end''' -position = "at" -line_prepend = '$indent' -payload = ''' card_eval_status_text(context.blueprint_card or self, 'extra', nil, nil, nil, {message = localize('k_duplicated_ex')}) - return nil, true -end''' - -# Throwback -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*return -(?[ \t]*)elseif context\.skipping_booster''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Red Card -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*return -(?[ \t]*)elseif context\.playing_card_added''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Hologram -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)elseif context\.first_hand_drawn''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Certificate -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'DNA' and not context\.blueprint''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Chicot -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Madness' ''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Madness -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Burglar' ''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Burglar -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Riff-raff' ''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Riff-raff -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Cartomancer' ''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Cartomancer -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Ceremonial Dagger' and not context.blueprint''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Ceremonial Dagger -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Marble Joker' ''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Marble Joker -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*return -(?[ \t]*)elseif context.destroying_card''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Caino -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''[ \t]*func = function\(\) card_eval_status_text\(self, 'extra', nil, nil, nil, \{message = localize\{type = 'variable', key = 'a_xmult', vars = \{self\.ability\.caino_xmult\}\}\}\); return true -(?[ \t]*)end\}\)\)''' -position = "after" -line_prepend = '$indent' -payload = "return nil, true" - -# Glass Joker -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''glass_cards\}\}\}\) -[ \t]*return true -[ \t]*end -(?[ \t]*)\}\)\)''' -position = "after" -line_prepend = '$indent' -payload = "return nil, true" - -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*return -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Fortune Teller' and not context\.blueprint''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Fortune Teller -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)if self\.ability\.name == 'Constellation' and not context\.blueprint''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Constellation -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*return -(?[ \t]*)elseif context.debuffed_hand''' -position = "before" -line_prepend = '$indent' -payload = "nil, true" - -# Burnt Joker -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -(?[ \t]*)elseif context.discard''' -position = "before" -line_prepend = '$indent' -payload = "return nil, true" - -# Faceless Joker -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -[ \t]*end -[ \t]*end -[ \t]*return -(?[ \t]*)elseif context.end_of_round''' -position = "before" -line_prepend = '$indent' -payload = "nil, true" - -# Yorick -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "self.ability.yorick_discards = self.ability.yorick_discards - 1" -position = "after" -match_indent = true -payload = "return nil, true" - -# eval_status_text fixes -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' -card_eval_status_text\(G\.jokers\.cards\[i\]\, 'jokers'\, nil\, nil\, nil\, eval\) -[ \t]*end''' -position = "at" -payload = ''' -card_eval_status_text(card, 'jokers', nil, nil, nil, eval) - end - end}) -''' - -[[patches]] -[patches.regex] -target = "functions/state_events.lua" -pattern = ''' -card_eval_status_text\(G\.jokers\.cards\[j\]\, 'jokers'\, nil\, 1\, nil\, eval\) -[ \t]*end''' -position = "at" -payload = ''' -card_eval_status_text(card, 'jokers', nil, 1, nil, eval) - end - end}) -''' - - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "card_eval_status_text(G.jokers.cards[i], 'jokers', nil, percent, nil, effects.jokers)" -position = "at" -match_indent = true -payload = "card_eval_status_text(card, 'jokers', nil, percent, nil, effects.jokers)" - -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "for h = 1, eval.jokers.repetitions do" -position = "before" -match_indent = true -payload = "if not eval.jokers.repetitions then eval.jokers.repetitions = 0 end" diff --git a/smods-old-calc/lovely/keybind.toml b/smods-old-calc/lovely/keybind.toml deleted file mode 100644 index 80272b8..0000000 --- a/smods-old-calc/lovely/keybind.toml +++ /dev/null @@ -1,82 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -# Check all registered keybinds -# inserted inside Controller:key_press_update - -[[patches]] -[patches.pattern] -target = 'engine/controller.lua' -pattern = "if not _RELEASE_MODE then" -position = "before" -payload = ''' -for _, keybind in pairs(SMODS.Keybinds) do - if keybind.action and keybind.key_pressed == key and keybind.event == 'pressed' then - local execute = true - for _, other_key in pairs(keybind.held_keys) do - if not self.held_keys[other_key] then - execute = false - break - end - end - if execute then - keybind:action() - end - end -end -''' -match_indent = true - -# Controller:key_release_update -[[patches]] -[patches.pattern] -target = 'engine/controller.lua' -pattern = "function Controller:key_release_update(key, dt)" -position = "after" -payload = ''' -for _, keybind in pairs(SMODS.Keybinds) do - if keybind.action and keybind.key_pressed == key and keybind.event == 'released' then - local execute = true - for _, other_key in pairs(keybind.held_keys) do - if not self.held_keys[other_key] then - execute = false - break - end - end - if execute then - keybind:action() - end - end -end -''' -match_indent = true - -[[patches]] -[patches.regex] -target = 'engine/controller.lua' -pattern = 'if key == "r"' -position = 'before' -line_prepend = '$indent' -payload = ''' -for _, keybind in pairs(SMODS.Keybinds) do - if keybind.key_pressed == key and keybind.event == 'held' and keybind.held_duration then - if self.held_key_times[key] > keybind.held_duration then - local execute = true - for _, other_key in pairs(keybind.held_keys) do - if not self.held_keys[other_key] then - execute = false - break - end - end - if execute then - keybind:action() - self.held_key_times[key] = nil - end - else - self.held_key_times[key] = self.held_key_times[key] + dt - end - end -end -''' diff --git a/smods-old-calc/lovely/language.toml b/smods-old-calc/lovely/language.toml deleted file mode 100644 index 5c89e5d..0000000 --- a/smods-old-calc/lovely/language.toml +++ /dev/null @@ -1,59 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Language API - -# Game:set_language() -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = "if not (love.filesystem.read('localization/'..G.SETTINGS.language..'.lua')) or G.F_ENGLISH_ONLY then" -position = 'at' -payload = 'if false then' -match_indent = true - -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = "local localization = love.filesystem.getInfo('localization/'..G.SETTINGS.language..'.lua')" -position = 'at' -payload = "local localization = love.filesystem.getInfo('localization/'..G.SETTINGS.language..'.lua') or love.filesystem.getInfo('localization/en-us.lua')" -match_indent = true - -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = "self.localization = assert(loadstring(love.filesystem.read('localization/'..G.SETTINGS.language..'.lua')))()" -position = 'at' -payload = "self.localization = assert(loadstring(love.filesystem.read('localization/'..G.SETTINGS.language..'.lua') or love.filesystem.read('localization/en-us.lua')))()" -match_indent = true - -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = "self.LANG = self.LANGUAGES[self.SETTINGS.language] or self.LANGUAGES['en-us']" -position = 'at' -payload = "self.LANG = self.LANGUAGES[self.SETTINGS.real_language or self.SETTINGS.language] or self.LANGUAGES['en-us']" -match_indent = true - -# G.FUNCS.change_lang - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = "G.SETTINGS.language = lang.key" -position = 'at' -payload = """G.SETTINGS.language = lang.loc_key or lang.key -G.SETTINGS.real_language = lang.key""" -match_indent = true - -# G.FUNCS.warn_lang (wtf) -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = 'if (_infotip_object.config.set ~= e.config.ref_table.label) and (not G.F_NO_ACHIEVEMENTS) then' -position = 'at' -payload = 'if (_infotip_object.config.set ~= e.config.ref_table.label) then' -match_indent = true diff --git a/smods-old-calc/lovely/libs.toml b/smods-old-calc/lovely/libs.toml deleted file mode 100644 index b7e8e9a..0000000 --- a/smods-old-calc/lovely/libs.toml +++ /dev/null @@ -1,16 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -[[patches]] -[patches.module] -source = "libs/json/json.lua" -before = "main.lua" -name = "json" - -[[patches]] -[patches.module] -source = "libs/nativefs/nativefs.lua" -before = "main.lua" -name = "nativefs" diff --git a/smods-old-calc/lovely/loader.toml b/smods-old-calc/lovely/loader.toml deleted file mode 100644 index dfe4bd9..0000000 --- a/smods-old-calc/lovely/loader.toml +++ /dev/null @@ -1,27 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -### Supporting code for loader.lua - -## Save discovered, unlocked states -# Game:init_item_prototypes() -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = "meta.alerted = meta.alerted or {}" -position = 'after' -payload = ''' -for _, t in ipairs{ - G.P_CENTERS, - G.P_BLINDS, - G.P_TAGS, - G.P_SEALS, -} do - for k, v in pairs(t) do - SMODS._save_d_u(v) - v._discovered_unlocked_overwritten = true - end -end''' -match_indent = true diff --git a/smods-old-calc/lovely/menu.toml b/smods-old-calc/lovely/menu.toml deleted file mode 100644 index 0e3e9fb..0000000 --- a/smods-old-calc/lovely/menu.toml +++ /dev/null @@ -1,60 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''local main_menu = nil''' -position = "after" -payload = '''local mods = nil''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''main_menu = UIBox_button{ label = {localize('b_main_menu')}, button = "go_to_menu", minw = 5}''' -position = "after" -payload = '''mods = UIBox_button{ id = "mods_button", label = {localize('b_mods')}, button = "mods_button", minw = 5}''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = '''G.ARGS.set_alerts_alertables[11].should_alert = alert_booster''' -position = "after" -payload = '''table.insert(G.ARGS.set_alerts_alertables, {id = 'mods_button', alert_uibox_name = 'mods_button_alert', should_alert = SMODS.mod_button_alert})''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''main_menu,''' -position = "after" -payload = '''mods,''' -match_indent = true - - -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = '''self.ASSET_ATLAS[self.asset_atli[i].name].image = love.graphics.newImage(self.asset_atli[i].path, {mipmaps = true, dpiscale = self.SETTINGS.GRAPHICS.texture_scaling})''' -position = 'after' -payload = ''' -local mipmap_level = SMODS.config.graphics_mipmap_level_options[SMODS.config.graphics_mipmap_level] -if mipmap_level and mipmap_level > 0 then - self.ASSET_ATLAS[self.asset_atli[i].name].image:setMipmapFilter('linear', mipmap_level) -end''' -match_indent = true - - -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''create_option_cycle({w = 4,scale = 0.8, label = localize("b_set_CRT_bloom"),options = localize('ml_bloom_opt'), opt_callback = 'change_crt_bloom', current_option = G.SETTINGS.GRAPHICS.bloom}),''' -position = 'after' -payload = ''' -create_option_cycle({label = localize('b_graphics_mipmap_level'),scale = 0.8, options = SMODS.config.graphics_mipmap_level_options, opt_callback = 'SMODS_change_mipmap', current_option = SMODS.config.graphics_mipmap_level}),''' -match_indent = true - diff --git a/smods-old-calc/lovely/mod.toml b/smods-old-calc/lovely/mod.toml deleted file mode 100644 index 225effb..0000000 --- a/smods-old-calc/lovely/mod.toml +++ /dev/null @@ -1,70 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -### Per-mod functions - -# end_round() -[[patches]] -[patches.regex] -target = 'functions/state_events.lua' -pattern = '''(?[\t ]*)reset_castle_card\(\)''' -line_prepend = '$indent' -position = 'after' -payload = ''' -for _, mod in ipairs(SMODS.mod_list) do - if mod.reset_game_globals and type(mod.reset_game_globals) == 'function' then - mod.reset_game_globals(false) - end -end''' - -# Game:start_run() -[[patches]] -[patches.regex] -target = 'game.lua' -pattern = '''(?[\t ]*)reset_castle_card\(\)''' -line_prepend = '$indent' -position = 'after' -payload = ''' -for _, mod in ipairs(SMODS.mod_list) do - if mod.reset_game_globals and type(mod.reset_game_globals) == 'function' then - mod.reset_game_globals(true) - end -end''' - -# Card:set_debuff() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "function Card:set_debuff(should_debuff)" -position = 'after' -match_indent = true -payload = ''' - for _, mod in ipairs(SMODS.mod_list) do - if mod.set_debuff and type(mod.set_debuff) == 'function' then - local res = mod.set_debuff(self) - if res == 'prevent_debuff' then - if self.debuff then - self.debuff = false - if self.area == G.jokers then self:add_to_deck(true) end - self.debuffed_by_blind = false - end - return - end - should_debuff = should_debuff or res - end - end - for k, v in pairs(self.ability.debuff_sources or {}) do - if v == 'prevent_debuff' then - if self.debuff then - self.debuff = false - if self.area == G.jokers then self:add_to_deck(true) end - end - self.debuffed_by_blind = false - return - end - should_debuff = should_debuff or v - end - -''' diff --git a/smods-old-calc/lovely/number_formatting.toml b/smods-old-calc/lovely/number_formatting.toml deleted file mode 100644 index 0107ffa..0000000 --- a/smods-old-calc/lovely/number_formatting.toml +++ /dev/null @@ -1,171 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -# -# Use number_format for... -# - -# DynaText - -[[patches]] -[patches.regex] -target = "engine/text.lua" -pattern = 'tostring\((?v\.ref_table and v\.ref_table\[v\.ref_value\] or v\.string)\)' -position = "at" -payload = "format_ui_value($param)" - -# Cash Out - -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = ''' -localize\('\$'\)\.\.config\.dollars''' -position = "at" -payload = "localize('$')..format_ui_value(config.dollars)" - -# End of round money - -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = ''' -localize\('\$'\)\.\.num_dollars\}''' -position = "at" -payload = "localize('$')..format_ui_value(num_dollars)}" - -# Tooltip numbers - -[[patches]] -[patches.regex] -target = "functions/misc_functions.lua" -pattern = '(?args\.vars\[tonumber\(subpart\[1\]\)\])' -position = "at" -payload = 'format_ui_value($param)' - -# Poker Hand chips - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "{n=G.UIT.T, config={text = G.GAME.hands[handname].chips, scale = 0.45, colour = G.C.UI.TEXT_LIGHT}}," -position = "at" -payload = "{n=G.UIT.T, config={text = number_format(G.GAME.hands[handname].chips, 1000000), scale = 0.45, colour = G.C.UI.TEXT_LIGHT}}," -match_indent = true - -# Poker Hand mult - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "{n=G.UIT.T, config={text = G.GAME.hands[handname].mult, scale = 0.45, colour = G.C.UI.TEXT_LIGHT}}" -position = "at" -payload = "{n=G.UIT.T, config={text = number_format(G.GAME.hands[handname].mult, 1000000), scale = 0.45, colour = G.C.UI.TEXT_LIGHT}}" -match_indent = true - -# Continue Run - Money - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = 'tostring\(saved_game\.GAME\.dollars\)' -position = "at" -payload = "format_ui_value(saved_game.GAME.dollars)" - -# Continue Run - Best Hand - bigger size - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = 'scale_number\(saved_game\.GAME\.round_scores\.hand\.amt\, 0\.8\*scale\)' -position = "at" -payload = "scale_number(saved_game.GAME.round_scores.hand.amt, 0.8*scale, 100000000000)" - - -# -# Custom sci notation switch point -# - -## number_format -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'function number_format(num)' -position = "at" -payload = ''' -function number_format(num, e_switch_point) - if type(num) ~= 'number' then return num end - - local sign = (num >= 0 and "") or "-" - num = math.abs(num)''' -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/misc_functions.lua" -pattern = 'num >= G\.E_SWITCH_POINT' -position = "at" -payload = "num >= (e_switch_point or G.E_SWITCH_POINT)" - -# 1. Fix floating point error (1.000e92 instead of 10.000e91) -# 2. Lower precision with higher numbers -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = ''' -return string.format("%.3f",x/(10^fac))..'e'..fac''' -position = "at" -payload = ''' -if num == math.huge then - return sign.."naneinf" -end - -local mantissa = round_number(x/(10^fac), 3) -if mantissa >= 10 then - mantissa = mantissa / 10 - fac = fac + 1 -end -return sign..(string.format(fac >= 100 and "%.1fe%i" or fac >= 10 and "%.2fe%i" or "%.3fe%i", mantissa, fac))''' -match_indent = true - -# Remove trailing zeroes -# E.g. X1.5 being displayed as X1.50 -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = ''' -return string.format(num ~= math.floor(num) and (num >= 100 and "%.0f" or num >= 10 and "%.1f" or "%.2f") or "%.0f", num):reverse():gsub("(%d%d%d)", "%1,"):gsub(",$", ""):reverse()''' -position = "at" -payload = ''' -local formatted -if num ~= math.floor(num) and num < 100 then - formatted = string.format(num >= 10 and "%.1f" or "%.2f", num) - if formatted:sub(-1) == "0" then - formatted = formatted:gsub("%.?0+$", "") - end - -- Return already to avoid comas being added - if num < 0.01 then return tostring(num) end -else - formatted = string.format("%.0f", num) -end -return sign..(formatted:reverse():gsub("(%d%d%d)", "%1,"):gsub(",$", ""):reverse())''' -match_indent = true - -## scale_number -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = 'function scale_number(number, scale, max)' -position = "at" -payload = 'function scale_number(number, scale, max, e_switch_point)' -match_indent = true - -[[patches]] -[patches.regex] -target = "functions/button_callbacks.lua" -pattern = 'number >= G\.E_SWITCH_POINT' -position = "at" -payload = "math.abs(number) >= (e_switch_point or G.E_SWITCH_POINT)" - diff --git a/smods-old-calc/lovely/playing_card.toml b/smods-old-calc/lovely/playing_card.toml deleted file mode 100644 index 1f6a244..0000000 --- a/smods-old-calc/lovely/playing_card.toml +++ /dev/null @@ -1,299 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Playing Card API - -# Game:init_game_object() -[[patches]] -[patches.pattern] -target = 'game.lua' -pattern = 'function Game:init_game_object()' -position = 'after' -match_indent = true -payload = ''' - local cards_played = {} - for _,v in ipairs(SMODS.Rank.obj_buffer) do - cards_played[v] = { suits = {}, total = 0 } - end''' - -[[patches]] -[patches.regex] -target = "game.lua" -pattern = '(?[\t ]*)cards_played = \{\n(.*\n){13}[\t ]*\},' -position = 'at' -line_prepend = '$indent' -payload = ''' - cards_played = cards_played, - disabled_suits = {}, - disabled_ranks = {},''' - -# Game:start_run() -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = 'local _ = nil' -position = 'before' -match_indent = true -payload = ''' -if type(SMODS.Ranks[v.value].in_pool) == 'function' and not SMODS.Ranks[v.value]:in_pool({initial_deck = true, suit = v.suit}) -or type(SMODS.Suits[v.suit].in_pool) == 'function' and not SMODS.Suits[v.suit]:in_pool({initial_deck = true, rank = v.value}) then - goto continue -end''' - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "if self.GAME.starting_params.erratic_suits_and_ranks then _, k = pseudorandom_element(G.P_CARDS, pseudoseed('erratic')) end" -position = 'at' -match_indent = true -payload = '''if self.GAME.starting_params.erratic_suits_and_ranks then - v, k = pseudorandom_element(G.P_CARDS, pseudoseed('erratic'), {starting_deck = true}) -end''' - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = 'local _r, _s = string.sub(k, 3, 3), string.sub(k, 1, 1)' -position = 'at' -match_indent = true -payload = 'local _r, _s = SMODS.Ranks[v.value].card_key, SMODS.Suits[v.suit].card_key' - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "if self.GAME.starting_params.no_faces and (_r == 'K' or _r == 'Q' or _r == 'J') then keep = false end" -position = 'at' -match_indent = true -payload = ''' -if self.GAME.starting_params.no_faces and SMODS.Ranks[v.value].face then keep = false end''' - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "if keep then card_protos[#card_protos+1] = {s=_s,r=_r,e=_e,d=_d,g=_g} end" -position = "after" -payload = "::continue::" -match_indent = true - -# loc_colour() -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'return G.ARGS.LOC_COLOURS[_c] or _default or G.C.UI.TEXT_DARK' -position = 'before' -match_indent = true -payload = ''' - for _, v in ipairs(SMODS.Rarity.obj_buffer) do - G.ARGS.LOC_COLOURS[v:lower()] = G.C.RARITY[v] - end - for _, v in ipairs(SMODS.ConsumableType.ctype_buffer) do - G.ARGS.LOC_COLOURS[v:lower()] = G.C.SECONDARY_SET[v] - end - for _, v in ipairs(SMODS.Suit.obj_buffer) do - G.ARGS.LOC_COLOURS[v:lower()] = G.C.SUITS[v] - end''' - -# get_flush() -[[patches]] -[patches.regex] -target = "functions/misc_functions.lua" -pattern = '(?[\t ]*)local suits = \{\n[\t ]*"Spades",\n[\t ]*"Hearts",\n[\t ]*"Clubs",\n[\t ]*"Diamonds"\n[\t ]*\}\n[\t ]*if #hand > 5 or (?#hand < \(5 - \(four_fingers and 1 or 0\)\) then return ret else)' -position = 'at' -line_prepend = '$indent' -payload = ''' -local suits = SMODS.Suit.obj_buffer -if $restcond''' - -# get_X_same() -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'local vals = {{},{},{},{},{},{},{},{},{},{},{},{},{},{}}' -position = 'at' -match_indent = true -payload = ''' -local vals = {} -for i = 1, SMODS.Rank.max_id.value do - vals[i] = {} -end''' - -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'function get_X_same(num, hand)' -position = 'at' -match_indent = true -payload = '''function get_X_same(num, hand, or_more)''' - -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'if #curr == num then' -position = 'at' -match_indent = true -payload = '''if or_more and (#curr >= num) or (#curr == num) then''' - -# Card:get_nominal() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = 'function Card:get_nominal\(mod\)\n([\t ]+.*\n)*end' -position = 'at' -payload = ''' -function Card:get_nominal(mod) - local mult = 1 - local rank_mult = 1 - if mod == 'suit' then mult = 10000 end - if self.ability.effect == 'Stone Card' or (self.config.center.no_suit and self.config.center.no_rank) then - mult = -10000 - elseif self.config.center.no_suit then - mult = 0 - elseif self.config.center.no_rank then - rank_mult = 0 - end - return 10*self.base.nominal*rank_mult + self.base.suit_nominal*mult + (self.base.suit_nominal_original or 0)*0.0001*mult + 10*self.base.face_nominal*rank_mult + 0.000001*self.unique_val -end''' - -# Card:set_base() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)if self.base.value == '2' then self.base.nominal = 2; self.base.id = 2(\n[\t ]+elseif .*)*" -position = 'at' -line_prepend = '$indent' -payload = ''' -local rank = SMODS.Ranks[self.base.value] or {} -self.base.nominal = rank.nominal or 0 -self.base.face_nominal = rank.face_nominal or 0 -self.base.id = rank.id''' - -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)if self.base.suit == 'Diamonds' then self.base.suit_nominal = 0.01; self.base.suit_nominal_original = suit_base_nominal_original or 0.001 (\n[\t ]+elseif .*)*" -position = 'at' -line_prepend = '$indent' -payload = ''' -local suit = SMODS.Suits[self.base.suit] or {} -self.base.suit_nominal = suit.suit_nominal or 0 -self.base.suit_nominal_original = suit_base_nominal_original or suit.suit_nominal or 0''' - -# Card:change_suit() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)local new_code = [\\s\\S]*?local new_val = [\\s\\S]*?local new_card = G.P_CARDS\\[new_code..new_val\\]" -position = 'at' -line_prepend = '$indent' -payload = ''' -local new_code = SMODS.Suits[new_suit].card_key -local new_val = SMODS.Ranks[self.base.value].card_key -local new_card = G.P_CARDS[new_code..'_'..new_val]''' - -# Card:is_face() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = "(?[\t ]*)if id == 11 or id == 12 or id == 13 or next\\(find_joker\\(\"Pareidolia\"\\)\\) then" -position = 'at' -line_prepend = '$indent' -payload = ''' -local rank = SMODS.Ranks[self.base.value] -if not id then return end -if (id > 0 and rank and rank.face) or next(find_joker("Pareidolia")) then''' - - -# tally_sprite() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '(?[\t ]*local t_s = Sprite\(0,0,0.5,0.5,)G.ASSET_ATLAS\[.*?\](?.*?\))' -position = 'at' -payload = '$start G.ASSET_ATLAS[suit and SMODS.Suits[suit][G.SETTINGS.colourblind_option and "hc_ui_atlas" or "lc_ui_atlas"]] or G.ASSET_ATLAS[("ui_"..(G.SETTINGS.colourblind_option and "2" or "1"))]$rest' - -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'function tally_sprite(pos, value, tooltip)' -position = 'at' -match_indent = true -payload = 'function tally_sprite(pos, value, tooltip, suit)' - -# G.UIDEF.challenge_description_tab() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = "(?[\t ]*)local SUITS = \\{(\n.*){5}\n[\t ]*local suit_map = \\{'S', 'H', 'C', 'D'\\}" -position = 'at' -line_prepend = '$indent' -payload = ''' -local SUITS = {} -local suit_map = {} -for i = #SMODS.Suit.obj_buffer, 1, -1 do - local suit = SMODS.Suits[SMODS.Suit.obj_buffer[i]] - SUITS[suit.card_key] = {} - suit_map[#suit_map+1] = suit.card_key -end''' - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = 'local _r, _s = string.sub(k, 3, 3), string.sub(k, 1, 1)' -position = 'at' -match_indent = true -payload = 'local _r, _s = SMODS.Ranks[v.value].card_key, SMODS.Suits[v.suit].card_key' - -# TODO there may need to be a way to let in_pool know what challenge is being displayed -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = 'local keep, _e, _d, _g = true, nil, nil, nil' -position = 'after' -match_indent = true -payload = ''' -if type(SMODS.Ranks[v.value].in_pool) == 'function' and not SMODS.Ranks[v.value]:in_pool({initial_deck = true, suit = v.suit}) then - keep = false -end -if type(SMODS.Suits[v.suit].in_pool) == 'function' and not SMODS.Suits[v.suit]:in_pool({initial_deck = true, rank = v.value}) then - keep = false -end''' - -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '(?[\t ]*)for j = 1, 4 do\n[\t ]*(?if SUITS\[suit_map\[j\]\]\[1\] then\n[\t ]*table.sort.*(\n.*)*?)\n[\t ]*0\.42\*G.CARD_H,' -position = 'at' -line_prepend = '$indent' -payload = ''' -local num_suits = 0 -for j = 1, #suit_map do - if SUITS[suit_map[j]][1] then num_suits = num_suits + 1 end -end -for j = 1, #suit_map do - $mid - (0.42 - (num_suits <= 4 and 0 or num_suits >= 8 and 0.28 or 0.07 * (num_suits - 4))) * G.CARD_H,''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = '--Fill all remaining info if this is the main desc' -position = 'before' -match_indent = true -payload = '''if card_type == 'Default' or card_type == 'Enhanced' and not _c.replace_base_card and card and card.base then - if not _c.no_suit then - local suit = SMODS.Suits[card.base.suit] or {} - if suit.loc_vars and type(suit.loc_vars) == 'function' then - suit:loc_vars(info_queue, card) - end - end - if not _c.no_rank then - local rank = SMODS.Ranks[card.base.value] or {} - if rank.loc_vars and type(rank.loc_vars) == 'function' then - rank:loc_vars(info_queue, card) - end - end -end - -''' diff --git a/smods-old-calc/lovely/poker_hand.toml b/smods-old-calc/lovely/poker_hand.toml deleted file mode 100644 index d6f0f05..0000000 --- a/smods-old-calc/lovely/poker_hand.toml +++ /dev/null @@ -1,60 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -### Poker Hand API - -# evaluate_poker_hand() -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "local parts = {" -position = 'before' -payload = ''' -for _,v in ipairs(SMODS.PokerHand.obj_buffer) do - results[v] = {} -end''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "if next(parts._5) and next(parts._flush) then" -position = 'before' -payload = ''' -for _,_hand in pairs(SMODS.PokerHands) do - if _hand.atomic_part and type(_hand.atomic_part) == 'function' then - parts[_hand.key] = _hand.atomic_part(hand) - end -end''' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "return results" -position = 'before' -payload = ''' -for _,_hand in pairs(SMODS.PokerHands) do - if _hand.composite and type(_hand.composite) == 'function' then - local other_hands - results[_hand.key], other_hands = _hand.composite(parts) - results[_hand.key] = results[_hand.key] or {} - if other_hands and type(other_hands) == 'table' then - for k, v in pairs(other_hands) do - results[k] = v - end - end - else - results[_hand.key] = parts[_hand.key] - end -end -results.top = nil -for _, v in ipairs(G.handlist) do - if not results.top and results[v] then - results.top = results[v] - break - end -end''' -match_indent = true diff --git a/smods-old-calc/lovely/pool.toml b/smods-old-calc/lovely/pool.toml deleted file mode 100644 index e08d9f7..0000000 --- a/smods-old-calc/lovely/pool.toml +++ /dev/null @@ -1,185 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Functions that affect random selection from pools - -# pseudorandom_element() -# TODO special cases for now -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "function pseudorandom_element(_t, seed)" -position = "at" -payload = """function pseudorandom_element(_t, seed, args) - -- TODO special cases for now - -- Preserves reverse nominal order for Suits, nominal+face_nominal order for Ranks - -- for vanilla RNG - if _t == SMODS.Suits then - _t = SMODS.Suit:obj_list(true) - end - if _t == SMODS.Ranks then - _t = SMODS.Rank:obj_list() - end -""" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "keys[#keys+1] = {k = k,v = v}" -position = "at" -payload = """ -local keep = true -local in_pool_func = - args and args.in_pool - or type(v) == 'table' and type(v.in_pool) == 'function' and v.in_pool - or _t == G.P_CARDS and function(c) - --Handles special case for Erratic Deck - local initial_deck = args and args.starting_deck or false - - return not ( - type(SMODS.Ranks[c.value].in_pool) == 'function' and not SMODS.Ranks[c.value]:in_pool({initial_deck = initial_deck, suit = c.suit}) - or type(SMODS.Suits[c.suit].in_pool) == 'function' and not SMODS.Suits[c.suit]:in_pool({initial_deck = initial_deck, rank = c.value}) - ) - end -if in_pool_func then - keep = in_pool_func(v, args) -end -if keep then - keys[#keys+1] = {k = k,v = v} -end""" -match_indent = true - -# fixes pseudorandom_element on an empty list -# nil, nil is returned in that case -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "local key = keys[math.random(#keys)].k" -position = "before" -payload = "if #keys == 0 then return nil, nil end" -match_indent = true - -## get_current_pool() - -# Centers - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "else _starting_pool, _pool_key = G.P_CENTER_POOLS[_type], _type..(_append or '')" -match_indent = true -position = 'before' -payload = ''' -elseif SMODS.ObjectTypes[_type] and SMODS.ObjectTypes[_type].rarities then - local rarities = SMODS.ObjectTypes[_type].rarities - local rarity - if _legendary and rarities.legendary then - rarity = rarities.legendary.key - else - rarity = _rarity or SMODS.poll_rarity(_type, 'rarity_'.._type..G.GAME.round_resets.ante..(_append or '')) - end - _starting_pool, _pool_key = SMODS.ObjectTypes[_type].rarity_pools[rarity], _type..rarity..(_append or '')''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if _type == 'Tarot' or _type == 'Tarot_Planet' then _pool[#_pool + 1] = \"c_strength\"" -match_indent = true -position = 'at' -payload = ''' -if SMODS.ObjectTypes[_type] and SMODS.ObjectTypes[_type].default and G.P_CENTERS[SMODS.ObjectTypes[_type].default] then - _pool[#_pool+1] = SMODS.ObjectTypes[_type].default -elseif _type == 'Tarot' or _type == 'Tarot_Planet' then _pool[#_pool + 1] = "c_strength"''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if v.name == 'Black Hole' or v.name == 'The Soul' then" -match_indent = true -position = 'at' -payload = "if v.name == 'Black Hole' or v.name == 'The Soul' or v.hidden then" - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if _type == 'Enhanced' then" -match_indent = true -position = 'before' -payload = ''' -local in_pool, pool_opts -if v.in_pool and type(v.in_pool) == 'function' then - in_pool, pool_opts = v:in_pool({ source = _append }) -end -pool_opts = pool_opts or {} -''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = 'elseif not (G.GAME.used_jokers[v.key] and not next(find_joker("Showman"))) and' -match_indent = true -position = 'at' -payload = '''elseif not (G.GAME.used_jokers[v.key] and not pool_opts.allow_duplicates and not next(find_joker("Showman"))) and''' - -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if add and not G.GAME.banned_keys[v.key] then" -match_indent = true -position = 'before' -payload = ''' -if v.in_pool and type(v.in_pool) == 'function' then - add = in_pool and (add or pool_opts.override_base_checks) -end -''' - -## G.GAME.used_jokers now checks keys, not names -# Card:set_ability() -# Remove the old center from `used_jokers` if set_ability overrides -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "local old_center = self.config.center" -position = 'after' -payload = ''' -if old_center and not next(SMODS.find_card(old_center.key, true)) then - G.GAME.used_jokers[old_center.key] = nil -end''' -match_indent = true -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -(?[\t ]*)for k, v in pairs\(G\.P_CENTERS\) do -[\t ]*if v\.name == self\.ability\.name then -[\t ]*G\.GAME\.used_jokers\[k\] = true -[\t ]*end -[\t ]*end''' -position = "at" -payload = ''' -if self.config.center.key then - G.GAME.used_jokers[self.config.center.key] = true -end -''' -line_prepend = "$indent" -# Card:remove() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = ''' -(?[\t ]*)for k, v in pairs\(G\.P_CENTERS\) do -[\t ]*if v\.name == self\.ability\.name then -[\t ]*if not next\(find_joker\(self\.ability\.name, true\)\) then -[\t ]*G\.GAME\.used_jokers\[k\] = nil -[\t ]*end -[\t ]*end -[\t ]*end''' -position = "at" -payload = ''' -if not next(SMODS.find_card(self.config.center.key, true)) then - G.GAME.used_jokers[self.config.center.key] = nil -end''' -line_prepend = "$indent" diff --git a/smods-old-calc/lovely/rarity.toml b/smods-old-calc/lovely/rarity.toml deleted file mode 100644 index f75a3dc..0000000 --- a/smods-old-calc/lovely/rarity.toml +++ /dev/null @@ -1,59 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Rarity API - -# get_badge_colour -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'return G.BADGE_COL[key] or {1, 0, 0, 1}' -position = 'before' -match_indent = true -payload = ''' -for k, v in pairs(SMODS.Rarity.obj_buffer) do - G.BADGE_COL[k] = G.C.RARITY[v] -end''' - -# G.UIDEF.card_h_popup -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if AUT.card_type == 'Joker' or (AUT.badges and AUT.badges.force_rarity) then card_type = ({localize('k_common'), localize('k_uncommon'), localize('k_rare'), localize('k_legendary')})[card.config.center.rarity] end" -position = "at" -payload = "if AUT.card_type == 'Joker' or (AUT.badges and AUT.badges.force_rarity) then card_type = SMODS.Rarity:get_rarity_badge(card.config.center.rarity) end" -match_indent = true - -# Game:update -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "self.C.EDITION[2] = 0.7+0.2*(1+math.sin(self.TIMERS.REAL*1.5 + 6))" -position = "after" -payload = ''' -for k, v in pairs(SMODS.Rarities) do - if v.gradient and type(v.gradient) == "function" then v:gradient(dt) end -end''' -match_indent = true - -# get_current_pool -[[patches]] -[patches.regex] -target = "functions/common_events.lua" -pattern = '''(?[\t ]*)local rarity = _rarity or pseudorandom\('rarity'\.\.G\.GAME\.round_resets\.ante\.\.\(_append or ''\)\) \n[\s\S]{12}rarity = \(_legendary and 4\) or \(rarity > 0\.95 and 3\) or \(rarity > 0\.7 and 2\) or 1''' -position = "at" -payload = ''' -_rarity = (_legendary and 4) or (type(_rarity) == "number" and ((_rarity > 0.95 and 3) or (_rarity > 0.7 and 2) or 1)) or _rarity -local rarity = _rarity or SMODS.poll_rarity("Joker", 'rarity'..G.GAME.round_resets.ante..(_append or '')) -''' -## Ensure that other cards set to string rarity work the same as set for int rarity -# Card:calculate_joker -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.ability.name == 'Baseball Card' and context.other_joker.config.center.rarity == 2 and self ~= context.other_joker then" -position = "at" -payload = '''if self.ability.name == 'Baseball Card' and (context.other_joker.config.center.rarity == 2 or context.other_joker.config.center.rarity == "Uncommon") and self ~= context.other_joker then''' -match_indent = true diff --git a/smods-old-calc/lovely/seal.toml b/smods-old-calc/lovely/seal.toml deleted file mode 100644 index 45c7708..0000000 --- a/smods-old-calc/lovely/seal.toml +++ /dev/null @@ -1,234 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Seal API -# Card:open() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = ''' -(?[\t ]*)local seal_rate = 10 -[\n\t ]*local seal_poll = pseudorandom\(pseudoseed\('stdseal'..G.GAME.round_resets.ante\)\) -[\n\t ]*if seal_poll > 1 - 0.02\*seal_rate then -[\n\t ]*local seal_type = pseudorandom\(pseudoseed\('stdsealtype'..G.GAME.round_resets.ante\)\) -[\n\t ]*if seal_type > 0.75 then card:set_seal\('Red'\) -[\n\t ]*elseif seal_type > 0.5 then card:set_seal\('Blue'\) -[\n\t ]*elseif seal_type > 0.25 then card:set_seal\('Gold'\) -[\n\t ]*else card:set_seal\('Purple'\) -[\n\t ]*end -[\n\t ]*end''' -position = 'at' -line_prepend = '$indent' -payload = ''' -card:set_seal(SMODS.poll_seal({mod = 10}))''' - -# Card:calculate_joker() -[[patches]] -[patches.regex] -target = 'card.lua' -pattern = ''' -(?[\t ]*)local seal_type = pseudorandom\(pseudoseed\('certsl'\)\) -[\n\t ]*if seal_type > 0.75 then _card:set_seal\('Red', true\) -[\n\t ]*elseif seal_type > 0.5 then _card:set_seal\('Blue', true\) -[\n\t ]*elseif seal_type > 0.25 then _card:set_seal\('Gold', true\) -[\n\t ]*else _card:set_seal\('Purple', true\) -[\n\t ]*end''' -position = 'at' -line_prepend = '$indent' -payload = '''_card:set_seal(SMODS.poll_seal({guaranteed = true, type_key = 'certsl'}))''' - -# get_badge_colour() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'return G.BADGE_COL[key] or {1, 0, 0, 1}' -position = 'before' -match_indent = true -payload = ''' -for k, v in pairs(SMODS.Seals) do - G.BADGE_COL[k:lower()..'_seal'] = v.badge_colour -end''' - -# Card:calculate_seal() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = 'function Card:calculate_seal\(context\)\n(?[\t ]*)if self.debuff then return nil end' -position = 'after' -line_prepend = '$indent' -payload = ''' -local obj = G.P_SEALS[self.seal] or {} -if obj.calculate and type(obj.calculate) == 'function' then - local o = obj:calculate(self, context) - if o then return o end -end''' - -# Card:update() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = 'if G.STAGE == G.STAGES.RUN then' -position = 'before' -match_indent = true -payload = ''' -local obj = G.P_SEALS[self.seal] or {} -if obj.update and type(obj.update) == 'function' then - obj:update(self, dt) -end''' - -# G.FUNCS.evaluate_play() -# Allow seals to return mult, chips and xmult like jokers. -[[patches]] -[patches.pattern] -target = "functions/state_events.lua" -pattern = "--If x_mult added, do mult add event and mult the mult to the total" -match_indent = true -position = "before" -payload = ''' -if effects[ii].seals then - if effects[ii].seals.chips then - if effects[ii].card then juice_card(effects[ii].card) end - hand_chips = mod_chips(hand_chips + effects[ii].seals.chips) - update_hand_text({delay = 0}, {chips = hand_chips}) - card_eval_status_text(scoring_hand[i], 'chips', effects[ii].seals.chips, percent) - end - - if effects[ii].seals.mult then - if effects[ii].card then juice_card(effects[ii].card) end - mult = mod_mult(mult + effects[ii].seals.mult) - update_hand_text({delay = 0}, {mult = mult}) - card_eval_status_text(scoring_hand[i], 'mult', effects[ii].seals.mult, percent) - end - - if effects[ii].seals.p_dollars then - if effects[ii].card then juice_card(effects[ii].card) end - ease_dollars(effects[ii].seals.p_dollars) - card_eval_status_text(scoring_hand[i], 'dollars', effects[ii].seals.p_dollars, percent) - end - - if effects[ii].seals.dollars then - if effects[ii].card then juice_card(effects[ii].card) end - ease_dollars(effects[ii].seals.dollars) - card_eval_status_text(scoring_hand[i], 'dollars', effects[ii].seals.dollars, percent) - end - - if effects[ii].seals.x_mult then - if effects[ii].card then juice_card(effects[ii].card) end - mult = mod_mult(mult*effects[ii].seals.x_mult) - update_hand_text({delay = 0}, {mult = mult}) - card_eval_status_text(scoring_hand[i], 'x_mult', effects[ii].seals.x_mult, percent) - end - - if effects[ii].seals.func then - effects[ii].seals.func() - end -end - -''' - -# Card:get_p_dollars() -[[patches]] -[patches.regex] -target = "card.lua" -pattern = '''(?[\t ]*)if (?self\.seal == 'Gold' then\n)''' -position = 'at' -line_prepend = '$indent' -payload = ''' -local obj = G.P_SEALS[self.seal] or {} -if obj.get_p_dollars and type(obj.get_p_dollars) == 'function' then - ret = ret + obj:get_p_dollars(self) -elseif $cond''' - -# generate_card_ui() -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if v == 'gold_seal'*" -match_indent = true -position = 'before' -payload = ''' -local seal = SMODS.Seals[v] or SMODS.Seal.badge_to_key[v] and SMODS.Seals[SMODS.Seal.badge_to_key[v]] -if seal and seal.generate_ui ~= 0 then - local t = { key = v, set = 'Other' } - info_queue[#info_queue+1] = t - if seal.loc_vars and type(seal.loc_vars) == 'function' then - local res = seal:loc_vars(info_queue, card) or {} - t.vars = res.vars - t.key = res.key or t.key - t.set = res.set or t.set - end -else''' -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -pattern = "if v == 'purple_seal'*" -match_indent = true -position = 'after' -payload = 'end' - -# Card:update_alert() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "function Card:update_alert()" -match_indent = true -position = 'after' -payload = ''' - if self.ability.set == 'Default' and self.config.center and self.config.center.key == 'c_base' and self.seal then - if G.P_SEALS[self.seal].alerted and self.children.alert then - self.children.alert:remove() - self.children.alert = nil - elseif not G.P_SEALS[self.seal].alerted and not self.children.alert and G.P_SEALS[self.seal].discovered then - self.children.alert = UIBox{ - definition = create_UIBox_card_alert(), - config = {align="tli", - offset = {x = 0.1, y = 0.1}, - parent = self} - } - end - end''' - -# Card:hover() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = "G:save_progress()" -match_indent = false -position = "after" -payload = ''' - elseif self.children.alert and self.seal and not G.P_SEALS[self.seal].alerted then - G.P_SEALS[self.seal].alerted = true - G:save_progress()''' - -# Game:init_item_prototypes() -[[patches]] -[patches.regex] -target = 'game.lua' -pattern = '''(?[\t ]*)Gold =[ {A-z=1-4,"}\n]*},[\n\t ]*}''' -position = 'at' -line_prepend = '$indent' -payload = ''' -Red = {order = 1, discovered = false, set = "Seal"}, -Blue = {order = 2, discovered = false, set = "Seal"}, -Gold = {order = 3, discovered = false, set = "Seal"}, -Purple = {order = 4, discovered = false, set = "Seal"}, -} -''' - -# Card:set_seal() -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''G.CONTROLLER.locks.seal = true''' -position = 'after' -match_indent = true -payload = '''local sound = G.P_SEALS[_seal].sound or {sound = 'gold_seal', per = 1.2, vol = 0.4}''' -[[patches]] -[patches.pattern] -target = 'card.lua' -pattern = '''play_sound('gold_seal', 1.2, 0.4)''' -position = 'at' -match_indent = true -payload = '''play_sound(sound.sound, sound.per, sound.vol)''' diff --git a/smods-old-calc/lovely/sound.toml b/smods-old-calc/lovely/sound.toml deleted file mode 100644 index 481300e..0000000 --- a/smods-old-calc/lovely/sound.toml +++ /dev/null @@ -1,167 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -#modulate_sound() -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'G.SOUND_MANAGER.channel:push(G.ARGS.push)' -match_indent = true -position = 'after' -payload = ''' -SMODS.previous_track = SMODS.previous_track or '' -local in_sync = (SMODS.Sounds[desired_track] or {}).sync -local out_sync = (SMODS.Sounds[SMODS.previous_track] or {}).sync -local should_sync = true -if (type(in_sync) == 'table' and not in_sync[SMODS.previous_track]) or in_sync == false then should_sync = false end -if (type(out_sync) == 'table' and not out_sync[desired_track]) or out_sync == false then should_sync = false end -if - SMODS.previous_track and SMODS.previous_track ~= desired_track and - not should_sync -then - G.ARGS.push.type = 'restart_music' - G.SOUND_MANAGER.channel:push(G.ARGS.push) -end -SMODS.previous_track = desired_track''' - -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = 'G.ARGS.push.ambient_control = G.SETTINGS.ambient_control' -match_indent = true -position = 'after' -payload = ''' -if SMODS.remove_replace_sound and SMODS.remove_replace_sound ~= desired_track then - SMODS.Sound.replace_sounds[SMODS.remove_replace_sound] = nil - SMODS.remove_replace_sound = nil -end -local replace_sound = SMODS.Sound.replace_sounds[desired_track] -if replace_sound then - local replaced_track = desired_track - desired_track = replace_sound.key - G.ARGS.push.desired_track = desired_track - if SMODS.previous_track ~= desired_track then - if replace_sound.times > 0 then replace_sound.times = replace_sound.times - 1 end - if replace_sound.times == 0 then SMODS.remove_replace_sound = replaced_track end - end -end -local stop_sound = SMODS.Sound.stop_sounds[desired_track] -if SMODS.Sound.stop_sounds[desired_track] then - if SMODS.previous_track ~= '' and stop_sound > 0 then stop_sound = stop_sound - 1 end - SMODS.Sound.stop_sounds[desired_track] = stop_sound ~= 0 and stop_sound or nil - SMODS.previous_track = '' - return -end -''' - -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -pattern = "(G.STATE == G.STATES.SPLASH and '') or" -match_indent = true -position = 'after' -payload = 'SMODS.Sound:get_current_music() or' - -# PLAY_SOUND -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = '''local s = {sound = love.audio.newSource("resources/sounds/"..args.sound_code..'.ogg', should_stream and "stream" or 'static')}''' -match_indent = true -position = 'at' -payload = ''' -local c = SMODS_Sounds[args.sound_code] -local s = c and -{sound = love.audio.newSource(love.sound.newDecoder(c.data), c.should_stream and 'stream' or 'static'), per = c.per, vol = c.vol } or -{sound = love.audio.newSource("resources/sounds/"..args.sound_code..'.ogg', should_stream and "stream" or 'static')}''' - -# pass in custom sounds -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = "DISABLE_SFX = false" -match_indent = true -position = 'after' -payload = ''' -SMODS_Sounds = {} -''' -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = "elseif request.type == 'stop' then" -match_indent = true -position = 'before' -payload = ''' -elseif request.type == 'sound_source' then - SMODS_Sounds[request.sound_code] = { - sound_code = request.sound_code, - data = request.data, - sound = sound, - per = request.per, - vol = request.vol, - } - SOURCES[request.sound_code] = {} -''' - -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = "s.original_pitch = args.per or 1" -match_indent = true -position = 'at' -payload = 's.original_pitch = ((args.type ~= "sound") and s.per) or args.per or 1' - -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = "s.original_volume = args.vol or 1" -match_indent = true -position = 'at' -payload = 's.original_volume = ((args.type ~= "sound") and s.vol) or args.vol or 1' - -# don't crash RESTART_MUSIC - -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = "RESTART_MUSIC()" -match_indent = true -position = 'at' -payload = 'RESTART_MUSIC(request)' - -# fix looping for music of different length - -[[patches]] -[patches.regex] -target = 'engine/sound_manager.lua' -pattern = """(?[\t ]*)function MODULATE\\(args\\)(\n.*){9}""" -line_prepend = '$indent' -position = 'at' -payload = """function MODULATE(args) - if args.desired_track ~= '' then - local sound = ((SOURCES[current_track or {}] or {})[1] or {}).sound - if not sound or not sound:isPlaying() then - RESTART_MUSIC(args) - end - end -""" -[[patches]] -[patches.pattern] -target = 'engine/sound_manager.lua' -pattern = "for _, s in pairs(v) do" -match_indent = true -position = 'at' -payload = """current_track = args.desired_track -for _, s in pairs(v) do""" - -# [[patches]] -# [patches.pattern] -# target = 'engine/sound_manager.lua' -# pattern = 'if s.sound and not s.sound:isPlaying() then' -# match_indent = true -# position = 'at' -# payload = '''if s.sound and s.sound:isPlaying() then -# s.sound:stop() -# elseif s.sound and not s.sound:isPlaying() then''' diff --git a/smods-old-calc/lovely/stake.toml b/smods-old-calc/lovely/stake.toml deleted file mode 100644 index 839175f..0000000 --- a/smods-old-calc/lovely/stake.toml +++ /dev/null @@ -1,190 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -# Fix areas where highest stake is hardcoded as Gold Stake -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "if G.PROFILES[G.SETTINGS.profile].all_unlocked then max_stake = 8 end" -position = "at" -payload = "if G.PROFILES[G.SETTINGS.profile].all_unlocked then max_stake = #G.P_CENTER_POOLS['Stake'] end" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "for i = 1, math.min(max_stake+1, 8) do" -position = "at" -payload = "for i = 1, math.min(max_stake+1, #G.P_CENTER_POOLS['Stake']) do" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "if G.GAME.stake >= 8 then" -position = "at" -payload = "if G.GAME.stake >= #G.P_CENTER_POOLS['Stake'] then" -match_indent = true - -# Stake modifier API -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "if self.GAME.stake >= 2 then" -position = "before" -payload = "if false then" -match_indent = true - -[[patches]] -[patches.pattern] -target = "game.lua" -pattern = "if self.GAME.stake >= 8 then self.GAME.modifiers.enable_rentals_in_shop = true end" -position = "after" -payload = "end SMODS.setup_stake(self.GAME.stake)" -match_indent = true - -# Stake shininess API -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = "if _stake == 8 then" -position = "at" -payload = "if G.P_CENTER_POOLS['Stake'][_stake].shiny then" -match_indent = true - -# Override stake listing to make room for our recursive version -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = "for i = G.GAME.stake-1, 2, -1 do" -position = "before" -payload = "if false then" -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = 'other_col = {n=G.UIT.R, config={align = "cm", padding = 0.05, r = 0.1, colour = G.C.L_BLACK}, nodes=stake_desc_rows}' -position = "before" -payload = "end SMODS.applied_stakes_UI(G.GAME.stake, stake_desc_rows)" -match_indent = true - -# Set win stake to that specified in unlocked stake -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'for i = 1, G.GAME.stake do' -position = "at" -payload = '''for i = 1, -(G.P_CENTER_POOLS["Stake"][G.GAME.stake].unlocked_stake) and -(G.P_STAKES[G.P_CENTER_POOLS["Stake"][G.GAME.stake].unlocked_stake].stake_level-1) or (G.GAME.stake-1) -do''' -match_indent = true - -# Stake Sprites -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'local stake_sprite = Sprite(0,0,_scale*1,_scale*1,G.ASSET_ATLAS["chips"], G.P_CENTER_POOLS.Stake[_stake].pos)' -position = "at" -payload = 'local stake_sprite = Sprite(0,0,_scale*1,_scale*1,G.ASSET_ATLAS[G.P_CENTER_POOLS.Stake[_stake].atlas], G.P_CENTER_POOLS.Stake[_stake].pos)' -match_indent = true - -# Achievements and unlocks -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = 'if highest_win >= 2 then' -position = "at" -payload = 'if highest_win >= G.P_STAKES["stake_red"].stake_level then' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = 'if highest_win >= 4 then' -position = "at" -payload = 'if highest_win >= G.P_STAKES["stake_black"].stake_level then' -match_indent = true - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = 'if highest_win >= 8 then' -position = "at" -payload = 'if highest_win >= G.P_STAKES["stake_gold"].stake_level then' -match_indent = true - -# get_blind_amount -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'function get_blind_amount(ante)' -position = "after" -payload = '''if G.GAME.modifiers.scaling and G.GAME.modifiers.scaling > 3 then return SMODS.get_blind_amount(ante) end''' -match_indent = true - -# set_joker_usage -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key] = {count = 1, order = v.config.center.order, wins = {}, losses = {}}' -position = "at" -payload = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key] = {count = 1, order = v.config.center.order, wins = {}, losses = {}, wins_by_key = {}, losses_by_key = {}}' -match_indent = true - -# set_joker_win -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key] = G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key] or {count = 1, order = v.config.center.order, wins = {}, losses = {}}' -position = "at" -payload = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key] = G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key] or {count = 1, order = v.config.center.order, wins = {}, losses = {}, wins_by_key = {}, losses_by_key = {}}' -match_indent = true - -#set_joker_win -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].wins[G.GAME.stake] = (G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].wins[G.GAME.stake] or 0) + 1' -position = "after" -payload = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].wins_by_key[SMODS.stake_from_index(G.GAME.stake)] = (G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].wins_by_key[SMODS.stake_from_index(G.GAME.stake)] or 0) + 1' -match_indent = true - -#set_joker_loss -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].losses[G.GAME.stake] = (G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].losses[G.GAME.stake] or 0) + 1' -position = "after" -payload = 'G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].losses_by_key[SMODS.stake_from_index(G.GAME.stake)] = (G.PROFILES[G.SETTINGS.profile].joker_usage[v.config.center_key].losses_by_key[SMODS.stake_from_index(G.GAME.stake)] or 0) + 1' -match_indent = true - -# set_deck_usage -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'G.PROFILES[G.SETTINGS.profile].deck_usage[deck_key] = {count = 1, order = G.GAME.selected_back.effect.center.order, wins = {}, losses = {}}' -position = "at" -payload = 'G.PROFILES[G.SETTINGS.profile].deck_usage[deck_key] = {count = 1, order = G.GAME.selected_back.effect.center.order, wins = {}, losses = {}, wins_by_key = {}, losses_by_key = {}}' -match_indent = true - -# set_deck_loss -[[patches]] -[patches.pattern] -target = "functions/misc_functions.lua" -pattern = 'if not G.PROFILES[G.SETTINGS.profile].deck_usage[deck_key] then G.PROFILES[G.SETTINGS.profile].deck_usage[deck_key] = {count = 1, order = G.GAME.selected_back.effect.center.order, wins = {}, losses = {}} end' -position = "at" -payload = 'if not G.PROFILES[G.SETTINGS.profile].deck_usage[deck_key] then G.PROFILES[G.SETTINGS.profile].deck_usage[deck_key] = {count = 1, order = G.GAME.selected_back.effect.center.order, wins = {}, losses = {}, wins_by_key = {}, losses_by_key = {}} end' -match_indent = true - -# G.UIDEF.viewed_stake_option -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = 'G.viewed_stake = math.min(max_stake+1, G.viewed_stake)' -position = "after" -payload = '''if G.viewed_stake > #G.P_CENTER_POOLS.Stake then G.viewed_stake = #G.P_CENTER_POOLS.Stake end''' -match_indent = true diff --git a/smods-old-calc/lovely/sticker.toml b/smods-old-calc/lovely/sticker.toml deleted file mode 100644 index 57ff049..0000000 --- a/smods-old-calc/lovely/sticker.toml +++ /dev/null @@ -1,149 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Sticker API - -# generate_UIBox_ability_table() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "if self.sticker or ((self.sticker_run and self.sticker_run~='NONE') and G.SETTINGS.run_stake_stickers) then loc_vars = loc_vars or {}; loc_vars.sticker=(self.sticker or self.sticker_run) end" -position = "before" -match_indent = true -payload = ''' -for k, v in ipairs(SMODS.Sticker.obj_buffer) do - if self.ability[v] and not SMODS.Stickers[v].hide_badge then - badges[#badges+1] = v - end -end''' - -# generate_card_ui() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if v == 'eternal' then*" -match_indent = true -position = "before" -payload = ''' -local sticker = SMODS.Stickers[v] -if sticker then - local t = { key = v, set = 'Other' } - local res = {} - if sticker.loc_vars and type(sticker.loc_vars) == 'function' then - res = sticker:loc_vars(info_queue, card) or {} - t.vars = res.vars or {} - t.key = res.key or t.key - t.set = res.set or t.set - end - info_queue[#info_queue+1] = t -else''' - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if v == 'rental' then*" -match_indent = true -position = "after" -payload = '''end''' - -# create_card() -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if card.ability.consumeable and not skip_materialize then card:start_materialize() end" -position = "after" -match_indent = true -payload = ''' -for k, v in ipairs(SMODS.Sticker.obj_buffer) do - local sticker = SMODS.Stickers[v] - if sticker.should_apply and type(sticker.should_apply) == 'function' and sticker:should_apply(card, center, area) then - sticker:apply(card, true) - end -end''' - -## Remove base game sticker rolls if one is added -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 then" -position = "at" -match_indent = true -payload = '''if G.GAME.modifiers.enable_eternals_in_shop and eternal_perishable_poll > 0.7 and not SMODS.Stickers["eternal"].should_apply then''' - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "elseif G.GAME.modifiers.enable_perishables_in_shop and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) then" -position = "at" -match_indent = true -payload = '''elseif G.GAME.modifiers.enable_perishables_in_shop and ((eternal_perishable_poll > 0.4) and (eternal_perishable_poll <= 0.7)) and not SMODS.Stickers["perishable"].should_apply then''' - -[[patches]] -[patches.pattern] -target = "functions/common_events.lua" -pattern = "if G.GAME.modifiers.enable_rentals_in_shop and pseudorandom((area == G.pack_cards and 'packssjr' or 'ssjr')..G.GAME.round_resets.ante) > 0.7 then" -position = "at" -match_indent = true -payload = '''if G.GAME.modifiers.enable_rentals_in_shop and pseudorandom((area == G.pack_cards and 'packssjr' or 'ssjr')..G.GAME.round_resets.ante) > 0.7 and not SMODS.Stickers["rental"].should_apply then''' - -# Card:draw() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = '''if self.ability.name == 'The Soul' and (self.config.center.discovered or self.bypass_discovery_center) then''' -match_indent = true -position = "before" -payload = ''' -for k, v in pairs(SMODS.Stickers) do - if self.ability[v.key] then - if v and v.draw and type(v.draw) == 'function' then - v:draw(self, layer) - else - G.shared_stickers[v.key].role.draw_major = self - G.shared_stickers[v.key]:draw_shader('dissolve', nil, nil, nil, self.children.center) - G.shared_stickers[v.key]:draw_shader('voucher', nil, self.ARGS.send_to_shader, nil, self.children.center) - end - end -end -''' - -# Card:calculate_joker() -[[patches]] -[patches.pattern] -target = "card.lua" -pattern = "function Card:calculate_joker(context)" -position = 'after' -payload = ''' -for k, v in pairs(SMODS.Stickers) do - if self.ability[v.key] then - if v.calculate and type(v.calculate) == 'function' then - local override_card = v:calculate(self, context) - if override_card then return override_card end - end - end -end''' -match_indent = true - -# get_badge_colour() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = 'return G.BADGE_COL[key] or {1, 0, 0, 1}' -position = 'before' -match_indent = true -payload = ''' -for k, v in pairs(SMODS.Stickers) do - G.BADGE_COL[k] = v.badge_colour -end''' - -## Remove Pinned effect when in Sticker collections -# CardArea:aling_cards -[[patches]] -[patches.pattern] -target = 'cardarea.lua' -pattern = '''table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 - 100*(a.pinned and a.sort_id or 0) < b.T.x + b.T.w/2 - 100*(b.pinned and b.sort_id or 0) end)''' -position = 'at' -match_indent = true -payload = '''table.sort(self.cards, function (a, b) return a.T.x + a.T.w/2 - 100*((a.pinned and not a.ignore_pinned) and a.sort_id or 0) < b.T.x + b.T.w/2 - 100*((b.pinned and not b.ignore_pinned) and b.sort_id or 0) end)''' diff --git a/smods-old-calc/lovely/tag.toml b/smods-old-calc/lovely/tag.toml deleted file mode 100644 index 633ecb1..0000000 --- a/smods-old-calc/lovely/tag.toml +++ /dev/null @@ -1,101 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Tag API -# Tag:apply_to_run() -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = "function Tag:apply_to_run(_context)" -position = 'after' -match_indent = true -payload = ''' - if self.triggered then return end - local obj = SMODS.Tags[self.key] - local res - if obj and obj.apply and type(obj.apply) == 'function' then - res = obj:apply(self, _context) - end - if res then return res end -''' - -# Tag:set_ability() -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = "function Tag:set_ability()" -position = 'after' -match_indent = true -payload = ''' - local obj = SMODS.Tags[self.key] - local res - if obj and obj.set_ability and type(obj.set_ability) == 'function' then - obj:set_ability(self) - end -''' - -# create_UIBox_your_collection_tags() -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = "(?[\t ]*)local tag_matrix = \\{(\n.*){6}" -position = 'at' -line_prepend = '$indent' -payload = ''' -local tag_matrix = {} -local counter = 0 -local tag_tab = {} -local tag_pool = {} -if G.ACTIVE_MOD_UI then - for k, v in pairs(G.P_TAGS) do - if v.mod and G.ACTIVE_MOD_UI.id == v.mod.id then tag_pool[k] = v end - end -else - tag_pool = G.P_TAGS -end -for k, v in pairs(tag_pool) do - counter = counter + 1 - tag_tab[#tag_tab+1] = v -end -for i = 1, math.ceil(counter / 6) do - table.insert(tag_matrix, {}) -end''' - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = '''(?[\t ]*)v\.children\.alert\.states\.collide\.can = false\n[\s\S]{8}end\n[\s\S]{8}return true\n[\s\S]{4}end\)\n[\s\S]{2}\}\)\)\n{3}''' -position = 'after' -line_prepend = '$indent' -payload = ''' -local table_nodes = {} -for i = 1, math.ceil(counter / 6) do - table.insert(table_nodes, {n=G.UIT.R, config={align = "cm"}, nodes=tag_matrix[i]}) -end''' - -[[patches]] -[patches.regex] -target = "functions/UI_definitions.lua" -pattern = '''(?[\t ]*)\{\n[\s\S]{10}\{n=G\.UIT\.R, config=\{align = "cm"\}, nodes=tag_matrix\[1\]},[\s\S]*tag_matrix\[4\]\},\n[\s\S]{8}\}''' -position = 'at' -line_prepend = '$indent' -payload = '''table_nodes''' - -# Tag:generate_UI() -[[patches]] -[patches.regex] -target = "tag.lua" -pattern = 'G.ASSET_ATLAS\["tags"\]' -position = 'at' -payload = 'G.ASSET_ATLAS[(not self.hide_ability) and G.P_TAGS[self.key].atlas or "tags"]' - -# Tag:get_uibox_table() -[[patches]] -[patches.pattern] -target = "tag.lua" -pattern = '''tag_sprite.ability_UIBox_table = generate_card_ui(G.P_TAGS[self.key], nil, loc_vars, (self.hide_ability) and 'Undiscovered' or 'Tag', nil, (self.hide_ability))''' -position = 'at' -match_indent = true -payload = '''tag_sprite.ability_UIBox_table = generate_card_ui(G.P_TAGS[self.key], nil, loc_vars, (self.hide_ability) and 'Undiscovered' or 'Tag', nil, (self.hide_ability), nil, nil, self)''' diff --git a/smods-old-calc/lovely/threads.toml b/smods-old-calc/lovely/threads.toml deleted file mode 100644 index 85c2580..0000000 --- a/smods-old-calc/lovely/threads.toml +++ /dev/null @@ -1,30 +0,0 @@ -# Necessary to kill threads which lets us restart the game. - -[manifest] -version = "1.0.0" -dump_lua = true -priority = -5 - -[[patches]] -[patches.pattern] -target = "engine/save_manager.lua" -pattern = "if request then" -position = "after" -payload = "if request.type == 'kill' then return end" -match_indent = true - -[[patches]] -[patches.pattern] -target = "engine/http_manager.lua" -pattern = "if request then" -position = "after" -payload = "if request.type == 'kill' then return end" -match_indent = true - -[[patches]] -[patches.pattern] -target = "engine/sound_manager.lua" -pattern = "if request then" -position = "after" -payload = "if request.type == 'kill' then return end" -match_indent = true diff --git a/smods-old-calc/lovely/ui.toml b/smods-old-calc/lovely/ui.toml deleted file mode 100644 index 5a2eff1..0000000 --- a/smods-old-calc/lovely/ui.toml +++ /dev/null @@ -1,213 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -### Addition Tab - -## Decks tab -# create_UIBox_your_collection_decks() -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''G.GAME.viewed_back = Back(G.P_CENTERS.b_red)''' -position = "at" -payload = ''' -local deck_pool = SMODS.collection_pool(G.P_CENTER_POOLS.Back) -G.GAME.viewed_back = Back(G.ACTIVE_MOD_UI and deck_pool[1] or G.P_CENTERS.b_red)''' -match_indent = true - -# create_UIBox_your_collection_decks() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '''(?[\t ]*)for k, v in ipairs\(G\.P_CENTER_POOLS\.Back\) do\n[\s\S]{4}ordered_names\[#ordered_names\+1\] = v\.name\n[\s\S]{2}end''' -position = 'at' -payload = ''' -for k, v in ipairs(deck_pool) do - ordered_names[#ordered_names+1] = v.key -end''' -line_prepend = '$indent' - -# create_UIBox_your_collection_decks() -[[patches]] -[patches.pattern] -target = "functions/UI_definitions.lua" -pattern = '''local t = create_UIBox_generic_options({ back_func = 'your_collection', contents = {''' -position = "at" -payload = '''local t = create_UIBox_generic_options({ back_func = G.ACTIVE_MOD_UI and "openModUI_"..G.ACTIVE_MOD_UI.id or 'your_collection', contents = {''' -match_indent = true - -# G.FUNCS.your_collection_deck_page -[[patches]] -[patches.pattern] -target = "functions/button_callbacks.lua" -pattern = '''G.GAME.viewed_back:change_to(G.P_CENTER_POOLS.Back[args.to_key])''' -position = "at" -payload = ''' -local deck_pool = SMODS.collection_pool(G.P_CENTER_POOLS.Back) -G.GAME.viewed_back:change_to(deck_pool[args.to_key])''' -match_indent = true - -# create_UIBox_your_collection() -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -pattern = '''(?[\t ]*)UIBox_button\(\{button = 'your_collection_blinds', label = \{localize\('b_blinds'\)\}, count = G\.DISCOVER_TALLIES\.blinds, minw = 5, minh = 2.0, id = 'your_collection_blinds', focus_args = \{snap_to = true\}\}\),''' -position = 'after' -payload = '''UIBox_button({button = 'your_collection_other_gameobjects', label = {localize('k_other')}, minw = 5, id = 'your_collection_other_gameobjects', focus_args = {snap_to = true}}),''' - -# Fix UIElement.config.chosen being overriden if choice=true is set -# UIElement:click() -[[patches]] -[patches.pattern] -target = "engine/ui.lua" -match_indent = true -position = "after" -pattern = "if self.config.choice then" -payload = " local chosen_temp = self.config.chosen" - -[[patches]] -[patches.pattern] -target = "engine/ui.lua" -match_indent = true -position = "at" -pattern = "self.config.chosen = true" -payload = "self.config.chosen = chosen_temp or true" - -# Escape from mod menu saves config -# Needs to be before all checks -[[patches]] -[patches.pattern] -target = 'engine/controller.lua' -pattern = "function Controller:key_press_update(key, dt)" -position = "after" -payload = ''' - if key == "escape" and G.ACTIVE_MOD_UI then - G.FUNCS.exit_mods() - end -''' -match_indent = true - -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -position = 'before' -line_prepend = '$indent' -pattern = ''' -(?[\t ]*)return \{n=G\.UIT\.ROOT, config = \{align = 'cm', colour = G\.C\.CLEAR\}, nodes=\{ -[\t ]*\{n=G\.UIT\.C,''' -payload = ''' -local cols -if #info_boxes <= 3 then - cols = 1 -elseif #info_boxes <= 10 then - cols = 2 -elseif #info_boxes <= 24 then - cols = 3 -else - cols = 4 -end -local nodes_per_col = math.ceil(#info_boxes/cols) -local info_cols = {} -for i = 0, cols-1 do - local col = {} - for j = 1, nodes_per_col do - local info_box = info_boxes[i*nodes_per_col+j] - if info_box then - table.insert(col, info_box) - else break end - end - table.insert(info_cols, {n=G.UIT.C, config = {align="cm"}, nodes = col}) -end -info_boxes = {{n=G.UIT.R, config = {align="cm", padding = 0.05, card_pos = card.T.x }, nodes = info_cols}} -''' - -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -match_indent = true -position = 'at' -pattern = "config = {offset = {x=-0.03,y=0}, align = 'cl', parent = e}" -payload = """config = (not e.config.ref_table or not e.config.ref_table[1].config.card_pos or e.config.ref_table[1].config.card_pos > G.ROOM.T.w*0.4) and - {offset = {x=-0.03,y=0}, align = 'cl', parent = e} or - {offset = {x=0.03,y=0}, align = 'cr', parent = e}""" - -[[patches]] -[patches.pattern] -target = 'tag.lua' -match_indent = true -position = 'at' -pattern = "_self.config.h_popup_config ={align = 'cl', offset = {x=-0.1,y=0},parent = _self}" -payload = """_self.config.h_popup_config = (_self.T.x > G.ROOM.T.w*0.4) and - {align = 'cl', offset = {x=-0.1,y=0},parent = _self} or - {align = 'cr', offset = {x=0.1,y=0},parent = _self}""" - -# desc_from_rows -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -position = 'at' -pattern = 'colour = empty and G\.C\.CLEAR or G\.C\.UI\.BACKGROUND_WHITE' -payload = 'colour = desc_nodes.background_colour or empty and G.C.CLEAR or G.C.UI.BACKGROUND_WHITE' - -# info_tip_from_rows -[[patches]] -[patches.regex] -target = 'functions/UI_definitions.lua' -position = 'at' -pattern = 'padding = 0\.05, colour = G\.C\.WHITE\}' -payload = 'padding = 0.05, colour = desc_nodes.background_colour or G.C.WHITE}' - -# localize -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -position = 'after' -pattern = '\(part\.control\.C and loc_colour\(part\.control\.C\)\)' -payload = ' or args.text_colour' - -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -position = 'at' -pattern = 'loc_colour\(part\.control\.C or nil, args\.default_col\)' -payload = 'not part.control.C and args.text_colour or loc_colour(part.control.C or nil, args.default_col)' - -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -position = 'after' -pattern = 'part\.control\.s and tonumber\(part\.control\.s\)' -payload = ' or args.scale ' - -# set_discover_tallies() -# exclude no_collection objects -[[patches]] -[patches.pattern] -target = 'functions/misc_functions.lua' -match_indent = true -position = 'at' -pattern = "if not v.omit then" -payload = "if not v.omit and not v.no_collection then" - -[[patches]] -[patches.regex] -target = 'functions/misc_functions.lua' -line_prepend = '$indent' -position = 'at' -pattern = '(?[\t ]*)(?for _, v in pairs\(G\.P_[BT].*)(?(\n.*){7})' -payload = '''$start - if not v.no_collection then - $rest -end -''' - -#set_alerts() -[[patches]] -[patches.pattern] -target = 'functions/common_events.lua' -match_indent = true -position = 'at' -pattern = "if v.discovered and not v.alerted then" -payload = "if v.discovered and not v.alerted and not v.no_collection then" diff --git a/smods-old-calc/lovely/ui_elements.toml b/smods-old-calc/lovely/ui_elements.toml deleted file mode 100644 index 96050d0..0000000 --- a/smods-old-calc/lovely/ui_elements.toml +++ /dev/null @@ -1,121 +0,0 @@ -[manifest] -version = "1.0.0" -dump_lua = true -priority = -10 - -## colour argument fix -# create_tabs() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''tab_buttons[#tab_buttons+1] = UIBox_button({id = 'tab_but_'..(v.label or ''), ref_table = v, button = 'change_tab', label = {v.label}, minh = 0.8*args.scale, minw = 2.5*args.scale, col = true, choice = true, scale = args.text_scale, chosen = v.chosen, func = v.func, focus_args = {type = 'none'}})''' -position = 'at' -payload = '''tab_buttons[#tab_buttons+1] = UIBox_button({id = 'tab_but_'..(v.label or ''), ref_table = v, button = 'change_tab', label = {v.label}, minh = 0.8*args.scale, minw = 2.5*args.scale, col = true, choice = true, scale = args.text_scale, chosen = v.chosen, func = v.func, colour = args.colour, focus_args = {type = 'none'}})''' -match_indent = true - -# UIElement:draw_self() -[[patches]] -[patches.pattern] -target = 'engine/ui.lua' -pattern = '''love.graphics.polygon("fill", get_chosen_triangle_from_rect(self.layered_parallax.x, self.layered_parallax.y, self.VT.w*G.TILESIZE, self.VT.h*G.TILESIZE, self.config.chosen == 'vert'))''' -position = 'before' -payload = '''love.graphics.setColor(self.config.colour)''' -match_indent = true - - -## multiple text input fix -# create_text_input() -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''args.current_prompt_text = ''''' -position = 'after' -payload = '''args.id = args.id or "text_input"''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''ui_letters[#ui_letters+1] = {n=G.UIT.T, config={ref_table = args, ref_value = 'current_prompt_text', scale = args.text_scale, colour = lighten(copy_table(args.colour), 0.4), id = 'prompt'}}''' -position = 'at' -payload = '''ui_letters[#ui_letters+1] = {n=G.UIT.T, config={ref_table = args, ref_value = 'current_prompt_text', scale = args.text_scale, colour = lighten(copy_table(args.colour), 0.4), id = args.id..'_prompt'}}''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''ui_letters[i] = {n=G.UIT.T, config={ref_table = text.letters, ref_value = i, scale = args.text_scale, colour = G.C.UI.TEXT_LIGHT, id = 'letter_'..i}}''' -position = 'at' -payload = '''ui_letters[i] = {n=G.UIT.T, config={ref_table = text.letters, ref_value = i, scale = args.text_scale, colour = G.C.UI.TEXT_LIGHT, id = args.id..'_letter_'..i}}''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''ui_letters[#ui_letters+1] = {n=G.UIT.B, config={r = 0.03,w=0.1, h=0.4, colour = position_text_colour, id = 'position', func = 'flash'}}''' -position = 'at' -payload = '''ui_letters[#ui_letters+1] = {n=G.UIT.B, config={r = 0.03,w=0.1, h=0.4, colour = position_text_colour, id = args.id..'_position', func = 'flash'}}''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''{n=G.UIT.C, config={align = "cm", draw_layer = 1, colour = G.C.CLEAR}, nodes = {''' -position = 'at' -payload = '''{n=G.UIT.C, config={align = "cm", colour = G.C.CLEAR}, nodes = {''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'functions/UI_definitions.lua' -pattern = '''{n=G.UIT.C, config={id = 'text_input', align = "cm", padding = 0.05, r = 0.1, draw_layer = 2, hover = true, colour = args.colour,minw = args.w, min_h = args.h, button = 'select_text_input', shadow = true}, nodes={''' -position = 'at' -payload = '''{n=G.UIT.C, config={id = args.id, align = "cm", padding = 0.05, r = 0.1, hover = true, colour = args.colour,minw = args.w, min_h = args.h, button = 'select_text_input', shadow = true}, nodes={''' -match_indent = true - -# G.FUNCS.select_text_input -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.CONTROLLER.text_input_hook = e.children[1].children[1]''' -position = 'after' -payload = '''G.CONTROLLER.text_input_id = e.config.id''' -match_indent = true - -# G.FUNCS.paste_seed -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''G.CONTROLLER.text_input_hook = e.UIBox:get_UIE_by_ID('text_input').children[1].children[1]''' -position = 'after' -payload = """G.CONTROLLER.text_input_id = 'text_input'""" -match_indent = true - -# G.FUNCS.flash -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''if G.CONTROLLER.text_input_hook then''' -position = 'at' -payload = '''if G.CONTROLLER.text_input_hook and G.CONTROLLER.text_input_id == e.config.id:sub(1,string.len(G.CONTROLLER.text_input_id)) then''' -match_indent = true - -# TRANSPOSE_TEXT_INPUT() -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''if hook.children[i].config.id == 'position' then''' -position = 'at' -payload = '''if hook.children[i].config.id == G.CONTROLLER.text_input_id..'_position' then''' -match_indent = true -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''local real_letter = hook.children[position_child+dir].config.id:sub(1, 7) == 'letter_' and hook.children[position_child+dir].config.text ~= ''''' -position = 'at' -payload = '''local real_letter = hook.children[position_child+dir].config.id:sub(1, 8+string.len(G.CONTROLLER.text_input_id)) == G.CONTROLLER.text_input_id..'_letter_' and hook.children[position_child+dir].config.text ~= ''''' -match_indent = true - -# GET_TEXT_FROM_INPUT() -[[patches]] -[patches.pattern] -target = 'functions/button_callbacks.lua' -pattern = '''if hook.children[i].config and hook.children[i].config.id:sub(1, 7) == 'letter_' and hook.children[i].config.text ~= '' then''' -position = 'at' -payload = '''if hook.children[i].config and hook.children[i].config.id:sub(1, 8+string.len(G.CONTROLLER.text_input_id)) == G.CONTROLLER.text_input_id..'_letter_' and hook.children[i].config.text ~= '' then''' -match_indent = true diff --git a/smods-old-calc/src/utils.lua b/smods-old-calc/src/utils.lua deleted file mode 100644 index 31b0343..0000000 --- a/smods-old-calc/src/utils.lua +++ /dev/null @@ -1,1020 +0,0 @@ ---- STEAMODDED CORE ---- UTILITY FUNCTIONS -function inspect(table) - if type(table) ~= 'table' then - return "Not a table" - end - - local str = "" - for k, v in pairs(table) do - local valueStr = type(v) == "table" and "table" or tostring(v) - str = str .. tostring(k) .. ": " .. valueStr .. "\n" - end - - return str -end - -function inspectDepth(table, indent, depth) - if depth and depth > 5 then -- Limit the depth to avoid deep nesting - return "Depth limit reached" - end - - if type(table) ~= 'table' then -- Ensure the object is a table - return "Not a table" - end - - local str = "" - if not indent then indent = 0 end - - for k, v in pairs(table) do - local formatting = string.rep(" ", indent) .. tostring(k) .. ": " - if type(v) == "table" then - str = str .. formatting .. "\n" - str = str .. inspectDepth(v, indent + 1, (depth or 0) + 1) - elseif type(v) == 'function' then - str = str .. formatting .. "function\n" - elseif type(v) == 'boolean' then - str = str .. formatting .. tostring(v) .. "\n" - else - str = str .. formatting .. tostring(v) .. "\n" - end - end - - return str -end - -function inspectFunction(func) - if type(func) ~= 'function' then - return "Not a function" - end - - local info = debug.getinfo(func) - local result = "Function Details:\n" - - if info.what == "Lua" then - result = result .. "Defined in Lua\n" - else - result = result .. "Defined in C or precompiled\n" - end - - result = result .. "Name: " .. (info.name or "anonymous") .. "\n" - result = result .. "Source: " .. info.source .. "\n" - result = result .. "Line Defined: " .. info.linedefined .. "\n" - result = result .. "Last Line Defined: " .. info.lastlinedefined .. "\n" - result = result .. "Number of Upvalues: " .. info.nups .. "\n" - - return result -end - -function SMODS._save_d_u(o) - assert(not o._discovered_unlocked_overwritten) - o._d, o._u = o.discovered, o.unlocked - o._saved_d_u = true -end - -function SMODS.SAVE_UNLOCKS() - boot_print_stage("Saving Unlocks") - G:save_progress() - ------------------------------------- - local TESTHELPER_unlocks = false and not _RELEASE_MODE - ------------------------------------- - if not love.filesystem.getInfo(G.SETTINGS.profile .. '') then - love.filesystem.createDirectory(G.SETTINGS.profile .. - '') - end - if not love.filesystem.getInfo(G.SETTINGS.profile .. '/' .. 'meta.jkr') then - love.filesystem.append( - G.SETTINGS.profile .. '/' .. 'meta.jkr', 'return {}') - end - - convert_save_to_meta() - - local meta = STR_UNPACK(get_compressed(G.SETTINGS.profile .. '/' .. 'meta.jkr') or 'return {}') - meta.unlocked = meta.unlocked or {} - meta.discovered = meta.discovered or {} - meta.alerted = meta.alerted or {} - - G.P_LOCKED = {} - for k, v in pairs(G.P_CENTERS) do - if not v.wip and not v.demo then - if TESTHELPER_unlocks then - v.unlocked = true; v.discovered = true; v.alerted = true - end --REMOVE THIS - if not v.unlocked and meta.unlocked[k] then - v.unlocked = true - end - if not v.unlocked then - G.P_LOCKED[#G.P_LOCKED + 1] = v - end - if not v.discovered and meta.discovered[k] then - v.discovered = true - end - if v.discovered and meta.alerted[k] or v.set == 'Back' or v.start_alerted then - v.alerted = true - elseif v.discovered then - v.alerted = false - end - end - end - - table.sort(G.P_LOCKED, function (a, b) return a.order and b.order and a.order < b.order end) - - for k, v in pairs(G.P_BLINDS) do - v.key = k - if not v.wip and not v.demo then - if TESTHELPER_unlocks then v.discovered = true; v.alerted = true end --REMOVE THIS - if not v.discovered and meta.discovered[k] then - v.discovered = true - end - if v.discovered and meta.alerted[k] then - v.alerted = true - elseif v.discovered then - v.alerted = false - end - end - end - for k, v in pairs(G.P_TAGS) do - v.key = k - if not v.wip and not v.demo then - if TESTHELPER_unlocks then v.discovered = true; v.alerted = true end --REMOVE THIS - if not v.discovered and meta.discovered[k] then - v.discovered = true - end - if v.discovered and meta.alerted[k] then - v.alerted = true - elseif v.discovered then - v.alerted = false - end - end - end - for k, v in pairs(G.P_SEALS) do - v.key = k - if not v.wip and not v.demo then - if TESTHELPER_unlocks then - v.discovered = true; v.alerted = true - end --REMOVE THIS - if not v.discovered and meta.discovered[k] then - v.discovered = true - end - if v.discovered and meta.alerted[k] then - v.alerted = true - elseif v.discovered then - v.alerted = false - end - end - end - for _, t in ipairs{ - G.P_CENTERS, - G.P_BLINDS, - G.P_TAGS, - G.P_SEALS, - } do - for k, v in pairs(t) do - v._discovered_unlocked_overwritten = true - end - end -end - -function SMODS.process_loc_text(ref_table, ref_value, loc_txt, key) - local target = (type(loc_txt) == 'table') and - ((G.SETTINGS.real_language and loc_txt[G.SETTINGS.real_language]) or loc_txt[G.SETTINGS.language] or loc_txt['default'] or loc_txt['en-us']) or loc_txt - if key and (type(target) == 'table') then target = target[key] end - if not (type(target) == 'string' or target and next(target)) then return end - ref_table[ref_value] = target -end - -local function parse_loc_file(file_name, force) - local loc_table = nil - if file_name:lower():match("%.json$") then - loc_table = assert(JSON.decode(NFS.read(file_name))) - else - loc_table = assert(loadstring(NFS.read(file_name)))() - end - local function recurse(target, ref_table) - if type(target) ~= 'table' then return end --this shouldn't happen unless there's a bad return value - for k, v in pairs(target) do - -- If the value doesn't exist *or* - -- force mode is on and the value is not a table, - -- change/add the thing - -- brings back compatibility with language patching mods - if (not ref_table[k] and type(k) ~= 'number') or (force and ((type(v) ~= 'table') or type(v[1]) == 'string')) then - ref_table[k] = v - else - recurse(v, ref_table[k]) - end - end - end - recurse(loc_table, G.localization) -end - -local function handle_loc_file(dir, language, force) - for k, v in ipairs({ dir .. language .. '.lua', dir .. language .. '.json' }) do - if NFS.getInfo(v) then - parse_loc_file(v, force) - break - end - end -end - -function SMODS.handle_loc_file(path) - local dir = path .. 'localization/' - handle_loc_file(dir, G.SETTINGS.language, true) - if G.SETTINGS.real_language then handle_loc_file(dir, G.SETTINGS.real_language, true) end - handle_loc_file(dir, 'default') - handle_loc_file(dir, 'en-us') -end - -function SMODS.insert_pool(pool, center, replace) - if replace == nil then replace = center.taken_ownership end - if replace then - for k, v in ipairs(pool) do - if v.key == center.key then - pool[k] = center - end - end - else - local prev_order = (pool[#pool] and pool[#pool].order) or 0 - if prev_order ~= nil then - center.order = prev_order + 1 - end - table.insert(pool, center) - end -end - -function SMODS.remove_pool(pool, key) - local j - for i, v in ipairs(pool) do - if v.key == key then j = i end - end - if j then return table.remove(pool, j) end -end - -function SMODS.juice_up_blind() - local ui_elem = G.HUD_blind:get_UIE_by_ID('HUD_blind_debuff') - for _, v in ipairs(ui_elem.children) do - v.children[1]:juice_up(0.3, 0) - end - G.GAME.blind:juice_up() -end - -function SMODS.eval_this(_card, effects) - if effects then - local extras = { mult = false, hand_chips = false } - if effects.mult_mod then - mult = mod_mult(mult + effects.mult_mod); extras.mult = true - end - if effects.chip_mod then - hand_chips = mod_chips(hand_chips + effects.chip_mod); extras.hand_chips = true - end - if effects.Xmult_mod then - mult = mod_mult(mult * effects.Xmult_mod); extras.mult = true - end - update_hand_text({ delay = 0 }, { chips = extras.hand_chips and hand_chips, mult = extras.mult and mult }) - if effects.message then - card_eval_status_text(_card, 'jokers', nil, nil, nil, effects) - end - end -end - --- Change a card's suit, rank, or both. --- Accepts keys for both objects instead of needing to build a card key yourself. -function SMODS.change_base(card, suit, rank) - if not card then return false end - local _suit = SMODS.Suits[suit or card.base.suit] - local _rank = SMODS.Ranks[rank or card.base.value] - if not _suit or not _rank then - sendWarnMessage(('Tried to call SMODS.change_base with invalid arguments: suit="%s", rank="%s"'):format(suit, rank), 'Util') - return false - end - card:set_base(G.P_CARDS[('%s_%s'):format(_suit.card_key, _rank.card_key)]) - return card -end - --- Return an array of all (non-debuffed) jokers or consumables with key `key`. --- Debuffed jokers count if `count_debuffed` is true. --- This function replaces find_joker(); please use SMODS.find_card() instead --- to avoid name conflicts with other mods. -function SMODS.find_card(key, count_debuffed) - local results = {} - if not G.jokers or not G.jokers.cards then return {} end - for k, v in pairs(G.jokers.cards) do - if v and type(v) == 'table' and v.config.center.key == key and (count_debuffed or not v.debuff) then - table.insert(results, v) - end - end - for k, v in pairs(G.consumeables.cards) do - if v and type(v) == 'table' and v.config.center.key == key and (count_debuffed or not v.debuff) then - table.insert(results, v) - end - end - return results -end - -function SMODS.create_card(t) - if not t.area and t.key and G.P_CENTERS[t.key] then - t.area = G.P_CENTERS[t.key].consumeable and G.consumeables or G.P_CENTERS[t.key].set == 'Joker' and G.jokers - end - if not t.area and not t.key and t.set and SMODS.ConsumableTypes[t.set] then - t.area = G.consumeables - end - SMODS.bypass_create_card_edition = t.no_edition - local _card = create_card(t.set, t.area, t.legendary, t.rarity, t.skip_materialize, t.soulable, t.key, t.key_append) - SMODS.bypass_create_card_edition = nil - - -- Should this be restricted to only cards able to handle these - -- or should that be left to the person calling SMODS.create_card to use it correctly? - if t.edition then _card:set_edition(t.edition) end - if t.enhancement then _card:set_ability(G.P_CENTERS[t.enhancement]) end - if t.seal then _card:set_seal(t.seal) end - if t.stickers then - for i, v in ipairs(t.stickers) do - local s = SMODS.Stickers[v] - if not s or type(s.should_apply) ~= 'function' or s:should_apply(_card, t.area, true) then - SMODS.Stickers[v]:apply(_card, true) - end - end - end - - return _card -end - -function SMODS.add_card(t) - local card = SMODS.create_card(t) - card:add_to_deck() - local area = t.area or G.jokers - area:emplace(card) - return card -end - -function SMODS.debuff_card(card, debuff, source) - debuff = debuff or nil - source = source and tostring(source) or nil - if debuff == 'reset' then card.ability.debuff_sources = {}; return end - card.ability.debuff_sources = card.ability.debuff_sources or {} - card.ability.debuff_sources[source] = debuff - card:set_debuff() -end - --- Recalculate whether a card should be debuffed -function SMODS.recalc_debuff(card) - G.GAME.blind:debuff_card(card) -end - -function SMODS.restart_game() - if ((G or {}).SOUND_MANAGER or {}).channel then - G.SOUND_MANAGER.channel:push({ - type = "kill", - }) - end - if ((G or {}).SAVE_MANAGER or {}).channel then - G.SAVE_MANAGER.channel:push({ - type = "kill", - }) - end - if ((G or {}).HTTP_MANAGER or {}).channel then - G.HTTP_MANAGER.channel:push({ - type = "kill", - }) - end - if love.system.getOS() ~= 'OS X' then - love.thread.newThread("os.execute(...)\n"):start('"' .. arg[-2] .. '" ' .. table.concat(arg, " ")) - else - os.execute('sh "/Users/$USER/Library/Application Support/Steam/steamapps/common/Balatro/run_lovely.sh" &') - end - - love.event.quit() -end - -function SMODS.create_mod_badges(obj, badges) - if not SMODS.config.no_mod_badges and obj and obj.mod and obj.mod.display_name and not obj.no_mod_badges then - local mods = {} - badges.mod_set = badges.mod_set or {} - if not badges.mod_set[obj.mod.id] and not obj.no_main_mod_badge then table.insert(mods, obj.mod) end - badges.mod_set[obj.mod.id] = true - if obj.dependencies then - for _, v in ipairs(obj.dependencies) do - local m = SMODS.Mods[v] - if not badges.mod_set[m.id] then - table.insert(mods, m) - badges.mod_set[m.id] = true - end - end - end - for i, mod in ipairs(mods) do - local mod_name = string.sub(mod.display_name, 1, 20) - local size = 0.9 - local font = G.LANG.font - local max_text_width = 2 - 2*0.05 - 4*0.03*size - 2*0.03 - local calced_text_width = 0 - -- Math reproduced from DynaText:update_text - for _, c in utf8.chars(mod_name) do - local tx = font.FONT:getWidth(c)*(0.33*size)*G.TILESCALE*font.FONTSCALE + 2.7*1*G.TILESCALE*font.FONTSCALE - calced_text_width = calced_text_width + tx/(G.TILESIZE*G.TILESCALE) - end - local scale_fac = - calced_text_width > max_text_width and max_text_width/calced_text_width - or 1 - badges[#badges + 1] = {n=G.UIT.R, config={align = "cm"}, nodes={ - {n=G.UIT.R, config={align = "cm", colour = mod.badge_colour or G.C.GREEN, r = 0.1, minw = 2, minh = 0.36, emboss = 0.05, padding = 0.03*size}, nodes={ - {n=G.UIT.B, config={h=0.1,w=0.03}}, - {n=G.UIT.O, config={object = DynaText({string = mod_name or 'ERROR', colours = {mod.badge_text_colour or G.C.WHITE},float = true, shadow = true, offset_y = -0.05, silent = true, spacing = 1*scale_fac, scale = 0.33*size*scale_fac})}}, - {n=G.UIT.B, config={h=0.1,w=0.03}}, - }} - }} - end - end -end - -function SMODS.create_loc_dump() - local _old, _new = SMODS.dump_loc.pre_inject, G.localization - local _dump = {} - local function recurse(old, new, dump) - for k, _ in pairs(new) do - if type(new[k]) == 'table' then - dump[k] = {} - if not old[k] then - dump[k] = new[k] - else - recurse(old[k], new[k], dump[k]) - end - elseif old[k] ~= new[k] then - dump[k] = new[k] - end - end - end - recurse(_old, _new, _dump) - local function cleanup(dump) - for k, v in pairs(dump) do - if type(v) == 'table' then - cleanup(v) - if not next(v) then dump[k] = nil end - end - end - end - cleanup(_dump) - local str = 'return ' .. serialize(_dump) - NFS.createDirectory(SMODS.dump_loc.path..'localization/') - NFS.write(SMODS.dump_loc.path..'localization/dump.lua', str) -end - --- Serializes an input table in valid Lua syntax --- Keys must be of type number or string --- Values must be of type number, boolean, string or table -function serialize(t, indent) - indent = indent or '' - local str = '{\n' - for k, v in ipairs(t) do - str = str .. indent .. '\t' - if type(v) == 'number' then - str = str .. v - elseif type(v) == 'boolean' then - str = str .. (v and 'true' or 'false') - elseif type(v) == 'string' then - str = str .. serialize_string(v) - elseif type(v) == 'table' then - str = str .. serialize(v, indent .. '\t') - else - -- not serializable - str = str .. 'nil' - end - str = str .. ',\n' - end - for k, v in pairs(t) do - if type(k) == 'string' then - str = str .. indent .. '\t' .. '[' .. serialize_string(k) .. '] = ' - - if type(v) == 'number' then - str = str .. v - elseif type(v) == 'boolean' then - str = str .. (v and 'true' or 'false') - elseif type(v) == 'string' then - str = str .. serialize_string(v) - elseif type(v) == 'table' then - str = str .. serialize(v, indent .. '\t') - else - -- not serializable - str = str .. 'nil' - end - str = str .. ',\n' - end - end - str = str .. indent .. '}' - return str -end - -function serialize_string(s) - return string.format("%q", s) -end - --- Starting with `t`, insert any key-value pairs from `defaults` that don't already --- exist in `t` into `t`. Modifies `t`. --- Returns `t`, the result of the merge. --- --- `nil` inputs count as {}; `false` inputs count as a table where --- every possible key maps to `false`. Therefore, --- * `t == nil` is weak and falls back to `defaults` --- * `t == false` explicitly ignores `defaults` --- (This function might not return a table, due to the above) -function SMODS.merge_defaults(t, defaults) - if t == false then return false end - if defaults == false then return false end - - -- Add in the keys from `defaults`, returning a table - if defaults == nil then return t end - if t == nil then t = {} end - for k, v in pairs(defaults) do - if t[k] == nil then - t[k] = v - end - end - return t -end -V_MT = { - __eq = function(a, b) - local minorWildcard = a.minor == -2 or b.minor == -2 - local patchWildcard = a.patch == -2 or b.patch == -2 - local betaWildcard = a.rev == '~' or b.rev == '~' - return a.major == b.major and - (a.minor == b.minor or minorWildcard) and - (a.patch == b.patch or minorWildcard or patchWildcard) and - (a.rev == b.rev or minorWildcard or patchWildcard or betaWildcard) and - (betaWildcard or a.beta == b.beta) - end, - __le = function(a, b) - local b = { - major = b.major + (b.minor == -2 and 1 or 0), - minor = b.minor == -2 and 0 or (b.minor + (b.patch == -2 and 1 or 0)), - patch = b.patch == -2 and 0 or b.patch, - beta = b.beta, - rev = b.rev, - } - if a.major ~= b.major then return a.major < b.major end - if a.minor ~= b.minor then return a.minor < b.minor end - if a.patch ~= b.patch then return a.patch < b.patch end - if a.beta ~= b.beta then return a.beta < b.beta end - return a.rev <= b.rev - end, - __lt = function(a, b) - return a <= b and not (a == b) - end, - __call = function(_, str) - str = str or '0.0.0' - local _, _, major, minorFull, minor, patchFull, patch, rev = string.find(str, '^(%d+)(%.?([%d%*]*))(%.?([%d%*]*))(.*)$') - local minorWildcard = string.match(minor, '%*') - local patchWildcard = string.match(patch, '%*') - if (minorFull ~= "" and minor == "") or (patchFull ~= "" and patch == "") then - sendWarnMessage('Trailing dot found in version "' .. str .. '".') - major, minor, patch = -1, 0, 0 - end - local t = { - major = tonumber(major), - minor = minorWildcard and -2 or tonumber(minor) or 0, - patch = patchWildcard and -2 or tonumber(patch) or 0, - rev = rev or '', - beta = rev and rev:sub(1,1) == '~' and -1 or 0 - } - return setmetatable(t, V_MT) - end -} -V = setmetatable({}, V_MT) -V_MT.__index = V -function V.is_valid(v, allow_wildcard) - if getmetatable(v) ~= V_MT then return false end - return(pcall(function() return V() <= v and (allow_wildcard or (v.minor ~= -2 and v.patch ~= -2 and v.rev ~= '~')) end)) -end - --- Flatten the given arrays of arrays into one, then --- add elements of each table to a new table in order, --- skipping any duplicates. -function SMODS.merge_lists(...) - local t = {} - for _, v in ipairs({...}) do - for _, vv in ipairs(v) do - table.insert(t, vv) - end - end - local ret = {} - local seen = {} - for _, li in ipairs(t) do - assert(type(li) == 'table') - for _, v in ipairs(li) do - if not seen[v] then - ret[#ret+1] = v - seen[v] = true - end - end - end - return ret -end - ---#region Number formatting - -function round_number(num, precision) - precision = 10^(precision or 0) - - return math.floor(num * precision + 0.4999999999999994) / precision -end - --- Formatting util for UI elements (look number_formatting.toml) -function format_ui_value(value) - if type(value) ~= "number" then - return tostring(value) - end - - return number_format(value, 1000000) -end - ---#endregion - - -function SMODS.poll_seal(args) - args = args or {} - local key = args.key or 'stdseal' - local mod = args.mod or 1 - local guaranteed = args.guaranteed or false - local options = args.options or get_current_pool("Seal") - local type_key = args.type_key or key.."type"..G.GAME.round_resets.ante - key = key..G.GAME.round_resets.ante - - local available_seals = {} - local total_weight = 0 - for _, v in ipairs(options) do - if v ~= "UNAVAILABLE" then - local seal_option = {} - if type(v) == 'string' then - assert(G.P_SEALS[v]) - seal_option = { key = v, weight = G.P_SEALS[v].weight or 5 } -- default weight set to 5 to replicate base game weighting - elseif type(v) == 'table' then - assert(G.P_SEALS[v.key]) - seal_option = { key = v.key, weight = v.weight } - end - if seal_option.weight > 0 then - table.insert(available_seals, seal_option) - total_weight = total_weight + seal_option.weight - end - end - end - total_weight = total_weight + (total_weight / 2 * 98) -- set base rate to 2% - - local type_weight = 0 -- modified weight total - for _,v in ipairs(available_seals) do - v.weight = G.P_SEALS[v.key].get_weight and G.P_SEALS[v.key]:get_weight() or v.weight - type_weight = type_weight + v.weight - end - - local seal_poll = pseudorandom(pseudoseed(key or 'stdseal'..G.GAME.round_resets.ante)) - if seal_poll > 1 - (type_weight*mod / total_weight) or guaranteed then -- is a seal generated - local seal_type_poll = pseudorandom(pseudoseed(type_key)) -- which seal is generated - local weight_i = 0 - for k, v in ipairs(available_seals) do - weight_i = weight_i + v.weight - if seal_type_poll > 1 - (weight_i / type_weight) then - return v.key - end - end - end -end - -function SMODS.get_blind_amount(ante) - local scale = G.GAME.modifiers.scaling - local amounts = { - 300, - 700 + 100*scale, - 1400 + 600*scale, - 2100 + 2900*scale, - 15000 + 5000*scale*math.log(scale), - 12000 + 8000*(scale+1)*(0.4*scale), - 10000 + 25000*(scale+1)*((scale/4)^2), - 50000 * (scale+1)^2 * (scale/7)^2 - } - - if ante < 1 then return 100 end - if ante <= 8 then return amounts[ante] - amounts[ante]%(10^math.floor(math.log10(amounts[ante])-1)) end - local a, b, c, d = amounts[8], amounts[8]/amounts[7], ante-8, 1 + 0.2*(ante-8) - local amount = math.floor(a*(b + (b*0.75*c)^d)^c) - amount = amount - amount%(10^math.floor(math.log10(amount)-1)) - return amount -end - -function SMODS.stake_from_index(index) - local stake = G.P_CENTER_POOLS.Stake[index] or nil - if not stake then return "error" end - return stake.key -end - -function convert_save_data() - for k, v in pairs(G.PROFILES[G.SETTINGS.profile].deck_usage) do - local first_pass = not v.wins_by_key and not v.losses_by_key - v.wins_by_key = v.wins_by_key or {} - for index, number in pairs(v.wins or {}) do - if index > 8 and not first_pass then break end - v.wins_by_key[SMODS.stake_from_index(index)] = number - end - v.losses_by_key = v.losses_by_key or {} - for index, number in pairs(v.losses or {}) do - if index > 8 and not first_pass then break end - v.losses_by_key[SMODS.stake_from_index(index)] = number - end - end - for k, v in pairs(G.PROFILES[G.SETTINGS.profile].joker_usage) do - local first_pass = not v.wins_by_key and not v.losses_by_key - v.wins_by_key = v.wins_by_key or {} - for index, number in pairs(v.wins or {}) do - if index > 8 and not first_pass then break end - v.wins_by_key[SMODS.stake_from_index(index)] = number - end - v.losses_by_key = v.losses_by_key or {} - for index, number in pairs(v.losses or {}) do - if index > 8 and not first_pass then break end - v.losses_by_key[SMODS.stake_from_index(index)] = number - end - end - G:save_settings() -end - - -function SMODS.poll_rarity(_pool_key, _rand_key) - local rarity_poll = pseudorandom(pseudoseed(_rand_key or ('rarity'..G.GAME.round_resets.ante))) -- Generate the poll value - local available_rarities = copy_table(SMODS.ObjectTypes[_pool_key].rarities) -- Table containing a list of rarities and their rates - local vanilla_rarities = {["Common"] = 1, ["Uncommon"] = 2, ["Rare"] = 3, ["Legendary"] = 4} - - -- Calculate total rates of rarities - local total_weight = 0 - for _, v in ipairs(available_rarities) do - v.mod = G.GAME[tostring(v.key):lower().."_mod"] or 1 - -- Should this fully override the v.weight calcs? - if SMODS.Rarities[v.key] and SMODS.Rarities[v.key].get_weight and type(SMODS.Rarities[v.key].get_weight) == "function" then - v.weight = SMODS.Rarities[v.key]:get_weight(v.weight, SMODS.ObjectTypes[_pool_key]) - end - v.weight = v.weight*v.mod - total_weight = total_weight + v.weight - end - -- recalculate rarities to account for v.mod - for _, v in ipairs(available_rarities) do - v.weight = v.weight / total_weight - end - - -- Calculate selected rarity - local weight_i = 0 - for _, v in ipairs(available_rarities) do - weight_i = weight_i + v.weight - if rarity_poll < weight_i then - if vanilla_rarities[v.key] then - return vanilla_rarities[v.key] - else - return v.key - end - end - end - return nil -end - -function SMODS.poll_enhancement(args) - args = args or {} - local key = args.key or 'std_enhance' - local mod = args.mod or 1 - local guaranteed = args.guaranteed or false - local options = args.options or get_current_pool("Enhanced") - local type_key = args.type_key or key.."type"..G.GAME.round_resets.ante - key = key..G.GAME.round_resets.ante - - local available_enhancements = {} - local total_weight = 0 - for _, v in ipairs(options) do - if v ~= "UNAVAILABLE" then - local enhance_option = {} - if type(v) == 'string' then - assert(G.P_CENTERS[v]) - enhance_option = { key = v, weight = G.P_CENTERS[v].weight or 5 } -- default weight set to 5 to replicate base game weighting - elseif type(v) == 'table' then - assert(G.P_CENTERS[v.key]) - enhance_option = { key = v.key, weight = v.weight } - end - if enhance_option.weight > 0 then - table.insert(available_enhancements, enhance_option) - total_weight = total_weight + enhance_option.weight - end - end - end - total_weight = total_weight + (total_weight / 40 * 60) -- set base rate to 40% - - local type_weight = 0 -- modified weight total - for _,v in ipairs(available_enhancements) do - v.weight = G.P_CENTERS[v.key].get_weight and G.P_CENTERS[v.key]:get_weight() or v.weight - type_weight = type_weight + v.weight - end - - local enhance_poll = pseudorandom(pseudoseed(key)) - if enhance_poll > 1 - (type_weight*mod / total_weight) or guaranteed then -- is an enhancement selected - local seal_type_poll = pseudorandom(pseudoseed(type_key)) -- which enhancement is selected - local weight_i = 0 - for k, v in ipairs(available_enhancements) do - weight_i = weight_i + v.weight - if seal_type_poll > 1 - (weight_i / type_weight) then - return v.key - end - end - end -end - -function time(func, ...) - local start_time = love.timer.getTime() - func(...) - local end_time = love.timer.getTime() - return 1000*(end_time-start_time) -end - -function SMODS.get_enhancements(card, extra_only) - local enhancements = {} - if card.config.center.key ~= "c_base" and not extra_only then - enhancements[card.config.center.key] = true - end - if G.jokers and G.jokers.cards then - for i=1, #G.jokers.cards do - local eval = G.jokers.cards[i]:calculate_joker({other_card = card, check_enhancement = true, no_blueprint = true }) - if eval then - for k, _ in pairs(eval) do - if G.P_CENTERS[k] then - enhancements[k] = true - end - end - end - end - end - if extra_only and enhancements[card.config.center.key] then - enhancements[card.config.center.key] = nil - end - return enhancements -end - -function SMODS.has_enhancement(card, key) - if card.config.center.key == key then return true end - if G.jokers and G.jokers.cards then - for i=1, #G.jokers.cards do - local eval = G.jokers.cards[i]:calculate_joker({other_card = card, check_enhancement = true, no_blueprint = true }) - if eval and type(eval) == 'table' and eval[key] then return true end - end - end - return false -end - -function SMODS.has_no_suit(card) - local is_stone = false - local is_wild = false - for k, _ in pairs(SMODS.get_enhancements(card)) do - if k == 'm_stone' or G.P_CENTERS[k].no_suit then is_stone = true end - if k == 'm_wild' or G.P_CENTERS[k].any_suit then is_wild = true end - end - return is_stone and not is_wild -end -function SMODS.has_any_suit(card) - for k, _ in pairs(SMODS.get_enhancements(card)) do - if k == 'm_wild' or G.P_CENTERS[k].any_suit then return true end - end -end -function SMODS.has_no_rank(card) - for k, _ in pairs(SMODS.get_enhancements(card)) do - if k == 'm_stone' or G.P_CENTERS[k].no_rank then return true end - end -end -function SMODS.always_scores(card) - for k, _ in pairs(SMODS.get_enhancements(card)) do - if k == 'm_stone' or G.P_CENTERS[k].always_scores then return true end - end -end - -SMODS.collection_pool = function(_base_pool) - local pool = {} - if type(_base_pool) ~= 'table' then return pool end - local is_array = _base_pool[1] - local ipairs = is_array and ipairs or pairs - for _, v in ipairs(_base_pool) do - if (not G.ACTIVE_MOD_UI or v.mod == G.ACTIVE_MOD_UI) and not v.no_collection then - pool[#pool+1] = v - end - end - if not is_array then table.sort(pool, function(a,b) return a.order < b.order end) end - return pool -end - -SMODS.find_mod = function(id) - local ret = {} - local mod = SMODS.Mods[id] or {} - if mod.can_load then ret[#ret+1] = mod end - for _,v in ipairs(SMODS.provided_mods[id] or {}) do - if v.mod.can_load then ret[#ret+1] = v.mod end - end - return ret -end - -local flat_copy_table = function(tbl) - local new = {} - for i, v in pairs(tbl) do - new[i] = v - end - return new -end - ----Seatch for val anywhere deep in tbl. Return a table of finds, or the first found if immediate is provided. -SMODS.deepfind = function(tbl, val, immediate) - local seen = {[tbl] = true} - local collector = {} - local stack = { {tbl = tbl, path = {}, objpath = {}} } - - --while there are any elements to traverse - while #stack > 0 do - --pull the top off of the stack and start traversing it (by default this will be the last element of the last traversed table found in pairs) - local current = table.remove(stack) - --the current table we wish to traverse - local currentTbl = current.tbl - --the current path - local currentPath = current.path - --the current object path - local currentObjPath = current.objpath - - --for every table that we have - for i, v in pairs(currentTbl) do - --if the value matches - if v == val then - --copy our values and store it in the collector - local newPath = flat_copy_table(currentPath) - local newObjPath = flat_copy_table(currentObjPath) - table.insert(newPath, i) - table.insert(newObjPath, v) - table.insert(collector, {table = currentTbl, index = i, tree = newPath, objtree = newObjPath}) - if immediate then - return collector - end - --otherwise, if its a traversable table we havent seen yet - elseif type(v) == "table" and not seen[v] then - --make sure we dont see it again - seen[v] = true - --and then place it on the top of the stack - local newPath = flat_copy_table(currentPath) - local newObjPath = flat_copy_table(currentObjPath) - table.insert(newPath, i) - table.insert(newObjPath, v) - table.insert(stack, {tbl = v, path = newPath, objpath = newObjPath}) - end - end - end - - return collector -end - ---Seatch for val as an index anywhere deep in tbl. Return a table of finds, or the first found if immediate is provided. -SMODS.deepfindbyindex = function(tbl, val, immediate) - local seen = {[tbl] = true} - local collector = {} - local stack = { {tbl = tbl, path = {}, objpath = {}} } - - --while there are any elements to traverse - while #stack > 0 do - --pull the top off of the stack and start traversing it (by default this will be the last element of the last traversed table found in pairs) - local current = table.remove(stack) - --the current table we wish to traverse - local currentTbl = current.tbl - --the current path - local currentPath = current.path - --the current object path - local currentObjPath = current.objpath - - --for every table that we have - for i, v in pairs(currentTbl) do - --if the value matches - if i == val then - --copy our values and store it in the collector - local newPath = flat_copy_table(currentPath) - local newObjPath = flat_copy_table(currentObjPath) - table.insert(newPath, i) - table.insert(newObjPath, v) - table.insert(collector, {table = currentTbl, index = i, tree = newPath, objtree = newObjPath}) - if immediate then - return collector - end - --otherwise, if its a traversable table we havent seen yet - elseif type(v) == "table" and not seen[v] then - --make sure we dont see it again - seen[v] = true - --and then place it on the top of the stack - local newPath = flat_copy_table(currentPath) - local newObjPath = flat_copy_table(currentObjPath) - table.insert(newPath, i) - table.insert(newObjPath, v) - table.insert(stack, {tbl = v, path = newPath, objpath = newObjPath}) - end - end - end - - return collector -end - --- this is for debugging -SMODS.debug_calculation = function() - G.contexts = {} - local cj = Card.calculate_joker - function Card:calculate_joker(context) - for k,v in pairs(context) do G.contexts[k] = (G.contexts[k] or 0) + 1 end - return cj(self, context) - end -end diff --git a/smods-old-calc/version.lua b/smods-old-calc/version.lua deleted file mode 100644 index 47a1eb7..0000000 --- a/smods-old-calc/version.lua +++ /dev/null @@ -1 +0,0 @@ -return "1.0.0~ALPHA-1304a-STEAMODDED"